Enum 값 및 필드명 수정, 한글 파일명 처리 개선

- Enum 값을 소문자로 변경 (material_missing, design_error, incoming_defect, complete)
- nonconformity_name -> description 필드명 변경
- completion_date -> actual_completion_date 필드명 변경
- Excel 다운로드 시 한글 파일명 URL 인코딩 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2025-11-08 09:40:34 +09:00
parent 58156da987
commit d1ed53cbd7

View File

@@ -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: