🐛 Fix: Project.name → project_name 속성명 수정 및 보고서 시스템 안정화

- backend/routers/reports.py: project.name을 project.project_name으로 수정 (3곳)
- 일일보고서 엑셀 내보내기 오류 해결
- 배포 가이드 업데이트 (DEPLOYMENT_GUIDE_20251028.md)
- 프로젝트 속성명 불일치로 인한 500 에러 해결

Fixes: 'Project' object has no attribute 'name' 오류
This commit is contained in:
Hyungi Ahn
2025-10-28 16:36:56 +09:00
parent 5aad973028
commit 58156da987
31 changed files with 1380 additions and 16 deletions

View File

@@ -6,7 +6,7 @@ from typing import List
from database.database import get_db
from database.models import Issue, User, ReviewStatus
from database.schemas import (
ManagementUpdateRequest, AdditionalInfoUpdateRequest, Issue as IssueSchema
ManagementUpdateRequest, AdditionalInfoUpdateRequest, Issue as IssueSchema, DailyReportStats
)
from routers.auth import get_current_user
from routers.page_permissions import check_page_access
@@ -172,3 +172,41 @@ async def get_additional_info(
"additional_info_updated_at": issue.additional_info_updated_at,
"additional_info_updated_by_id": issue.additional_info_updated_by_id
}
@router.get("/stats", response_model=DailyReportStats)
async def get_management_stats(
project_id: int,
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
"""
프로젝트별 관리함 통계 조회 (보고서용)
"""
# 관리함 페이지 권한 확인
if not check_page_access(current_user.id, 'issues_management', db):
raise HTTPException(status_code=403, detail="관리함 접근 권한이 없습니다.")
# 해당 프로젝트의 관리함 이슈들 조회
issues = db.query(Issue).filter(
Issue.project_id == project_id,
Issue.review_status.in_([ReviewStatus.in_progress, ReviewStatus.completed])
).all()
# 통계 계산
stats = DailyReportStats()
today = datetime.now().date()
for issue in issues:
stats.total_count += 1
if issue.review_status == ReviewStatus.in_progress:
stats.management_count += 1
# 지연 여부 확인
if issue.expected_completion_date and issue.expected_completion_date < today:
stats.delayed_count += 1
elif issue.review_status == ReviewStatus.completed:
stats.completed_count += 1
return stats