feat: 권한 탭 분리 + 부서 인원 표시 + 다수 시스템 개선

- tkuser: 권한 관리를 별도 탭으로 분리, 부서 클릭 시 소속 인원 목록 표시
- system1: 모바일 UI 개선, nginx 권한 보정, 신고 카테고리 타입 마이그레이션
- system2: 신고 상세/보고서 개선, 내 보고서 페이지 추가
- system3: 이슈 뷰/수신함/관리함 개선
- gateway: 포털 라우팅 수정
- user-management API: 부서별 권한 벌크 설정 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-02-23 14:12:57 +09:00
parent bf4000c4ae
commit 3cc29c03a8
37 changed files with 1751 additions and 233 deletions

View File

@@ -91,6 +91,7 @@ class IssueBase(BaseModel):
project_id: int
class IssueCreate(IssueBase):
location_info: Optional[str] = None # 공장/작업장 위치 정보
photo: Optional[str] = None # Base64 encoded image
photo2: Optional[str] = None
photo3: Optional[str] = None
@@ -112,6 +113,7 @@ class IssueUpdate(BaseModel):
class Issue(IssueBase):
id: int
location_info: Optional[str] = None
photo_path: Optional[str] = None
photo_path2: Optional[str] = None
photo_path3: Optional[str] = None
@@ -259,6 +261,7 @@ class InboxIssue(BaseModel):
id: int
category: IssueCategory
description: str
location_info: Optional[str] = None
photo_path: Optional[str] = None
photo_path2: Optional[str] = None
project_id: Optional[int] = None
@@ -300,6 +303,50 @@ class Project(ProjectBase):
class Config:
from_attributes = True
# DailyWork schemas
class DailyWorkBase(BaseModel):
date: datetime
worker_count: int = Field(gt=0)
overtime_workers: Optional[int] = 0
overtime_hours: Optional[float] = 0
class DailyWorkCreate(DailyWorkBase):
pass
class DailyWorkUpdate(BaseModel):
worker_count: Optional[int] = Field(None, gt=0)
overtime_workers: Optional[int] = None
overtime_hours: Optional[float] = None
class DailyWork(DailyWorkBase):
id: int
regular_hours: float
overtime_total: float
total_hours: float
created_by_id: int
created_by: User
created_at: datetime
class Config:
from_attributes = True
class ProjectDailyWorkBase(BaseModel):
date: datetime
project_id: int
hours: float
class ProjectDailyWorkCreate(ProjectDailyWorkBase):
pass
class ProjectDailyWork(ProjectDailyWorkBase):
id: int
created_by_id: int
created_at: datetime
project: Project
class Config:
from_attributes = True
# Report schemas
class ReportRequest(BaseModel):
start_date: datetime