feat: [worker] 절곡 작업일지 이미지 R2 presigned URL 전환 + 품질검사 3건 수정

절곡 작업일지:
- API bending_images 맵을 받아서 R2 presigned URL로 이미지 로드
- getBendingImageUrl()에 bendingImages 맵 조회 우선, API fallback 유지
- 4개 섹션(가이드레일, 하단마감재, 셔터박스, 연기차단재) 모두 적용

품질검사:
- 요약카드 draft 상태 접수 건수 포함
- 검사완료 버튼 미검사/진행중 시 disabled
- 완료 상태 수정 버튼 disabled(흐리게) + 편집 모드 진입 차단
This commit is contained in:
2026-03-20 23:13:45 +09:00
parent 1dcc20552e
commit 708743ca00
8 changed files with 63 additions and 15 deletions

View File

@@ -63,6 +63,7 @@ export function WorkLogModal({
const [isLoading, setIsLoading] = useState(false);
const [isSaving, setIsSaving] = useState(false);
const [error, setError] = useState<string | null>(null);
const [bendingImages, setBendingImages] = useState<Record<string, string>>({});
const contentWrapperRef = useRef<HTMLDivElement>(null);
// Lazy Snapshot 대상 문서 ID
const [snapshotDocumentId, setSnapshotDocumentId] = useState<number | null>(null);
@@ -129,6 +130,10 @@ export function WorkLogModal({
if (lotsResult.success) {
setMaterialLots(lotsResult.data);
}
// bending_images 맵 저장
if (workLogResult.success && workLogResult.data?.bending_images) {
setBendingImages(workLogResult.data.bending_images);
}
// Lazy Snapshot: 문서가 있고 rendered_html이 없으면 스냅샷 대상
if (workLogResult.success && workLogResult.data?.document) {
const doc = workLogResult.data.document as { id?: number; rendered_html?: string | null };
@@ -147,6 +152,7 @@ export function WorkLogModal({
// 모달 닫힐 때 상태 초기화
setOrder(null);
setMaterialLots([]);
setBendingImages({});
setSnapshotDocumentId(null);
setError(null);
}
@@ -250,7 +256,7 @@ export function WorkLogModal({
lotNoMap[lot.item_code] = lot.lot_no;
}
}
return <BendingWorkLogContent data={order} lotNoMap={lotNoMap} />;
return <BendingWorkLogContent data={order} lotNoMap={lotNoMap} bendingImages={bendingImages} />;
}
default:
return <WorkLogContent data={order} />;