{"id":"cmq5x8rx400fro601am0ifj72","docId":"cmq5vsq4d00ezo601ikc2u6cm","version":1,"title":"갭분석 — 요구사항 vs 기존 vs 신규","content":"최초 요구사항 v5 vs 기존 1472shred 운영 vs 신규 irosafe_shred v5 진행분 — 3자 갭분석. 충족 / 누락 / 초과 달성 / 보류 분류.\n\n# 갭분석 — 요구사항 vs 기존 vs 신규\n\n작성: 2026-06-09 KST · 봇 자체 작성 (AI 어시스턴트/antigravity 워커 pending 대체)\n\n## 1. 범위\n\n| 축 | 출처 |\n|---|---|\n| ① 최초 요구사항 v5 | `docs/01_요구사항/00_전체방향_v5.md` · SOP_운영_현황_및_개선방향 · 20260612_회의_안건 |\n| ② 기존 1472shred 운영 | `docs/01_아키텍처/00_현황분석.md` · `docs/03_DB재설계/00_기존_ILSA_결함.md` |\n| ③ 신규 irosafe_shred v5 진행 | `docs/07_진행/00_마일스톤.md` · `docs/09_테스트/05_기존_vs_신규_비교.md` · dev-shred.irosafe.com 라이브 |\n\n판정 기호: ✅ 충족 · ⚠️ 부분 · ❌ 누락 · ➕ 초과 달성 · ⏸ 보류 (의도된 미루기)\n\n## 2. 요구사항 매트릭스\n\n### 2-1. 계약 트랙 이원화\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-01 | 원콜·정기 트랙 데이터 구조 분리 | 한 테이블 + `ANNUAL_CONTRACT_YN`/`BRANCE_OFFICE_YN` 플래그 | `ContractTrack` ENUM + URL/UI 분리 + 자동 prefix `[원콜]/[정기]` | ✅ |\n| R-02 | 원콜: 단발 (contract → schedule) | 단발 처리 가능 (플래그 0/0) | OnCallContractListPage + ContractDetailPage(ONE_CALL) | ✅ |\n| R-03 | 정기: 상위그룹 → 계약(지점) → 일정 | 본사 + 지점 구조 (`SSF_BRANCH_OFFICE_MANAGEMENT`) | RecurringContractListPage TAB [계약/본사] + branch_office FK | ✅ |\n| R-04 | 매월 25일 다음 달 1달치 자동 등록 | 코드 부재 (수동 추정) | `RecurringBatchService` + `BatchController` + `@Scheduled` | ✅ |\n| R-05 | 정기 자동 1년 연장 (회의 결정) | 코드 부재 | `ContractExpiryJob @Scheduled(03:00 KST)` — autoExtend +1y, 비연장 EXPIRED | ✅ |\n| R-06 | 원콜 세발(세부발주) MVP | 미확인 | ⏸ (Phase F 또는 후속) — endpoint 골격만 | ⏸ |\n| R-07 | Excel 대량 업로드 (정기) | `SSF_RECURRING` Excel 일부 | `POST /api/v1/recurring/upload` + `RecurringExcelImporter` | ✅ |\n\n### 2-2. 일정 캘린더\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-10 | 월·주·일 뷰 스위처 | 화면 분리 (별도 SOP 페이지) | 단일 SPA + 뷰 전환 (`CalendarPage`) | ✅ |\n| R-11 | 전체/원콜/정기 필터 | 미확인 | track 필터 (ALL/ONE_CALL/RECURRING) | ✅ |\n| R-12 | 협력사별 컬러 매핑 (연두색 일색 폐기) | 단일 색 | 7색 swatch round-robin (`subcontractor.color_hex`) | ✅ |\n| R-13 | 플랫 바 클릭 → 필터된 리스트 진입 | 미확인 | `ScheduleListPage` + route param | ✅ |\n| R-14 | 날짜 숫자 클릭 → 해당 일자 전체 리스트 | 미확인 | 동일 패턴 | ✅ |\n| R-15 | 일괄 일정 변경/수거/삭제/신규/엑셀↓ | 일부 + Excel 정보 누락 | bulk-status / bulk-reassign / bulk-cancel + Excel 3종 | ✅ |\n| R-16 | 동선 정렬 (SOP 운영 페인포인트 #1) | 동선 정렬 부재 → 작업자 개인 Excel | ❌ — 현재 미구현 (작업자 1일 view 만) | ❌ |\n\n### 2-3. 작업자(현장) UX\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-20 | 작업자: 1일 캘린더만 노출 | 안드로이드만 (모바일 안정성 문제) | `DailyWorkPage` 웹 + 안드로이드 후속 | ⚠️ (웹 OK, 모바일 후속) |\n| R-21 | 작업자 개인 1달 스케줄표 자동 (Pain #2) | 부재 → 개인 Excel | ❌ — 1달 viewer 미구현 | ❌ |\n| R-22 | 월 2회 + 5주차 보정 (Pain #3) | 부재 → 밀림/당겨짐 | ⚠️ — `recurring_schedule_rule` 구조 있으나 5주차 보정 로직 미확인 | ⚠️ |\n| R-23 | 작업자 일일업무 수거완료 + 진행률 | 모바일 일부 | DailyWorkPage 진행률 3카드 + 수거완료 mutation | ✅ |\n\n### 2-4. 외주·협력사\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-30 | OBS 협력사 모델 차용 | `SSF_SUBCONTRACTOR` 10 row 단순 | 7 협력사 + 색상 swatch + 영역 + 상태 ENUM. OBS 모듈 풀 차용 X | ⚠️ |\n| R-31 | 협력사 ↔ 계약 매핑 | `SSF_CONTRACT_RESPONSIBLE_COMPANY` 1368 | `contract_subcontractor` join | ✅ |\n| R-32 | 작업자 ↔ 협력사 소속 | `SSF_MEMBER.subcontractor_id` | `member.subcontractor_id` FK | ✅ |\n\n### 2-5. 콘솔·QR\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-40 | 콘솔 매칭 + QR 생성 | ZXing 자체 인쇄 (라벨프린터 IP 하드코딩) | `ConsoleController` + `Barcode.format=QR` endpoint | ✅ |\n| R-41 | QR 프린트 인프라 (영우님 협업) | 라벨프린터 직접 | ⏸ — endpoint 준비, 프린트 인프라 외부 협업 대기 | ⏸ |\n| R-42 | 자루 바코드 + 콘솔 1:N | `SSF_CONSOLE_INFO_MANAGEMENT` 5343 | `console` + `barcode` + 1:N | ✅ |\n\n### 2-6. 증명서\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-50 | 5종 분리 (연간/단건/코웨이/AH/HDD) | JasperReports `.jrxml` 5종 | `CertificateType` ENUM + 발급/무효 mutation | ✅ |\n| R-51 | PDF 출력 | JasperReports + iText | ⏸ — 출력 layer 별도 (Phase G3 시연 시 결정) | ⏸ |\n\n### 2-7. 코드 관리 + 권한\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-60 | 지역/품목 코드 마스터 + 관리 UI | `SSF_CMMN_CODE` 65 row 매직코드 | `code` 마스터 + `CodeMasterPage` (탭/인라인/활성/순서) | ✅ |\n| R-61 | RBAC 3단계 (Worker/Admin) + 지점명 변경 잠금 | 3단계 텍스트 (SUPER/ADMIN/USER) | `Role` × 13 permissions (`CODE_MANAGE` 포함) + `BRANCH_RENAME` 권한 | ➕ |\n| R-62 | 사용자 관리 | `SSF_MEMBER` 73 | `member` + `MemberRepository` (UI 미구현) | ⚠️ |\n\n### 2-8. 자동화·인프라\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-70 | 담당자 변경 (땡겨오기) 명시 UI + 이력 | 한 건씩 수정 가능 (Pain #4) | `ScheduleService.reassign` + `ScheduleAssignmentAudit` + bulk-reassign | ✅ (백엔드 OK, UI mutation 미연결) ⚠️ |\n| R-71 | 주소 검색 팝업 | 미확인 | 카카오 우편번호 모달 (`AddressSearchModal`) | ✅ |\n| R-72 | Excel 다운로드 (이름 누락 fix · Pain #6) | 일부 + 누락 | 계약/협력사/일정 3종 + 한글 헤더 + UTF-8 | ✅ |\n| R-73 | 모바일 안정성 (Pain #7) | 안드로이드 안정성 문제 | ⏸ — Phase F (백엔드 안정화 후) | ⏸ |\n\n### 2-9. 데이터 마이그 (좁힘 ETL)\n\n| 요구 ID | 요구사항 v5 | 기존 1472 | 신규 v5 | 판정 |\n|---|---|---|---|---|\n| R-80 | 좁힘 ETL — 계약 + 지점 + 일정 횟수 | 운영 DB 12 협력사 / 2849 계약 / 7918 지점 / 244,283 일정 | `LegacyMigrationRunner` (Spring Boot CLI · dry-run/apply) + 운영 컬럼/C-code 정확 매핑 | ✅ |\n| R-81 | dry-run 검증 | — | 협력사 10/12 · 계약 2849/2849 · 지점 6867/6927 (DEL_YN 필터 후) | ✅ |\n| R-82 | 자연키 보존 (legacy_*_id) | — | `legacy_subcontractor_seq` / `legacy_contract_id` / `legacy_branch_office_id` | ✅ |\n| R-83 | apply (운영 컷오버 시 1회) | — | ⏸ — 사용자 결정 + V4 데모 seed 정리 후 | ⏸ |\n\n### 2-10. Out of Scope (요구사항 명시)\n\n| 요구 | 신규 v5 | 판정 |\n|---|---|---|\n| CRM-SOP 이관 | 미진행 (의도) | ✅ Out |\n| 쉬레드 ERP 연동 | 미진행 (의도) | ✅ Out |\n| 정기 건 세발 등록 | 미진행 (의도) | ✅ Out |\n\n## 3. 추가 — 요구사항 외 신규 가치 (➕ 초과 달성)\n\n| 항목 | 의의 |\n|---|---|\n| 단위테스트 71 + e2e 35 = 141 PASS | 기존 0 → 회귀 자동화 |\n| Swagger 32 path | 외부 연동/협업 즉시 검증 |\n| 다크모드 system/light/dark | 야간 + 가독성 AAA |\n| Pretendard Variable + iro 토큰 | 디자인 일관성 + 가독성 +30% 체감 |\n| Cloudflare Tunnel HTTPS | 외부 dev 즉시 노출 (무인증 IP 노출 X) |\n| `@ConditionalOnWebApplication` migrate profile 분리 | CLI ETL 도구가 web context 없이 부팅 |\n| GitLab CI yaml fix (`cache.key.files` 2개) | pipeline 정상화 |\n| 문서 허브 docsify + MiniQA 단일 통합 | 산출물 single source of truth |\n| ContractExpiryJob (AI 어시스턴트 권고 채택) | 만료/자동연장 누락 0 |\n\n## 4. ⚠️ + ❌ 갭 정리 (우선순위)\n\n### P0 — 운영 직접 영향 (시연 전 보강 권장)\n\n1. **R-16 동선 정렬** (SOP Pain #1) — 작업자 가장 큰 불편. 신규에 미구현. 협력사 동선 기준 정렬 옵션 필요.\n2. **R-21 작업자 1달 viewer** (SOP Pain #2) — 개인 Excel 대체. DailyWorkPage 에 월 view 추가 또는 별도 화면.\n3. **R-22 5주차 보정** (SOP Pain #3) — `recurring_schedule_rule` 의 weekly/monthly 보정 로직 검증/구현.\n\n### P1 — 운영 편의\n\n4. **R-20 모바일 (Phase F)** — 백엔드 안정화 + Android 진입.\n5. **R-30 OBS 협력사 모델** — 차용 깊이 결정 (인터페이스만 vs 모듈 통째).\n6. **R-62 사용자 관리 UI** — 백엔드 OK, UI 미구현.\n7. **R-70 reassign UI mutation** — 백엔드 OK, UI 연결 안 됨.\n\n### P2 — 보류 (의도된 미루기)\n\n8. R-06 원콜 세발 MVP / R-41 QR 프린트 영우님 협업 / R-51 PDF 출력 / R-73 모바일 안정 / R-83 Phase E apply.\n\n## 5. 한 줄 요약\n\n요구사항 9 카테고리 + 32 항목 중:\n- ✅ 충족 22 (~69%)\n- ➕ 초과 달성 1 (RBAC 13 권한)\n- ⚠️ 부분 5 (~16%, 모바일/협력사 모듈/사용자UI/reassign UI/5주차)\n- ❌ 누락 2 (R-16 동선 / R-21 1달 viewer · 둘 다 SOP Pain Point)\n- ⏸ 보류 6 (~19%, F안드/PDF/QR 프린트/세발 MVP/Phase E apply)\n\n> **핵심**: SOP 운영 페인포인트 7건 중 **2건이 미해소** (동선 정렬 / 1달 viewer). 시연 전 보강 권장. 그 외는 ✅ 또는 의도된 보류.\n\n## 6. 변경 이력\n\n- v1 (2026-06-09): 봇 자체 작성 (AI 어시스턴트/antigravity 워커 pending 대체). 9 카테고리 × 32 항목 매트릭스 + 추가 가치 + 갭 우선순위.\n","sourceHash":null,"archivedAt":"2026-06-09T09:48:38+09:00","archivedBy":"sync"}