feat: 중간 점검(체크포인트) 프론트 — 진행상태 토글·점검일 입력·보고

작성/수정 화면: 중간 점검일 여러 개 입력(추가/삭제, 편집 모드 로드).
상세 화면: 체크리스트 항목별 작업자 진행상태(미착수/진행중/완료) 토글(담당자) + 비담당자 배지,
중간 점검 카드(점검일 목록, 점검일~마감 구간 '보고 보내기', 보고 메모, 보고 이력 스냅샷).
타입/컴포저블/스토어/뷰모델 + 알림(task.checkpoint_reported) 렌더 연동.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 14:57:52 +09:00
parent 20664dab0f
commit 25ca63a925
8 changed files with 630 additions and 1 deletions
+33
View File
@@ -36,6 +36,9 @@ export const CHECKLIST_CATEGORIES: ChecklistCategory[] = [
'부가',
]
/** 작업자 진행 상태(자가보고) — 미착수/진행중/완료 */
export type ChecklistWorkStatus = 'todo' | 'doing' | 'done'
/** 체크리스트 항목 */
export interface ChecklistItem {
/** 항목 ID(API 연동 시) */
@@ -45,6 +48,30 @@ export interface ChecklistItem {
category: ChecklistCategory
/** 보완 내용(수정 요청 시 항목별 입력) — 없으면 null */
reviewNote?: string | null
/** 작업자 진행 상태(자가보고) */
workStatus?: ChecklistWorkStatus
}
/** 중간 점검일(표시용) */
export interface TaskCheckpointView {
id: string
/** ISO — 보고 가능 구간(점검일~마감) 계산용 */
checkAt: string
/** 표시 라벨 */
dateLabel: string
}
/** 중간 점검 보고(스냅샷, 표시용) */
export interface CheckpointReportView {
id: string
checkpointId: string
reporterName: string
note: string | null
items: { text: string; workStatus: ChecklistWorkStatus }[]
/** 점검일 표시 */
dateLabel: string
/** 보고 시각(상대) */
timeLabel: string
}
/** 프로젝트 — 작업의 기본 단위(우선) */
@@ -138,6 +165,8 @@ export interface TaskDetail {
issuer: User
dueLabel: string
dday: string
/** 원본 마감 ISO(중간 점검 보고 가능 구간 계산용) — 없으면 null */
dueAt: string | null
files: Attachment[]
/** 승인 요청 정보(승인 대기 상태일 때) */
approval?: {
@@ -148,6 +177,10 @@ export interface TaskDetail {
/** 수정 요청 메시지(수정 요청 상태일 때) */
changesNote?: string
issuedLabel: string
/** 중간 점검일 목록 */
checkpoints: TaskCheckpointView[]
/** 중간 점검 보고 이력(최신순) */
checkpointReports: CheckpointReportView[]
}
/** D-day 강조 단계 */