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
+29
View File
@@ -6,6 +6,7 @@ import type {
ApiProjectTaskListResult,
ApiTaskDetail,
ChecklistReviewItem,
ChecklistWorkStatus,
CreateTaskPayload,
TaskListQuery,
UpdateTaskPayload,
@@ -68,6 +69,32 @@ export function useTask() {
})) as unknown as ApiTaskDetail
}
/* ===================== 중간 점검(체크포인트) ===================== */
// 체크리스트 진행 상태 일괄 갱신(담당자)
async function updateWorkStatus(
projectId: string,
taskId: number,
items: { id: string; workStatus: ChecklistWorkStatus }[],
): Promise<ApiTaskDetail> {
return (await api.patch(`/projects/${projectId}/tasks/${taskId}/work-status`, {
items,
})) as unknown as ApiTaskDetail
}
// 중간 점검 보고(담당자) — 점검일~마감 구간
async function submitCheckpointReport(
projectId: string,
taskId: number,
checkpointId: string,
note?: string,
): Promise<ApiTaskDetail> {
return (await api.post(
`/projects/${projectId}/tasks/${taskId}/checkpoints/${checkpointId}/report`,
{ ...(note ? { note } : {}) },
)) as unknown as ApiTaskDetail
}
/* ===================== 댓글 / 답글 (5단계) ===================== */
async function addComment(
@@ -156,6 +183,8 @@ export function useTask() {
update,
remove,
changeStatus,
updateWorkStatus,
submitCheckpointReport,
addComment,
addReply,
uploadFile,