🐛 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

@@ -93,7 +93,33 @@ class CommonHeader {
url: '/reports.html',
pageName: 'reports',
color: 'text-red-600',
bgColor: 'bg-red-50 hover:bg-red-100'
bgColor: 'bg-red-50 hover:bg-red-100',
subMenus: [
{
id: 'reports_daily',
title: '일일보고서',
icon: 'fas fa-file-excel',
url: '/reports-daily.html',
pageName: 'reports_daily',
color: 'text-green-600'
},
{
id: 'reports_weekly',
title: '주간보고서',
icon: 'fas fa-calendar-week',
url: '/reports-weekly.html',
pageName: 'reports_weekly',
color: 'text-blue-600'
},
{
id: 'reports_monthly',
title: '월간보고서',
icon: 'fas fa-calendar-alt',
url: '/reports-monthly.html',
pageName: 'reports_monthly',
color: 'text-purple-600'
}
]
},
{
id: 'projects_manage',

View File

@@ -46,7 +46,8 @@ class PagePermissionManager {
try {
// API에서 사용자별 페이지 권한 가져오기
const response = await fetch(`/api/users/${this.currentUser.id}/page-permissions`, {
const apiUrl = window.API_BASE_URL || 'http://localhost:16080/api';
const response = await fetch(`${apiUrl}/users/${this.currentUser.id}/page-permissions`, {
headers: {
'Authorization': `Bearer ${localStorage.getItem('access_token')}`
}
@@ -198,7 +199,8 @@ class PagePermissionManager {
}
try {
const response = await fetch('/api/page-permissions/grant', {
const apiUrl = window.API_BASE_URL || 'http://localhost:16080/api';
const response = await fetch(`${apiUrl}/page-permissions/grant`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@@ -230,7 +232,8 @@ class PagePermissionManager {
*/
async getUserPagePermissions(userId) {
try {
const response = await fetch(`/api/users/${userId}/page-permissions`, {
const apiUrl = window.API_BASE_URL || 'http://localhost:16080/api';
const response = await fetch(`${apiUrl}/users/${userId}/page-permissions`, {
headers: {
'Authorization': `Bearer ${localStorage.getItem('access_token')}`
}