35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
from core.models import Task, ProgressReport
|
|
|
|
class SheetMapper:
|
|
@staticmethod
|
|
def map_rows_to_report(rows: list[list]) -> ProgressReport:
|
|
tasks = []
|
|
current_phase = "General"
|
|
|
|
for row in rows:
|
|
if not row or len(row) < 2:
|
|
continue
|
|
|
|
# Detect Phase row (e.g. Row 1: ['', 'Phase 1: ...'])
|
|
# Phase rows usually have few columns or column 2/3 is empty
|
|
if len(row) <= 2 or (len(row) > 2 and row[2] == ""):
|
|
if row[1] and "Phase" in row[1]:
|
|
current_phase = row[1].strip()
|
|
continue
|
|
|
|
# Detect Task row (e.g. Row 2: ['', '1.1', 'Task Name', ...])
|
|
if len(row) >= 10:
|
|
task = Task(
|
|
phase=current_phase,
|
|
task_id=row[1],
|
|
task_name=row[2],
|
|
assignee=row[3],
|
|
start_date=row[4],
|
|
end_date=row[5],
|
|
progress_val=row[8],
|
|
status=row[9]
|
|
)
|
|
tasks.append(task)
|
|
|
|
return ProgressReport(tasks=tasks)
|