diff --git a/backend/routers/reports.py b/backend/routers/reports.py index 69bc373..98410ac 100644 --- a/backend/routers/reports.py +++ b/backend/routers/reports.py @@ -53,15 +53,15 @@ async def generate_report_summary( for issue in issues: # 카테고리별 카운트 - if issue.category == IssueCategory.MATERIAL_MISSING: + if issue.category == IssueCategory.material_missing: category_stats.material_missing += 1 - elif issue.category == IssueCategory.DIMENSION_DEFECT: + elif issue.category == IssueCategory.design_error: category_stats.dimension_defect += 1 - elif issue.category == IssueCategory.INCOMING_DEFECT: + elif issue.category == IssueCategory.incoming_defect: category_stats.incoming_defect += 1 # 완료된 이슈 - if issue.status == IssueStatus.COMPLETE: + if issue.status == IssueStatus.complete: completed_issues += 1 if issue.work_hours > 0: total_resolution_time += issue.work_hours @@ -237,7 +237,7 @@ async def export_daily_report( ws.cell(row=current_row, column=1, value=issue.id) ws.cell(row=current_row, column=2, value=project.project_name) - ws.cell(row=current_row, column=3, value=issue.nonconformity_name or "") + ws.cell(row=current_row, column=3, value=issue.description or "") ws.cell(row=current_row, column=4, value=issue.detail_notes or "") ws.cell(row=current_row, column=5, value=get_category_text(issue.category)) ws.cell(row=current_row, column=6, value=issue.solution or "") @@ -246,7 +246,7 @@ async def export_daily_report( ws.cell(row=current_row, column=9, value=issue.expected_completion_date.strftime('%Y-%m-%d') if issue.expected_completion_date else "") ws.cell(row=current_row, column=10, value=get_status_text(issue.review_status)) ws.cell(row=current_row, column=11, value=issue.report_date.strftime('%Y-%m-%d') if issue.report_date else "") - ws.cell(row=current_row, column=12, value=issue.completion_date.strftime('%Y-%m-%d') if issue.completion_date else "") + ws.cell(row=current_row, column=12, value=issue.actual_completion_date.strftime('%Y-%m-%d') if issue.actual_completion_date else "") # 상태별 색상 적용 status_color = get_status_color(issue.review_status) @@ -282,10 +282,16 @@ async def export_daily_report( today = date.today().strftime('%Y%m%d') filename = f"{project.project_name}_일일보고서_{today}.xlsx" + # 한글 파일명을 위한 URL 인코딩 + from urllib.parse import quote + encoded_filename = quote(filename.encode('utf-8')) + return StreamingResponse( io.BytesIO(excel_buffer.read()), media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - headers={"Content-Disposition": f"attachment; filename={filename}"} + headers={ + "Content-Disposition": f"attachment; filename*=UTF-8''{encoded_filename}" + } ) def calculate_project_stats(issues: List[Issue]) -> schemas.DailyReportStats: