iVIGILANCE SQUARE — Agile 개발 로드맵
Goal. Main Stream (Happy Path) + Sub Stream 우선순위 진행으로 전체 기획 누락 없이 완성. 각 Phase는 단일 스프린트 안에 들어갈 수 있는 크기로 분할
개정 이력 (revisions)
- v1.22 (2026-05-28) — 사용자 요청에 따라 A 트랙(A1~A5)을 S 트랙보다 먼저 진행하도록 현재 로드맵 순서를 재조정. 사이드바 nav, §1 개요맵, §4 상세 섹션, §5 의존성 그래프, §10 핵심 결론에서 A → S 순서로 동기화.
- v1.21 (2026-05-28) — S2/S4 활성 범위 재정의: S2는 Mapping Rule(평가 결과 키워드→식약처 AE Type Related 자동 분류, 빈 행 SAVE 비활성화, 대소문자 무시) + PLAN-AH(C.2.r.4.KR.1 Regional Required Field 등록)만 활성으로 유지하고 Field Type 일반/Message Profile/Auto Narrative 등 나머지는 Release2로 명시. S4는 Amendment/Nullification 후속 생성 분기(C.1.5 상속) + Tracker FU 자동 생성([+] 버튼) 정책 정비만 활성으로 유지하고 XML Import/Data Hub/Import History/Logic A/Import Status는 Release2로 명시. A 트랙/S 트랙 순서 표기 잔여 충돌(§3.0 A 행, §5 그래프, §10 결론, Soft Launch 선결 표기)을 정리. M3b에서는 Study/PBRER/DSUR/PSUR 관련 설정을 제거하여 Release 1 Product Master 범위만 유지. Product/Study 설정 에픽 명칭은 Product 설정으로 정리. M6 검색 팝업은 MedDRA / WHODrug / NeDrug 3종으로 분리하여 관리.
- v1.20 (2026-05-27) — A 트랙(A1~A5)을 S 트랙 뒤로 재배치(사용자 요청 "오딧은 마지막"): phase-card·사이드바 nav·§1 개요맵 lane·우선순위 순서에서 A 블록을 S1~S4·S10 뒤로 이동. + 선결 프레이밍 완화: "A1·A4 = Soft Launch 선결 / A3 = GA 선결" 하드 의존성을 "감사·운영 자동화 트랙, S 트랙 이후 후순위 진행 가능(운영 가시성 필요 시 병행은 선택)"으로 완화. Soft Launch Gate 부제 "M12 + A1 + A4 직후" → "M12 직후", 정리식 "M12 + A1 + A4 완료" → "M12 완료". §5 의존성 그래프의 기술적 이벤트-카탈로그 의존(M→A1)은 유지. 참고: HTML §10 핵심결론 #1(22 Phase, 구버전)·§4.0/§3.0 A 트랙 노트 부재는 v1.14 이전부터의 HTML/MD 분기 — 본 작업 범위 외.
- v1.19 (2026-05-27) — Sub Stream(고도화 트랙) 정리: S5~S9·S11~S13 항목 전면 제거(상세 카드·사이드바·개요맵·우선순위표·조기착수표·의존성 그래프 노드·§6 기획미작성/외부의존 행), S2는 Auto Narrative 항목만 유지, S4는 Amendment/Nullification 상속·Tracker FU 자동생성 2개 항목만 유지(IMPORT 관련 내용 제거). Sub Stream 최종 구성 = S1·S2·S3·S4·S10. 우선순위표 Rank 1~8 재부여. 사용자 명시 요청 구조 재분류로 HTML 직접 편집 예외 처리(MD 동기). §6.1 정합성 미결표·§8 전수 매핑표·§10 핵심 결론 및 Main Stream 카드 내 인라인 S-의존 언급은 보존(타 Phase 혼재·원문 유지 대상).
- v1.12 (2026-05-18) — 백엔드 구현 완료 현황 반영 (complete_list.md, 커밋
bfd1b64e, dev 브랜치 기준)- Done 마킹 추가 (2건):
- M1 (Account & Login) —
ivi-api/auth.controller.ts에 login/logout/refresh-token rotation/activate/invitation-info/password-reset-request·info·confirm/resend-invitation/MFA send-code·verify-code/change-password 전부 구현.ivi-backoffice-api/backoffice-auth.controller.ts도 대응 엔드포인트 보유(MFA·change-password 제외 — backoffice 정책상 분리). 주의: 180일 만료 화면(LGN-44), 5회 실패 시 Locked, MFA 5회 초과 잠금 등 정책 enforcement는 컨트롤러 시그니처만으로 검증 불가 — Soft Launch Gate 전 별도 UAT 필요. - M6 (검색 팝업 인프라) — MedDRA 검색(
meddra.controller.ts: search-by-name/search-by-code/versions) + NeDrug/국내 의약품 검색(common-drug.controller.ts: GSRS suggest / product-tree / 의약품 검색) 백엔드 완료. WHODrug는 본디 S9 분리 항목이며 별도 완료(whodrug.controller.ts).
- M1 (Account & Login) —
- 부분 완료 (마킹 보류) — 컨트롤러는 존재하나 Phase DoD 미달:
- M0 — backoffice tenant/contract/workspace/app/file 컨트롤러 완비, contract cancel/correct/renew 구현. 미완: BOF-C-17 배치 자동 전이(SCHEDULED→ACTIVE / ACTIVE→EXPIRED), Safety DB 연간 사용량 초기화 배치 잡, Workspace 폐쇄 시 데이터 Main 병합·이관 완료 확인(
tenant.controller.ts:402TODO 잔존). - M2 — tenant-user(invite/role/activate/deactivate/restore), workspace(CRUD + apps + members), admin-license(MedDRA/WHODrug verify·set) 백엔드 완비. 미완: Home Navigation 3단 네비/위젯·세션 타이머·Soft Switch 등 프론트 UI 일체.
- M4 —
case-master.controller.ts목록·단건·생성·삭제 +manual-intake.controller.ts수동 입력 +case-master/:caseMasterId/r3-xmlexport 구현. 미완: Tracker 그리드 컬럼·필터, Manual FU [+] 3종 모달, Case ID 미설정 차단 팝업 UX. - M11b 부분 — ICSR R3 변환(
core/icsr/r3/) 양방향 매퍼와 R3-XML export 엔드포인트 완료. 미완: 배치 생성 엔진, MFDS AS2 게이트웨이 전송, KAERS/FAERS/SDTM/CIOMS 변환(현재 디렉토리 자체가 없음 — complete_list §5.1). - 알림(S6) —
notification.controller.ts에 SSE 스트림(/stream) + 미읽음 카운트 + 읽음 처리 구현.
- M0 — backoffice tenant/contract/workspace/app/file 컨트롤러 완비, contract cancel/correct/renew 구현. 미완: BOF-C-17 배치 자동 전이(SCHEDULED→ACTIVE / ACTIVE→EXPIRED), Safety DB 연간 사용량 초기화 배치 잡, Workspace 폐쇄 시 데이터 Main 병합·이관 완료 확인(
- 미구현 / TODO 명시 (complete_list §5):
- Audit Log 인프라(A1) 전체 — IS-1480 follow-up.
auth.service.tsL332·L575·L587·L803,tenant.service.tsL84,tenant-user.service.tsL272,backoffice tenant.service.tsL215 등 7개 지점에서 "Audit Log 인프라 준비 후 연동" 주석 상태. A1 Phase 본문과 정합. - ICSR 4개 포맷(KAERS / FAERS / SDTM / CIOMS PDF) — 디렉토리 자체 부재. CLAUDE.md
core/icsr/가이드는 5개 포맷 명시이나 실제는 R3만. - Study
arm.primary_license—study-detail.service.ts:1553TODO, 별도 엔티티/컬럼 설계 보류. - Backoffice change-password / MFA send·verify-code — ivi-api에는 있고 backoffice에는 부재 (정책상 분리일 수 있음, complete_list §5.5).
- Audit Log 인프라(A1) 전체 — IS-1480 follow-up.
- 참고: 본 v1.12 갱신은
complete_list.md(생성 2026-05-18, 커밋bfd1b64e, 컨트롤러 52개 = ivi-api 41 + ivi-backoffice-api 11) 기준 백엔드 컨트롤러 surface로만 검증. UX·정책 enforcement·테스트 커버리지는 별도 검증 필요.
- Done 마킹 추가 (2건):
- v1.11 (2026-05-18) — confluence 전수 파일 길이 스캔 후 §6(기획 미작성/본문 부족)에서 누락된 "껍데기" 문서 3건 추가
- 누락된 껍데기 식별 (3건): confluence/기획 문서 활성 76개 파일 길이/본문 스캔 결과, 본문이 사실상 비어 있어 §6(Planning needed)에 등재되어야 함에도 §8 매핑 표에만 들어가 있던 문서 3건 발견 —
01. SafetyDB/Configuration.md(198B, "Safety Admin과 동일한 화면" 한 줄),Configuration/Case ID (Safety Config).md(395B, "Org Admin 미러" 한 문장 + Org Admin 링크),Configuration/Sender (Safety Config).md(506B, "제약사 Read Only / CRO 다름" 두 문장 + Org Admin 링크). - §6 표 갱신: 위 3건을 "spec-by-reference(미러 참조만 존재)" 항목으로 추가 등재. M10 SafetyDB Configuration Phase 착수 전에 CRO 모드 동작(Sender Safety Config의 CRO 분기 사양)이 본문에 명세되어야 함.
- M10 본문 보강: 구현 항목 주석에 "본 Phase 참고 문서 3건은 v1.11 기준 spec-by-reference 상태로, CRO 모드 사양은 본문 미작성. M10 착수 전 CRO 분기 본문 작성 선행" 표기.
- §8 매핑 표 주석: #29/#30/#31에 (spec-by-reference, §6 등재) 표기 추가하여 §8 매핑은 유지하되 §6과의 cross-link 명시.
- 활성 PLAN 카운트 유지: PLAN 결함 정정 없음 — §6 분류 누락만 보정. 활성 33개 변동 없음.
- 검증 evidence:
find confluence/기획\ 문서 -type f -name "*.md" -not -path "*/.confluence-sync/*"결과 76개 활성 파일 길이 스캔 → 본문(frontmatter/제목/링크 제외) 600자 이하 문서 22건 중, §6 또는 §7에 등재되지 않은 것은 위 3건만 (나머지는 컨테이너/인덱스 §7 또는 기획 미작성 §6에 이미 등재).
- 누락된 껍데기 식별 (3건): confluence/기획 문서 활성 76개 파일 길이/본문 스캔 결과, 본문이 사실상 비어 있어 §6(Planning needed)에 등재되어야 함에도 §8 매핑 표에만 들어가 있던 문서 3건 발견 —
- v1.10 (2026-05-18) — confluence 전수 재확인(3회 교차검증) 후 v1.9 이후 신규 변경 1건 반영
- 검증 결과: v1.9 (2026-05-15) 이후 confluence/기획 문서 활성 76개 + trash 2개 전수 재정독 결과, v1.9에 미반영된 신규 변경은
01. SafetyDB/Case Audit Trail.md26.05.15 업데이트 1건으로 한정됨. 나머지 75개 활성 문서의 최신 변경이력은 2026-05-14 이전이며 모두 v1.9에 반영 완료(3회 cross-check: 변경이력 표 / 최신 일자 grep / 도메인별 본문 spot-check). - 신규 반영 (Case Audit Trail 26.05.15): 감사 로그 카테고리 표(Case Audit Trail.md
# Audit Log에 기록되어야 할 세부 액션 정의 > 카테고리)에 User Context > Comment 행이 정식 정의 — "사례 의견 | User Context | NEW, EDIT, DELETE | Comment | Comment | 해당 코멘트 입력 값 | 행위자 유저 이름" (비고란에 "추후 적용" 표기 없음). Workflow Action 카테고리만 "추후 적용" 잔존. - 본문 보강 (2건):
- - S1 구현 항목 — Category 분류 표기를 "Case / Workflow Action(추후) / User Context(추후)" → "Case / User Context (Comment 정의 완료, 26.05.15) / Workflow Action(추후)"로 정정. 사례 의견(Case Comment)의 NEW/EDIT/DELETE 추적을 Performer=행위자 유저, Element=Comment, Value=해당 코멘트 입력값으로 기록하는 항목 명시 (M9 채팅형 코멘트(타임라인)와의 저장 경계는 D-5 결정 결과와 정합 — Workflow Chat은 Workflow 타임라인, 케이스 의견(User Context Comment)은 Case Audit Trail)
- - M9 구현 항목 — 채팅형 코멘트 입력 시 Case Audit Trail Category=User Context, Classification=Comment, Action=NEW/EDIT/DELETE 행을 자동 기록하도록 M7c 훅에서 처리 명시 (실제 조회/Export UI는 S1).
- PLAN-AE 범위 축소: 기존 "Audit Trail Category 'Workflow Action'·'User Context' 착수 Phase 배치" → "Workflow Action" 카테고리만 미결 유지 (User Context Comment는 26.05.15 정의로 S1 본 Phase 범위 확정). M9 vs S1 결정 항목도 Workflow Action에 한정.
- 활성 PLAN 카운트 유지: PLAN-AE는 범위 축소되었으나 활성 상태 유지 → 활성 33개(A~Z + AA~AH, Y 종결 제외) 변동 없음.
- 3회 교차검증 evidence: (1차)
grep -rln "26\.05\.1[5-9]\|26\.05\.2" confluence/기획\ 문서/ --include="*.md"→ 1건 (Case Audit Trail.md). (2차) 변경이력 표 frontmatter 직속 행 spot-check 8개 핵심 문서 (Submission/Tracker/중복 로직/Account/Audit Log/Case ID/Products/Org Admin App Admin) → 모두 26.05.14 이하. (3차) Case Audit Trail.md 본문 diff — User Context Comment 행이 "추후 적용" 마커 없이 정의되어 활성 범위 확정 확인.
- 검증 결과: v1.9 (2026-05-15) 이후 confluence/기획 문서 활성 76개 + trash 2개 전수 재정독 결과, v1.9에 미반영된 신규 변경은
- v1.9 (2026-05-15) — 4-Agent 도메인 병렬 전수 재정독(Common/Intake/Case Edit/Rule&Logic+Tabulator+Sync) 후 6차 보강 (~60건)
- 사실관계 정정 (9건): (a) M1 — Account 26.05.14 변경(LGN-44 '나중에 변경 5회 유예' 삭제, LGN-45→LGN-44 번호 재부여) 반영 → "유예 카운트 서버 저장" 폐기, 만료 시 즉시 강제 변경 (b) M1 — MFA 정합 3건: 5회 초과 잠금 메시지 위치 MFA 화면→로그인 화면, LGN-27(MFA 코드 만료 in-place) 삭제, MFA 인증 시간 제한 10분(LGN-28) 신설 (c) M1 — 비밀번호 복잡도 "4종 모두 포함" → "3종류 이상 조합(영대/소문자/숫자/특수문자)" + 연속 4자 금지 (d) A1 — Audit Log doc 강제 로그아웃 트리거 26.05.14 개정 반영: "MFA 인증 시간 제한 초과" 추가, "유예 카운트 사용" 이벤트 행 삭제 (e) M2 — Org Admin 잠금 해제 서술에 Backoffice 직권 해제(BOF-U-07) 경로 명시 (f) M9 PLAN-O — Workflow.md 내부 모순(3.2.4 진입 시 Lock vs 4.5 Approved 완료 시 Lock) 추가 표기 (g) S7 — Dashboard.md DR-S-AE-02 본문 "세그먼트 5종" 표기 오류(실제 7개 나열) 기획서 정정 Gate 추가 (h) M7a — Reporter.md §4.2 표 "Reporter's City" 오기는 C.2.r.4(Qualification) 지칭 주석 (i) M5b — Source k(국외 출처불명 파트너사)의 SAE/ADR/AE 정기보고 기준일 기획서 명시 부재 → PLAN-AC로 격상
- 누락 반영 (Common 17건): (i) M0 — Backoffice 계정 정책(복잡도만 적용, 180일 만료·재설정 미지원, Backoffice 기획 §8.3), Terminated Org에서 Backoffice Admin도 운영 데이터 접근 차단(계약 정보·Org 기본 정보만 조회), Safety DB 이니셜 케이스 사용량 1년 주기 초기화 배치(Backoffice §11.1), BOF-T-03 기준 정보 범위는 Workspace 생성 후 고객사 Admin이 후속 설정, 추가 Workspace 폐쇄 시 데이터 Main Workspace 병합(Backoffice §2.7), Backoffice MFA 변경 시 다음 로그인부터 적용(BOF-BAC-08) (ii) M1 — 비밀번호 재설정 30초 쿨다운(PWD-06/PWD-07) DoD 검증 추가 (iii) M2 — 디폴트 앱 우선순위 Safety DB>LITUS>TUBE>SYNC, Viewer의 Org 홈 사이드바 관리자 메뉴 접근 허용, Master Admin 최소 1명 유지 제약(LMT-MA-1, 비활성화 차단), 라이선스관리 메뉴 고라이브 명시(TA-LIC-01~09) (iv) M3a — Year+Month 조합 26.04.17 삭제 명시 (v) S2 — Mapping Rule 빈 행 SAVE 비활성화 + 대소문자 구분 없음 (vi) S6 — "보고 시작" 이벤트 세션 60분 타이머 초기화 트리거 명시(PLAN-R 해소 범위 편입) (vii) 공지사항 고도화(Release2) — 최초 저장 시 기본 노출 상태 (viii) A5 — 최종 발송 실패 시 Backoffice Admin 인앱 알림 추가 (감사 로그 외)
- 누락 반영 (Intake 9건): (i) M5c — 중복 매칭 시 매칭 필드 비교 표시 UI(중복 로직.md 와이어프레임 #2), 신규 케이스 생성 Toast + Case Edit 바로가기 버튼(와이어프레임 #3) (ii) M4 — Manual Intake 인과성 [필수]/[선택] 충돌(PLAN-AB), Tracker.md 2.2절 'Assignee'→'Owner' 정정, Tracker 필터 'Close' vs Workflow 'Complete' 용어 정합(PLAN-AF), Reporting Criteria 3종 옵션(Related/Unknown/Not Related) 명시, Manual FU [+] 3종 유형 모달(PLAN-AD) (iii) M9 — RA Triage 완료 이벤트 → Submission Status Draft 전환 트리거 구현 명시 (iv) M11a — Draft 선택 시 'Validated만 보기' 체크박스 필터 활성화(is_validated boolean) (v) S4 — EC-01(유효 케이스 0건)/EC-02(동일 파일 중복) 결정, 배치 레벨 AE/AR 오류 신규 배치 생성(IS-1679, 고도화) (vi) S7 — Tenant/Workspace/App 레벨 GNB Dashboard 메뉴 진입점 구현, Dashboard.md 'Tenant Admin' 역할명 정합 Gate
- 누락 반영 (Case Edit 14건): (i) M7a — Awareness date 자체 필드(Identification §2.1 L35), C.1.11.1 자동 처리 로직(FU 시 Amendment=2/Nullification=1/Follow-up=빈값), C.1.11.2 다국어 부가 입력, C.1.6.1 자동 True 처리(하위 값 존재 시), Report FU No from previous sender(L49), Type of Report Link + C.1.10.r 조건부 필수(L50~51), Reporter Sender 정보 불러오기 버튼(Reporter §3.1 L88~107, ICSR Config Sender 연동), Close 버튼 동작(변경 없으면 즉시 종료/있으면 §4.6 경고), FU 드롭다운 이탈 시 미저장 경고, Assessment 섹션 단위 저장 정책 명시 (ii) M7b — Drug 시퀀스 내 탭 이동 미저장 경고 미발생/섹션 이탈 시 경고, G.k.4.r.3 특수 단위({cyclical}/{asnecessary}/{total}) 시 G.k.4.r.2 공란, G.k.4.r.4/5 미래 일자 차단, [Release 2 예정] G.k.2.5 Blinded 처리(S5 의존) 표기 (iii) M7c — E.i.3.2c Hospitalization Start≤End 역전 불가 + 최소 Day 단위 필수 (iv) M8 — H.3.r.1b MedDRA 코드 → LLT+SOC+PT Term 삼원 자동 표시(현재 PT 누락) (v) S3 — E.i.7=5 트리거에 의한 D.9 활성화 검증 시나리오 DoD
- 누락 반영 (Rule&Logic 8건): (i) M5b — 인과성 판정 코드값 명시(KRCT=1 Related, WHO-UMC=1/2/3/5/6, 자체평가=Related — AE Type 분류.md L37~42) (ii) M5c — Amendment/Nullification 선택 시 C.1.5 이전 케이스 값 자동 상속(후속보고 순번.md L99~105) (iii) S8 — 분석 유형 선택 UI에 "(향후) DSUR" 표기, S11로 위임 / 단독 판매 모드 유지하되 패키지 가능(회의록 §5.1, S8 Gate 정합)
- 새 PLAN 후보 (PLAN-AA~AH, 8건): AA(Logic B Manual 시나리오 2 C.1.8.1 입력 있을 때 처리 — M5c/M4 차단), AB(Manual Intake 인과성 KRCT/WHO-UMC [필수] vs [선택] 충돌 — M4), AC(Source 'k' SAE/ADR/AE 정기보고 기준일 결정 — M5b), AD(Manual FU 3종 유형 모달 Main Stream 지원 범위 — M4/S4), AE(Audit Trail Category 'Workflow Action'·'User Context' 착수 Phase — M9 vs S1), AF(Tracker 필터 'Close' vs Workflow 'Complete' 용어 정합 — M4/PLAN-K 연계), AG(UM-50 '진행중 케이스 Owner/Assignee 시 비활성화 불가'의 Backoffice 적용 여부 — M1/M4), AH(C.2.r.4.KR.1 Regional Required Field 분류 — S2)
- 기존 PLAN 범위 확장 (6건): PLAN-E(개인정보 처리방침 §3 감사 로그 D+60 vs Backoffice 로그 계속 보관 정합 추가), PLAN-J(케이스 상태.md 자체 내부 표 L28~32 vs 텍스트 L67~73 5번째 단계 불일치 'Triage' vs 'Case Creation' 명시), PLAN-L(Source Case 저장 정책: Source 비활성 시 Case 섹션 저장 동작 명시), PLAN-M(Drug 2 G.k.2.3.r.2a/b WHODrug TermID 의존 처리 — Medical History/Parent와 동일 패턴), PLAN-O(Workflow.md 3.2.4 진입 시 Lock vs 4.5 Approved 완료 시 Lock 내부 모순 포함), PLAN-W(국내 강제/국외 선택 상속 토글 v1 범위 명확화 + EDQM Dose Form/Route ID↔Term 매핑 조회 방식과 정합)
- 재분류 (4건): A5 의존성 그래프에 "M0과 병렬 가능 vs 순차" 명시 + M0 DoD에 SMTP 계정·템플릿 사전 확보 조건 추가 / PLAN-Q SES-04 다중 기기 세션 제어 M1 Gate에 v1 포함 여부 결정 항목 편입 / M2 App Admin 메뉴 시점별 활성화 조건 명시(기준정보조회=M3b 완료 후, ICSR설정조회=M3a 완료 후, Audit Log=A2 완료 후) / A2 역할별 조회 권한 매트릭스 명시(AUD-15 App User는 App Activity Log 가능, Audit Log 불가)
- 활성 카운트: PLAN-Y 종결 유지, 신규 8건(AA~AH) 추가로 활성 33개(A~Z + AA~AH, Y 제외) — v1.8까지의 활성 24개(A~X) + Z 1개 + 신규 AA~AH 8개 = 33개. (v1.9 정정 1차 검증 결과 PLAN-Z 누락 + PLAN-AH 본문 vs frontmatter 불일치를 보정)
- v1.9 6차 검증 정정 (3-Agent 사실관계/추가누락/정합성 후속, 13건):
- - 사실관계 정확화: M1 LGN-27 표현 "삭제" → "내용 재정의" (코드 번호 자체는 존속, MFA in-place 메시지 정의를 로그인 화면 잠금 안내로 대체)
- - 정합성 결함 정정: (a) 활성 PLAN 카운트 31→33(PLAN-Z 누락 + PLAN-AH 추가 반영) (b) PLAN-AH frontmatter 목록·섹션 6.1 표 동기화 (c) M9 DoD/Acceptance Criteria의 PLAN-O 단정 표기를 조건부로 정정 (d) 섹션 5 의존성 그래프에 A5 노드 추가(M0 병렬 가능 명시) (e) 섹션 8 #64 Drug/2.md에 PLAN-M 확장 표기 (f) 섹션 10 항7 v1.7 시점 PLAN 명시(A~X) 정정
- - 추가 누락 반영 (7건): S6 — NTF-04 일괄 읽음 확인 팝업, Owner 케이스 상태 변경 알림(Notification 기획 §1.6 Workflow 카테고리), "Safety DB 사이드바 메뉴 이동시" 세션 60분 타이머 초기화 트리거 / A5 — 계약 정정(CORRECT) 이메일 미발송 규칙(§1.1.8.2), 최초 계약 MA 미지정 시 조건부 수신 대상(§1.1.8.2), 종료 사전 알림 Org 전체 vs Workspace/App 개별 템플릿 분기(§1.1.8.1), 계약 상세 화면 액션 버튼 노출 조건 매트릭스(§1.1.10, Contract 5-상태별)
- v1.1 (2026-05-12) — 1차 검토 보강 8건 반영
- v1.2 (2026-05-12) — 2차/3차 검증 후 정정 3건 (M11 N.1.5만 세팅, PLAN-E/F 추가)
- v1.3 (2026-05-13) — Phase 실행 계약, 최소 Validation Slice, Soft Launch / GA Gate 분리
- v1.4 (2026-05-14) — Activity/Audit Log 독립 트랙(A0) 신설, M1은 Account & Login으로 축소
- v1.5 (2026-05-14) — 일정 산정 제거 (Sprint 번호, 리드타임, Decision Due)
- v1.6 (2026-05-14) — A 트랙 4분할 + Main Stream Phase 적정 크기 재조정 + 역할별 작업일 산정 제거
- v1.8 (2026-05-14) — v1.7 적용 후 3-Agent 독립 검증(사실관계/추가누락/정합성)에서 발견된 16건 결함 정정 (5차 보강)
- 사실관계 정정 (검증 1): Manual Intake L536/537 KRCT/WHO-UMC 용도 설명 교환 오류 정정 — KRCT는 "국내외 임상/치료목적 사용승인 건", WHO-UMC는 "자발보고 및 시판 후 조사 건"
- 내부 정합성 정정 (검증 3): (a) 핵심 결론 "21개" → "활성 24개"(A~Y 25자에서 PLAN-Y 완료 제외) (b) 섹션 3.0 공통 매트릭스 M7b "탭 일괄 저장" → "Drug 시퀀스 일괄 저장" (c) M7b DoD "Drug 1~4 탭이 각각 일괄 저장" → "Drug 시퀀스(의약품 1건) 단위로 일괄 저장" (d) M5b 목표 문구 "AE Type 6종" → "AE Type 6종 결과값 / 보고 기한 7개 경로(SUSAR 2분기 포함)" (e) 의존성 그래프에 M5b→M8 직접 화살표 추가 (f) M9 PLAN-O 미결과 본문 충돌 — M9 Lock 시점 서술을 "PLAN-O 결정 후 단일 기준 확정"으로 정정 (g) Source.md S5 매핑 vs PLAN-L 충돌 — 섹션 8 #55 매핑을 "S5(Study Information) + PLAN-L(Literature R1)" 분리 표기
- 추가 누락 반영 (검증 2): (a) M0 — Contract 5-상태 머신(SCHEDULED/ACTIVE/SUPERSEDED/EXPIRED/CANCELLED) + BOF-C-17 배치 자동 전이 + BOF-C-18 취소, Org 이름 20자 한도 + 시스템 전체 유니크(BOF-T-06), Workspace 이름 동일 Org 내 유니크(BOF-T-03), 계약 체결 안내 이메일 트리거(BOF-C-01) (b) 신규 Phase A5(계약 알림 시스템) — D-90/30/7/1 자동 이메일 배치, 1시간 간격 3회 재시도, NEW/RENEW/재계약 안내, 복원 사후 통지, Backoffice Operator 수신 대상(BOF-AL-06) (c) M1 — Backoffice 측 잠금 해제(BOF-U-07) 분리 명시: 고객 측은 본인 비밀번호 재설정 / Backoffice Admin·Operator는 직접 해제(A4와 연계) (d) M2 — 브라우저 탭 타이틀 정책 3종, 프로필 드롭다운 Version 항목, My Profile 모달 Profile/Password 탭 2곳 각각 개인정보 처리방침 링크(별도 모달) (e) S6 — 알림 야간 배치 시간대(Due Date 3일 전 매일 00:00~01:00 발송) + "보고 시작" 이벤트 + Gate 진입 조건에 Notification doc 1.4 사이드바→헤더 정합 작업 (f) S10a — "수동 운영 채널 지원, 시스템 자동화 아님" 명시(C-2 모순 해소) (g) 공지사항/사용량 고도화(Release2) — Backoffice 측 공지사항 관리 화면 추가(BOF-BAC), TA-NTC-01~04 + TA-USG-01 코드 명시 (h) A4 — BOF-U-07 enforcement (Backoffice 측 직접 잠금 해제) 추가
- 새 미결 PLAN-Z 추가: A5 계약 알림 시스템과 M0의 Phase 경계 결정 (M0 확장 vs 별도 Phase). PLAN-Y(Drug 시퀀스 단위 정합 완료)는 v1.7에서 닫혔으나 매트릭스/DoD 잔존 2건 정정으로 진정 종결
- v1.7 (2026-05-14) — 컨플루언스 전수 4-Agent 병렬 정독 후 ~180건 갭 반영 (4차 보강)
- 파일 수 정정: "78개 전수" → 활성 76개 + trash 2개(
Submission/Submission List.md,Submission/Submitting Monitoring.md는 2026-05-14 trash 이동, SSoT는Submission.md) - 사실관계 정정: AE Type "6종" → SUSAR 2분기(사망/치명적 7CD vs 기타 15CD) 포함 표기, Import 파이프라인 명칭 충돌(케이스 상태 vs Import History 5단계) 명시
- Phase 구현 항목 보강: M3a(Case ID Import 옵션 A/B + 만료 임박 팝업 + 최후번호 검증 + Sender Tenant 1개 마스터), M3b(IBD/DIBD/PSUR Group/Brand Information/Biologic 등 미반영 필드), M5b(보고 출처 Unclassifiable, SADR b/c/i 보고 제외, 정기보고 기준일 3종), M5c(FU No 표시 Tracker 규칙, C.1.5 비교 YYYYMM, Related Case ID 반환), M4(Tracker 추가 컬럼 8종, Owner vs Assignee 구분, 우클릭 FU, Case ID Config 미설정 차단 팝업, 의약품 코딩 PhPID L1~L4), M7a(동시 편집 Read-only, Delete 사유 모달, 섹션 단위 Save, 외부 검증룰 Excel 의존, C.1.6.1/C.1.9.1/C.1.10 필드, Reporter 주소 1+ 필수, C.2.r.4.KR.1), M7b(Drug 시퀀스 일괄 저장, Frequency 17종, nullFlavor, G.k.6 Patient 임신 연동, D.2 XML 우선순위), M7c(Event Special Situation 16종, Severity/CTCAE, E.i.1.1a/b/9, E.i.3.2c→Death 트리거), M8(Intake→Assessment 자동 행, G.k.9.i.3.1a/b 분리 계산, MFDS Method 3단계 우선순위, G.k.9.i.4 재투여, H.2 Reporter's Comments), M9(타임라인 저장 이력 기록 + App User 전원 접근 + 담당자 미지정 차단), M11a(Periodic 탭 필터, RA Validation 정의), M11b(N.1.1~N.1.4 메타, 영업일=8시간/공휴일 제외), M12(ACK Comment 툴팁, 배치 Fail CA/CR 분기, On-Time/Late 재판정), S1(4-Level Category + User/System 분리 + 1년 디폴트 + Report Type Level 2), S3(Death D.9.1→D.9.3, Test 삼원 검증, Medical History D.7.3 자동, Parent Continuing→End Date 비활성), S4(Import Summary Card 4종, Task 30건 한도, In-File Order 정의), S5(Period 5개 한도, N.2.r.3 Receiver, Study Close→Intake 차단, Treatment 중복 동기화, Other Studies Type C.5.4.KR.1), S6(인앱 100건 한도, 탭 동기화 NTF-09, 권한 변경 안내), S7(1시간 배치 갱신, PDF/EXCEL Export, Workspace Breakdown, 필터 다중 한도, Audit 기록), S8(Library 저장, Read me vs 업로드 비교, MedDRA Non-Current 재코딩 인라인, 2/3단계 순서 미결), Soft Launch Gate(180일 PWD 만료 + My Profile 약관 링크 + Workspace 단위 D+60), A1(라이선스 자동 체크 → Org Audit Log + 관리자 잠금 해제 항목 정리), A2(고객 화면 Workspace/App 컬럼 미노출, 페이지당 30건), A3(App/Workspace 단위 D+60, 1년 초과 별도 채널), A4(Backoffice의 고객 Log Export 행위도 이벤트 카탈로그)
- 새 미결 (PLAN-G ~ PLAN-O 추가): G(Workspace 홈/공지사항 고도화 Phase 배치), H(MFA 단일 Org vs 멀티 Org 분기), I(N.2.r.3 Study Receiver vs M11a Receiver 코드 연계), J(Import 파이프라인 5단계 명칭 통일 — 케이스 상태 vs Import History), K(Close/Archived 케이스 상태 구현 Phase), L(Source 섹션 Literature 필드 R1 트랙 부재), M(WHODrug 의존 필드 — Medical History/Parent D.8.r를 S3 착수 시 처리 방향), N(알림 위치 — 사이드바 vs 헤더 문서 충돌), O(Lock 시점 — Workflow Approval In Progress vs Case Edit Approved 이후)
- 파일 수 정정: "78개 전수" → 활성 76개 + trash 2개(
0. 이 문서의 목적#
confluence/기획 문서 전체(활성 76개 + trash 2개 = 누적 78개 페이지)를 전수 분석하여 다음을 결정한다.
파일 카운트 정정 (v1.7): 2026-05-14 기준 활성.md파일은 76개이다.Submission/Submission List.md와Submission/Submitting Monitoring.md는 동일 일자에.confluence-sync/trash/2026-05-14T09-26-39-291Z/로 이동되었고 SSoT는Submission.md로 통합되었다. v1.6까지 "78개 전수"로 표기한 부분은 v1.7부터 활성 76개 + trash 2개로 분리 기록한다. 섹션 8 매핑 표는 누락 방지를 위해 78개 항목을 모두 보존하되 trash 2건은 별도 표기한다.
- Main Stream (Happy Path) — ICSR 케이스 1건이 시스템 진입 → 입력/평가 → 당국 제출까지 도달하는 최소 흐름. 이 흐름을 가장 먼저, 끊김 없이 완성한다.
- Sub Stream — Main Stream 외 기획. 우선순위와 의존성에 따라 처리한다.
- 참조 매핑 — 각 개발 단위가 어떤 기획서를 참고하는지 100% 매핑한다.
완료 조건: Main Stream + 모든 Sub Stream 완료 시 활성 76개 문서 중 실질 기획이 존재하는 문서는 모두 구현 완료, 기획 미착수 문서는 별도 표(섹션 6)에서 기획 선행 작업으로 트래킹.
이 문서의 범위: Phase 단위 기획 범위·의존성·게이트·검증 기준만 다룬다. 실제 책임자(DRI), 역할별 작업일, 캘린더 배치는 본 문서에서 다루지 않으며 별도 프로젝트 실행 계획에서 산정한다.
1. 한눈에 보는 개발 흐름#
2. 기본 원칙 & 제약 (모든 스트림에 공통 적용)#
- 각 Phase는 기술적으로 독립 배포 가능해야 한다. 단, 이는
main병합/배포 가능성을 뜻하며, 고객 노출/운영 사용 가능성을 뜻하지 않는다. 의존성이 미해결되면 Phase 시작 자체가 불가하다 (의존성 표 참조). - 각 Phase는 단일 스프린트(2주 가정) 안에 들어갈 수 있는 크기로 분할되어야 한다. 본 v1.6에서 큰 Phase(M3·M4·M7·M11·A0)는 모두 sub-phase로 분할되었다.
- 기획 미작성 문서는 개발 착수 전에 기획 작성이 선행되어야 한다. 섹션 6 표 참조.
- 빈 인덱스/컨테이너 문서는 별도 배치 없이 부모 노드로만 처리한다. 섹션 7 표 참조.
- 외부 의존성 (MedDRA/NeDrug/WHODrug DB 라이선스, GSRS/MFDS 성분코드/EDQM/UCUM 코드, MFDS AS2 게이트웨이 계정, 공휴일 마스터 데이터)은 해당 Phase 착수 전 확보되어야 한다.
- 공통 정책 변경은 모든 스트림에 영향을 주므로 M0–M2에서 데이터 모델/권한 매트릭스를 확정한 뒤 동결한다.
2.1 Phase 실행 계약#
각 Main/Sub Phase는 구현 착수 전에 아래 메타데이터를 채워야 한다.
| 항목 | 정의 | 완료 전 필수 여부 |
|---|---|---|
| Release Mode | Internal only / Feature-flagged / Pilot enabled / GA eligible 중 하나 | 필수 |
| Acceptance Criteria | 사용자/시스템 관점의 검증 가능한 완료 조건. DoD보다 세분화 | 필수 |
| Verification | Unit / Integration / E2E / Manual UAT / External Sandbox / Security Review 중 해당 항목 | 필수 |
| Gate | 착수 전 결정, 외부 계정, 문서 정합성, 계약, 법무 승인 등 차단 조건 | 필수 |
| Observability | 로그, 감사 원장, 운영 지표, 알림, runbook 중 필요한 항목 | M11/M12/GA 필수, 나머지는 위험도 기반 |
| Rollback / Recovery | 잘못된 배포, 실패 상태, 수동 복구, 재시도 정책 | 상태 전이가 있는 Phase 필수 |
2.2 Release Mode 정의#
| Release Mode | 의미 | 예시 |
|---|---|---|
| Internal only | 배포는 가능하지만 고객 노출 없음. 내부 테스트/데이터 seed만 허용 | M0 데이터 모델, M5a/b/c Rule 엔진 |
| Feature-flagged | 운영 환경에 배포 가능하나 특정 Org/역할/플래그 뒤에 숨김 | M4 Tracker, M10 Mirror |
| Pilot enabled | 제한 고객/제한 케이스에서 업무 사용 가능 | M12 완료 후 Soft Launch |
| GA eligible | 보안/법무/운영/규제 게이트 통과 후 일반 고객 사용 가능 | GA Gate 통과 후 |
2.3 Main Stream 선정 기준#
Main Stream은 "가장 작은 출시 단위"가 아니라 "규제 보고 제품으로서 신뢰 가능한 최소 업무 폐쇄 루프"다.
포함 기준
- 국내 자발보고 / 시판후 / 수동 Intake / MFDS 신속보고 / ACK 수신까지 끊기지 않는 경로.
- 고객사 1곳이 제한된 케이스 범위에서 실제 업무 UAT를 수행할 수 있는 기능.
- 제출 실패 시 감사 증적과 복구 경로를 남길 수 있는 최소 운영 기능.
제외 기준
- 임상시험/Study, 국외/다국가, WHODrug, XML 대량 Import, Dashboard, Sync, AI는 첫 고객 업무 폐쇄 루프를 막지 않으므로 Release2 / Deferred Backlog로 분리한다.
- 단, Main Stream의 MFDS 제출 신뢰성에 필요한 최소 Validation은 S2 전체와 별개로 M11 이전에 포함한다.
2.4 Main Stream 최소 Validation Slice#
S2 활성 범위는 Mapping Rule + PLAN-AH로 축소되었다. 국가별 Message Profile / Partner Exchange / Auto Narrative 등 확장 Validation은 Release2로 분리한다. 단, Main Stream의 M11 제출 전에는 아래 최소 Validation이 반드시 포함되어야 한다.
| 최소 Validation | 포함 Phase | 이유 |
|---|---|---|
| MFDS 제출 필수 필드 존재 검증 | M8/M9/M11a | Ready to Submit 오판 방지 |
| E2B(R3) 구조 validation | M11b | XML 생성 성공과 규제 수신 가능성 분리 |
| Receiver별 최소 rule | M11b | MFDS receiver 코드/탭/배치 혼재 차단 |
| Draft/Validated/Ready to Submit 전이 조건 | M9/M11a | 내부 상태와 화면 표시 혼선 방지 |
| XML validation failure reason 기록 | M11b/M12 | 실패 원인 추적과 재제출 판단 |
S2와의 경계: Main slice는 MFDS 국내 자발보고 제출 1건의 차단 검증만 포함한다. S2 활성 범위는 Mapping Rule과 C.2.r.4.KR.1 Regional Required Field 등록에 한정한다. 국가별 Message Profile, Partner Exchange Core/Regional Rule, Auto Narrative는 Release2에서 완성한다.
3. Main Stream — Phase 별 상세#
표기 규칙:
-🔗는 참고 기획서 (vault 내 wiki link)
-🧱는 의존성 (선행 필요)
-✅ DoD는 Phase Done 기준
3.0 Main Stream 공통 실행 매트릭스#
| Phase | Release Mode | Gate | 핵심 Verification |
|---|---|---|---|
| M0 | Internal only | Org/Role/한도 정책 확정 | Tenant isolation, 역할별 접근 차단, 로그 발생 지점 식별 |
| M1 | Feature-flagged | 비밀번호/MFA 정책 확정, 인증 이벤트 카탈로그 초안 확정, (v1.9) SES-04 다중 기기 세션 제어 v1 포함 여부 결정 | 초대/로그인/잠금/세션 만료/MFA 예외 테스트, (v1.9) PWD-06/07 30초 쿨다운 동작 검증 |
| M2 | Feature-flagged | Soft Switch 정책 + 사용자 한도 확정 | Workspace 전환 권한 재검증, 한도 초과 차단 |
| M3a | Feature-flagged | Sender/Case ID 필드 계약 확정 | Case ID 중복 방지, Sender 이벤트 카탈로그 편입 |
| M3b | Feature-flagged | Product/License 필드 계약, RSI MedDRA Lookup UX 승인 | Family/Products/Licenses 등록, RSI Term 코드+버전 저장 |
| M4 | Feature-flagged | Manual Intake 필수값·Tracker 컬럼 정책 확정 | Manual Intake 생성, Manual FU 진입점, Tracker 반영 |
| M5a | Internal only | E2B 스키마 동결, 보고 출처 fixture 승인 | Schema unit test, C.1.3 분류 정확도 |
| M5b | Internal only | AE Type / RA Due fixture 승인 | Golden fixture 회귀 테스트, 신속/정기 분기 정확도 |
| M5c | Internal only | 상태 머신/중복 키 정책 확정 | 상태 전이 unit test, Logic B 매칭, FU SEQ 정렬 |
| M6 | Feature-flagged | MedDRA/NeDrug UX/API/버전 정책 승인 | 검색/선택/버전 저장/부모 폼 반영 E2E |
| M7a | Feature-flagged | Case 섹션 필드 범위 확정 | Case Edit 공통 layout, Case 섹션 저장/미저장 경고 |
| M7b | Feature-flagged | Patient/Drug 반복 탭 규칙 확정 | Drug 시퀀스 단위 일괄 저장, NeDrug/EDQM/UCUM 매핑 |
| M7c | Feature-flagged | Event 반복 규칙 + 최소 Audit Trail 훅 합의 | E.i 코딩, 6 중대성 자동, 변경 전/후 기록 |
| M8 | Feature-flagged | Assessment/Narrative 필수값 확정 | Drug-Event matrix, 시간 간격, 최소 Validation |
| M9 | Feature-flagged | RA Triage 위치 결정 (Gate-M9) | 상태 전이, Lock/Unlock, Ready to Submit 조건 |
| M10 | Feature-flagged | M3a/M3b 설정 스키마 동결 | 원본 설정 mirror, 미설정 차단 |
| M11a | Feature-flagged | Submission Status 화면 표시 규칙, 필터 정책 확정 | List 페이지/필터, 상태 전이 사이드이펙트 |
| M11b | Feature-flagged | MFDS AS2 Test 계정, 공휴일 데이터, 최소 Validation | XML validation, Receiver 혼재 차단, 25건 제한, 전송 실패 경로 |
| M12 | Pilot enabled | ACK Test evidence, 운영 runbook | ACK parser, timeout, Draft 복귀, 관측성 지표 |
목표. SaaS Tenant 모델과 운영자(Backoffice)가 고객 Org를 생성하고 Master Admin을 초대할 수 있다.
구현 항목
- Org / Workspace / App 3레벨 데이터 모델 + Org 상태 머신 (Pre-Active / Active / Terminated)
- Org 이름 필드 제약 (BOF-T-06): 최대 20자, 공백 포함, 시스템 전체 유니크
- Workspace 이름 필드 제약 (BOF-T-03): 동일 Org 내 유니크, 중복 시 오류 메시지("동일 Org 내 이미 사용 중인 이름입니다.")
- Contract 5-상태 머신 (Backoffice 기획 §1.1.6, BOF-C-01~21):
SCHEDULED → ACTIVE → SUPERSEDED / EXPIRED / CANCELLED— BOF-C-17 배치 자동 전이(SCHEDULED→ACTIVE, ACTIVE→EXPIRED), BOF-C-18 취소(CANCELLED), 동일 버전 체인 SUPERSEDED 처리 - 계약 체결 안내 이메일 트리거 (BOF-C-01): 계약 생성 완료 시 안내 메일 발송 — 실제 배치/재시도/D-90·30·7·1 알림 등 전체 시스템은 신규 Phase A5(계약 알림 시스템) 에서 처리
- Workspace/App 활성화 플래그 (상태 머신은 Org에만 적용)
- 역할 매트릭스 (Backoffice Admin / Backoffice Operator / Master Admin / Org Admin / Org User / App Admin / App User / Viewer)
- External User는 모델 개념으로 예약하되, 실제 기능은 Release2/고도화에서 별도 정의
- Backoffice 로그인 + Org 생성 + Contract 생성 + Workspace App 활성화 + Master Admin 초대
- Org 한도(라이선스 슬롯 등) 데이터 모델
- 구조 한도 enforcement (LMT-01~07 일부): Backoffice가 Workspace 생성 / App 활성화 시 한도(Workspace 100/Org, App 10/Workspace) 차단 처리. 사용자 계정 한도 enforcement는 M2에서 처리
- 로그 발생 지점 정의 (A1 사전 작업): Backoffice 운영자 행위가 어떤 로그 분류(Backoffice Activity / Audit)로 기록되어야 하는지 식별. 실제 저장은 A1 인프라 완료 후
- Contract 정의 정합 (Multi-Org 1 Policy): Contract는 운영 주체가 아니고 Org 상태 전이 조건/기간/범위/이력만 정의. Contract 생성은 Backoffice Activity Log에 기록(이벤트 카탈로그는 A1)
- Backoffice 계정 비밀번호 정책 (v1.9, Backoffice 기획 §8.3): 비밀번호 복잡도만 고객 계정과 동일 적용. 180일 만료·재설정 기능은 미제공 (고객 계정 M1 정책과 분리)
- Terminated Org 접근 차단 정책 (v1.9, Backoffice 기획 §1.1.4, §2.3): Terminated(보존 기간 만료 전/후) 상태에서는 Backoffice Admin도 Org 내부 운영 데이터(앱 데이터 등) 조회 불가. 계약 정보·Org 기본 정보만 조회 가능, Break-Glass 포함 운영 데이터 접근 차단
- Safety DB 이니셜 케이스 사용량 연간 초기화 (v1.9, Backoffice §11.1): 1년 단위 집계, 매년 초기화 후 재카운트 (예: 2년 계약 200건이면 1년차 150건 사용 후 2년차 다시 200건으로 초기화). 1년 주기 초기화 배치 잡 구현
- BOF-T-03 기준 정보 범위 설정 주체 (v1.9, Backoffice §2.5): 추가 Workspace는 NEW Contract 생성 시 자동 생성되나 기준 정보(Study/Product) 범위는 Workspace 생성 후 고객사 Admin(Master Admin/Org Admin)이 후속 설정. Backoffice는 계약 시 생성 처리만 담당
- Workspace 폐쇄 데이터 Main 병합 (v1.9, Backoffice §2.7): 추가 Workspace 폐쇄 시 데이터 이관 완료 후 상위 Org의 Main Workspace에 결합되어 조회 가능. Org Terminated 시 자동 병합
- Backoffice MFA 변경 적용 시점 (v1.9, BOF-BAC-08): Backoffice MFA 활성화/비활성화 변경은 즉시 세션 종료 아닌 다음 로그인부터 적용, 변경 시 Audit Log 기록 (Org Admin MFA와 적용 시점 분리)
- Master Admin 최소 1명 유지 제약 (v1.9, Backoffice 기획 §7, BOF-U-05): Master Admin은 Org당 최소 1명·최대 1명 — 마지막 MA 계정의 비활성화 차단 enforcement (계약 종료 전)
참고
- confluence/기획 문서/00. Common (공통 정책)/Multi-Org 구조 및 관련 정책
- confluence/기획 문서/00. Common (공통 정책)/Backoffice 기획
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (로그 발생 지점 식별)
의존 없음 (모든 기능의 전제)
DoD Backoffice Admin이 신규 Org 1개를 생성하고 Master Admin 1명에게 초대 메일을 보낼 수 있다. Workspace/App 한도 초과 시 차단 메시지가 노출된다. Backoffice 운영자 행위의 로그 발생 지점이 A1 이벤트 카탈로그 후보로 식별된다. (v1.9 추가) A5 착수를 위해 SMTP/이메일 게이트웨이 계정·이메일 템플릿이 사전 확보된 상태로 인계된다 (A5와 병렬 가능하도록).
목표. 사용자가 초대 메일을 받아 계정을 활성화하고 로그인할 수 있다. 인증/계정 이벤트는 A1 인프라에 카탈로그로 편입한다.
구현 항목
- 초대 기반 계정 등록 (메일 토큰) + Invitation 5회 실패 시 링크 무효화 (ACC-09, Locked 미전이)
- 최초 비밀번호 설정 + 비밀번호 정책 + 비밀번호 재설정 30초 쿨다운(PWD-07/PW-06)
- 로그인 + 5회 실패 시 Locked + 60분 세션 + 비밀번호 재설정 메일
- 잠금 해제 경로 분리 (v1.8 정합): (a) 고객 측 — 본인 비밀번호 재설정 시 자동 해제(Account 26.04.17 정책) (b) Backoffice 측 — Backoffice Admin·Operator는 Master Admin 포함 전체 계정 잠금 직접 해제(BOF-U-07). Backoffice 해제 enforcement는 A4에서 양쪽 로그 기록 처리
- 비밀번호 180일 만료 화면(Login-004, LGN-40~LGN-44, PWD-04) — v1.9 정정: 만료 임박/만료 화면, 만료 시 유예 없이 즉시 강제 변경(Account 26.05.14 LGN-44 '나중에 변경 5회 유예' 삭제, LGN-45→LGN-44 번호 재부여로 유예 카운트 폐기). 강제 변경 흐름은 고라이브 시점 개발 (Soft Launch Gate 진입 조건)
- 비밀번호 복잡도 (v1.9 정정, PWD-01 26.05.14): 9~20자, 영대/소문자/숫자/특수문자 중 3종류 이상 조합 (구 "4종 모두 포함" 정책 폐지), 연속 4자 금지
- MFA (선택적 활성화) + MFA 재발급 카운트 초기화 규칙(MFA-05/06): 재발급 클릭 시 실패 카운트 미초기화, MFA 인증 성공 시에만 초기화
- MFA 정합 (v1.9, Account 26.05.14): (a) MFA 5회 초과 잠금 메시지 표시 위치 MFA 화면 → 로그인 화면으로 변경 (b) LGN-27 내용 재정의 — 구 정의(MFA 코드 만료 in-place 메시지)를 폐기하고 새 정의("5회 초과 시 계정 Locked 자동 전환 + 즉시 로그아웃 + 로그인 화면 잠금 안내")로 대체 (코드 번호 LGN-27 자체는 존재하므로 "삭제"가 아닌 "재정의" — v1.9 1차 검증 정정) (c) MFA 인증 시간 제한 10분(LGN-28) 신설 — 시간 초과 시 강제 로그아웃 트리거 (A1 카탈로그 편입)
- 계정 생명주기 (Pending Invite → Active → Locked → Inactive) + 비활성화 차단 조건(UM-50): 진행 중 케이스 Owner/Assignee 보유 시 비활성화 불가 (M4 케이스 도입 후 enforcement 활성)
- 인증 이벤트 카탈로그 편입: 로그인·로그아웃·비밀번호·MFA 이벤트 → Org Activity Log (Audit Log 문서 6.2.1)
- 계정 이벤트 카탈로그 편입: 초대·권한 변경·관리자 계정 조작 이벤트 → Org Audit Log
참고
- confluence/기획 문서/00. Common (공통 정책)/Account (+Login, Password)
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (6.2.1 인증/계정 이벤트)
의존 M0 (Org/Role 데이터 모델)
DoD 초대받은 Master Admin이 비밀번호 설정 후 로그인할 수 있다. 로그인/초대/권한 이벤트는 A1 이벤트 카탈로그 후보와 호출 훅으로 식별·연결되며, 실제 append-only 저장/조회는 A 트랙(A1/A2)에서 완성한다.
목표. 로그인 후 Org 홈 → Workspace → 앱 사이드바로 진입하고, Org Admin이 사용자/라이선스를 관리할 수 있다.
구현 항목
- Org 홈 / Workspace 홈 / 앱 사이드바 3단 네비게이션 — Workspace 홈 본체와 공지사항·다가오는 보고 마감일 등 위젯은 Home Navigation doc 1.3에서 "고도화"로 명시. Workspace 홈 위젯은 PLAN-G 결정 후 구체 Phase 배치
- 사이드바 디폴트 앱 표시 우선순위 (v1.9, Home Navigation 기획): Safety DB > LITUS > TUBE > SYNC. Workspace 내 다수 앱 활성화 시 본 순서로 표시
- Viewer Org 홈 사이드바 접근 (v1.9, Home Navigation 기획): Viewer 역할도 Org 홈 사이드바 "관리자(Admin)" 메뉴 접근 가능 (App 접근 없이 Org 단위 열람 신분)
- Org 홈 위젯: My Tasks(오너 케이스 5건 + 배정 업무 5건), 다가오는 보고 마감일(임박순 10건) — 필수(TEH-03~05). 단, M2에서는 빈 골격만 구현하고 데이터는 M4/M9 이후 채워짐
- 글로벌 헤더 + 세션 타이머 + My Profile + 딥링크 + 탭 정책
- 브라우저 탭 타이틀 정책 (Home Navigation 기획 §2.3): 로그인/Org 홈 = "iVigilance Square" / Workspace 홈 = "[WS명]" / 앱 화면 = "[WS명] - [앱명]"
- 프로필 드롭다운 메뉴 (Home Navigation §2.3): My Profile / Version / 로그아웃 — Version 항목은 솔루션 버전 정보 표시
- My Profile 모달 (Home Navigation §2.3, Account doc PRF-16/PRF-23): Profile 탭과 Password 탭 각각에 개인정보 처리방침 링크 노출, 클릭 시 별도 모달로 처리방침 페이지 열림
- 탭/세션 구조 정책(NAV-04): Org 홈 → Workspace 홈은 새 탭. Workspace 간 이동은 반드시 Org 홈 경유. SES-02 Soft Switch는 새 탭 구조 안에서 작동
- Workspace 전환 = Soft Switch (SES-02): 기존 세션 유지 + 대상 Workspace 신규 세션 발급. 전환 시점에 Workspace 접근 권한 + App 접근 권한 재검증 (SES-01/SES-03). 접근 가능 Workspace가 1개면 전환 메뉴 미노출
- 세션 초기화 대상 페이지·액션 정의 (Account doc 5.1 SES-02 미결 해소): M2 Gate에서 초기화 트리거 범위 확정 (현재 Account doc 줄 309 "추후 별도 기획 정의 예정" 상태)
- 다중 기기 동시 접속 제어 (SES-04, LGN-60): 동일 계정 다른 기기 신규 로그인 시 기존 세션 차단 팝업 — Account doc은 "추후 반영"으로 남겨두었으나 Phase 배치 명시 필요(현재 어느 Sub Stream에도 없음 → PLAN-G 묶음에 편입)
- Org Admin: 사용자 관리 (Org Admin / Org User 초대, 역할 변경, Lock은 시스템 자동 / Unlock은 본인 비밀번호 재설정으로만 — Org Admin/Master Admin 직접 해제 불가 — Backoffice Admin·Operator만 BOF-U-07로 직접 해제 가능 (v1.9 정정) — Multi-Org 26.04.29 정책 반영)
- 사용자 계정 한도 enforcement (LMT-01~07): Org Admin이 사용자 초대 시 한도 초과 차단 (Active+Locked 200/Org, MA 1, OA 3, AA 5/Workspace-App, External 50, Viewer 5). Inactive/Invitation은 카운트 제외
- Master Admin 최소 1명 유지 (v1.9, Backoffice §7 + BOF-U-05): 마지막 MA 계정 비활성화 차단 enforcement (계약 종료 전). MA 최소 1명·최대 1명
- Org Admin: MFA 강제 설정 (Org 단위 정책 — External User가 해당 Org에 들어올 때도 적용)
- MFA 멀티 Org 분기 (Account doc 줄 395 — PLAN-H): 단일 Org 로그인 후 즉시 MFA / 멀티 Org는 로그인 후 조직 선택 → 해당 Org MFA 진행. Main Stream의 M2는 단일 Org 전제, 멀티 Org MFA 흐름은 Release2 외부 사용자 고도화 범위 결정 후 정합
- Org Admin: MedDRA·WHODrug 라이선스 등록 + 주간 자동 만료 체크 (LIC-01~03) + 라이선스 자동 체크 → Org Audit Log 기록(Audit Log doc 6.2.3 줄 359-361)
- 라이선스 등록 화면 상세(TA-LIC-01~09): 버전별 MedDRA 드롭다운(지원 13개 버전), WHODrug 버전 고정 최신 1개, 빈값 시 버전 초기화, 타 Org 등록 ID 시 경고(TA-LIC-04) "이 ID는 [회사명]에 등록되어 있습니다"
- My Profile Name 필드 허용 문자 (D-1 정합 결정): PRF-13(한글/영문/숫자/공백/, . -) vs Home Navigation doc 2.3(영문/숫자/공백/, .) 문서 충돌 — Gate에서 한글·하이픈 허용 여부 단일 결정 필요
- App Admin 조회 전용 메뉴는 M3a/M3b 설정 데이터와 M10 SafetyDB Configuration Mirror 이후 활성화
- App Admin 메뉴 시점별 활성화 (v1.9, Org Admin App Admin 기획): M2에서 골격 생성 → 기준정보조회=M3b 완료 후 활성, ICSR설정조회=M3a 완료 후 활성, Audit Log 조회=A2 완료 후 활성 (단계별 flag 제거)
- 라이선스 관리 메뉴 고라이브 (v1.9, Org Admin App Admin 기획): TA-LIC-01~09 전체를 M2 범위에 포함 (계약 라이선스 현황, 만료 알림, MedDRA·WHODrug 등록·자동 만료 체크)
참고
- confluence/기획 문서/00. Common (공통 정책)/Home Navigation 기획
- confluence/기획 문서/00. Common (공통 정책)/Org Admin App Admin 기획
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin) (다이어그램 인덱스)
- confluence/기획 문서/00. Common (공통 정책)/Multi-Org 구조 및 관련 정책 (SES-01~03, LMT-01~07, LIC-01~03)
의존 M1 (로그인 완료)
DoD Master Admin이 Org Admin을 초대하고, Org Admin이 MedDRA 라이선스를 등록할 수 있다. 사용자 한도 초과 시 초대 차단되고, Workspace 전환 시 Soft Switch로 세션이 재발급되며 권한이 재검증된다.
목표. ICSR 케이스 보고에 필요한 식별자/발신자 설정이 가능하다.
구현 항목
- ICSR Config > Case ID 편집 화면 (조직 식별자, 연도, 보고 구분, 제품 약어, 일련번호 조합)
- 자릿수 옵션 정합 (C-2 정정 필요): 본문(Case ID.md 110줄)은 3~9자리 7개 옵션, 와이어프레임 #5(289줄)는 5~9자리 5개 옵션. 본문 기준(3~9) 또는 와이어프레임 기준(5~9) 단일 결정 후 단위 테스트 입력 범위 확정
- 시작 번호 제한 정책 (Case ID.md 138~141): 시작 번호 ≤ (최대 가능 숫자 - 400)
- 최후 번호 검증 (Case ID.md 128~132): 같은 조합의 기존 최후 번호보다 큰 값에서만 생성 시작. UI 입력값보다 시스템이 자동 보정
- 조합 변경 시 적용 시점 (Case ID.md 113): 자릿수/조합 변경은 이후 생성 케이스부터만 적용
- 연도 옵션 (v1.9 정정, Case ID.md 26.04.17 변경이력): 2-digit / 4-digit / N/A (Year+Month 조합은 26.04.17 삭제로 제외 — UI에 포함 금지)
- 만료 임박 팝업 (Case ID.md 164~188): 남은 번호 ≤ 100일 때 케이스 생성(Manual/Import 완료) 시점 전체 사용자에게 팝업, "오늘 하루 보지 않기" 옵션, 자동 자릿수 확장 후 자동 미노출
- Import C.1.1/C.1.8.1 처리 옵션 A/B (Case ID.md 207~216): A(C.1.8.1만 유지) / B(C.1.1+C.1.8.1 유지). 기본값 A. 본 설정은 M3a 화면 범위, S4 Import 파이프라인 입력
- C.1.8.1 자동 복사 동기화 (Case ID.md 218~223): C.1.8.1 Null이면 C.1.1 값을 자동 복사 (Import 옵션과 별개, 상시 동작)
- Case Level vs Report Level 노출 분리 (Case ID.md 226~234): Tracker/Case Edit은 일련번호만, ICSR 보고서(C.1.1/C.1.8.1)는
[국가]-[조직]-[일련번호]형식 - Case ID 채번 엔진 (Zero-padding, 연도 리셋, 자릿수 자동 확장, 재사용 방지)
- ICSR Config > Sender 편집 화면 (Batch Sender ID, C.3.x 전체 필드, 국내 강제 계승 / 국외 선택적 계승) - Tenant Level 마스터 최대 1개 (Sender.md 31~43): Tenant Sender 마스터 단일 + Workspace Sender는 토글로 Tenant 상속/해제(국외만 토글 가능) - Sender 그룹 복사 (Sender.md 91~92): Batch Sender ID 제외 전체 필드 복사·붙여넣기 버튼 - C.3.1=7(Patient) 실시간 활성화 (Sender.md 120~122): C.3.1=7 즉시 C.3.2 필수 표시 해제
- Workspace Sender 화면 위치 (D-1 미결): Workspace Level Sender 편집이 Org Admin / App Admin / 별도 어디에 속하는지 M3a 착수 전 결정
- 이벤트 카탈로그 편입: Sender / Batch Sender ID / Case ID Rule 변경 → Org Audit Log (Audit Log doc 6.2.6, 6.2.7)
참고
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config/Case ID
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config/Sender
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (6.2.6/6.2.7 이벤트)
의존 M2 (Org Admin 화면)
DoD Org Admin이 Case ID 규칙 + Sender 1건 이상 등록할 수 있다. 변경 이벤트는 A1 이벤트 카탈로그 후보로 식별된다. Case ID 채번 엔진이 단위 테스트로 검증된다.
목표. 제품 마스터 3계층(Family/Products/Licenses)이 작동하고 RSI MedDRA Term을 코드+버전으로 등록할 수 있다.
구현 항목
- Product Config > Family (성분/브랜드군 등록, RSI 데이터시트 그룹, MedDRA Term 등록, Effective Date) - RSI 버전 일관성 경고 (Family.md 122~126): 기등록 MedDRA 버전과 현재 입력 버전 불일치 시 시각적 경고 아이콘 - RSI 일괄 Template 업로드 (Family.md 137): [추후 고도화 예정] — 섹션 6 트래킹 필요
- Product Config > Products (제형·규격·모델, Manufacturer Creatable Dropdown)
- Product Config > Licenses (국가별 허가, License Type, RSI 데이터시트 매핑, MFDS 성분코드)
- 추가 필드 (Licenses.md 26~38):
Biologic / Vaccine,Biosimilar,Not in Tradename Lookup / Not Auto-Scheduled체크박스, Brand Information(MAH, 크리에이터블) 필수 — Products의 Manufacturer와 동일 드롭다운 마스터 공유 - M3b 내 최소 MedDRA Lookup 선행 구현: RSI Term 등록에 필요한 검색/선택/버전 저장 계약. 전체 Case Edit 팝업 UX는 M6에서 완성
- Family/Products/Licenses 삭제 제약 (Product_Config.md 72~76): 하위 계층 존재 시 상위 삭제 차단 + 상황별 오류 메시지
- 이벤트 카탈로그 편입: Family / RSI 그룹 / RSI Term / Product / License → Org Audit Log (Audit Log doc 6.2.4)
참고
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config/Product_Config
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config/Product_Config/Family
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config/Product_Config/Products
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config/Product_Config/Licenses
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (6.2.4 Product 이벤트)
의존 M3a (Sender/Case ID 기반 설정), MedDRA 라이선스/버전 데이터 최소 적재
DoD Org Admin이 Family/Products/Licenses 각 1건 이상 등록하고, RSI MedDRA Term 1건을 코드+버전과 함께 등록할 수 있다. 등록 이력이 Audit Log에 기록된다.
목표. 사용자가 Tracker 그리드에서 케이스 1건을 수동으로 생성할 수 있다.
구현 항목
- Tracker 그리드 컬럼 (전체, Tracker.md 4.1): Case ID(일련번호), C.1.8.1 (Approved 후 검은색/이전 회색), FU No (Null/Amend 필터 옵션 포함), Day0, AE Type, Report Type (C.1.3, Study일 경우 계획서 번호), Study ID (C.5.1.r.1, Tracker.md 26.05.14 추가, C.1.3=2일 때만 노출, Release2 Study Config 연동 필터), Product (내부 Drug Key 기반, Product Config 필터), Reported AE (E.i.1.2), RA Due (Day-N/D-Day/Missing/On Time/Overdue/NA/Late 구분 표시), Workflow 단계(Archived [추후] 옵션 포함), Owner (최초 생성 User) + Assignee (현재 단계 담당자) — Owner와 Assignee는 별개 컬럼
- Tracker.md 2.2절 'Assignee' 오기 정정 (v1.9): Tracker.md 2.2절 "최초 케이스 생성 시 — 생성한 사람이 담당자(Assignee) 컬럼에 자동 표시"는 4.1절 컬럼 표 및 Manual Intake.md 2.6절과 충돌 — '생성자 → Owner'가 정합. 기획서 본문 정정 필요 (M4 Gate)
- PLAN-AF (Tracker 필터 'Close' vs Workflow 'Complete' 용어 정합): Tracker.md 4.1 Workflow 컬럼 필터 옵션 "Close" vs Workflow.md 단계 "Complete" 용어 충돌. Close=Complete 동일 표기인지, 별도 상태인지 본 Phase 착수 전 결정 (PLAN-K 케이스 Close/Archived 상태 구현 Phase와 연계)
- 컬럼별 필터/검색, Date Range, 페이징 (목록 + 페이지네이션 backend 구현, 컬럼별 필터/검색 미확인)
+ New Case > Manual Intake진입점 + 우클릭 컨텍스트 메뉴(Tracker.md 5): Case ID 우클릭 → Follow-Up 메뉴 → Case Edit FU 생성 페이지 진입- Manual Intake 모달: 4대 요소 (보고자 / 환자 / 의약품 / 이상사례) + 보고 관리 필수값 입력
- 보고 구분(C.1.3), 최초 발생인지일(C.1.4), Day0/C.1.5, 원보고자 국가(C.2.r.3)
- Case ID Configuration 미설정 시 진입 차단 팝업 (Manual Intake.md 2.7.1, L92~95): "Organisation Home에서 Case ID Configuration을 먼저 진행해주세요…" — M10 SafetyDB Configuration 화면 차단과 별개로 Manual Intake 진입 시점에도 차단
- Product 불러오기 모달 (Licenses 연동) — PhPID 계층형 선택 UX (Manual Intake.md 4-1): L1(성분)/L2(성분+용량)/L3(성분+제형)/L4(전체)/Lic(허가제품명+국가) 선택, 공식 보고서 코딩 데이터 + 내부 식별 메타데이터 이중 저장 구조
- MedDRA-coded Event(E.i.2.1b) (M4에서는 필드/저장 경로를 먼저 구성하고, 검색 팝업 연동은 M6에서 후속 연결), 중대성(E.i.3.2a~f) 6개 체크박스, Reporting Criteria
- Reporting Criteria 3종 옵션 (v1.9, Manual Intake.md 3.1 L130):
Related/Unknown/Not Related— Unknown은 AE Type 분류 시 M5b 인과성 보수적 처리(인과성 있음 간주) 원칙과 정합 - 인과성 3종 필드 (Manual Intake.md 3.1, L128~131) — v1.8 정정: - KRCT 평가 결과(G.k.9.i.2.r.3.KR.2) — 국내외 임상/치료목적 사용승인 건 기록 (L128) - WHO-UMC 평가 결과(G.k.9.i.2.r.3.KR.1) — 자발보고 및 시판 후 조사 건 기록 (L129) — Unlikely → Not Related 자동 매핑 - Result of Assessment(G.k.9.i.2.r.3) — 해외 파트너/국외 문헌 [선택] (L131) - 상호 비활성화 규칙: KRCT 입력 시 WHO-UMC 비활, WHO-UMC 입력 시 KRCT 비활
- E.i.3.2c/f 연동 옵션 필드 (Manual Intake.md, L122~127): 입원 시작/종료일, 기타 의학적으로 중요한 상황 설명 — E.i.3.2c/f 활성화에 연동
- 저장 → Toast + Case Edit 바로가기 / Tracker 복귀
- Manual FU 생성 ([+] 버튼): Tracker 행에서 [+] 클릭 시 기존 케이스의 후속보고(FU)를 수동 생성. Manual FU 생성 진입점과 C.1.5 입력/상속 경로 구성. FU No 자동 증가와 SEQ 정렬은 M5c 로직 완료 후 연동. 자동 FU 생성(XML/Amendment/Nullification 기반)은 S4에서 처리 — Main Stream의 Happy Path는 수동 FU만 지원
- PLAN-AD (Manual FU 3종 유형 모달 Main Stream 범위): 후속보고 순번 부여.md L84~88은 [+] 클릭 시 3종 유형(Follow-up / Amendment / Nullification) 선택 모달 명시. M4에서 모달 전체 노출 후 Amendment/Nullification는 S4 위임 처리할지, M4는 Follow-up 진입점만 처리할지 본 Phase 착수 전 결정
- PLAN-AB (Manual Intake 인과성 KRCT/WHO-UMC [필수] vs [선택] 충돌): Manual Intake.md 3.1 필드 명세는 KRCT/WHO-UMC를
[선택]으로 표기하나 5절 제안 구조는[필수]로 표기. 동일 문서 내 충돌 — M4 착수 전 결정 - D-6 미결: Tracker Study ID 컬럼 vs Release2 Study 의존성: Tracker.md 최신(26.05.14)은 Study ID 컬럼을 신설하나 Study Config는 Release2. M4는 (a) Release2 이후로 컬럼 추가 미루기 또는 (b) M4에서 컬럼 자리만 비워두기 결정 필요
참고
- confluence/기획 문서/01. SafetyDB/Tracker
- confluence/기획 문서/01. SafetyDB/Tracker/Manual Intake
- confluence/기획 문서/01. SafetyDB/Rule & Logic/중복 후속 판별 로직/후속보고 순번 부여 및 탐지 로직 (Manual FU SEQ 부여)
의존 M3b (Product Master, License)
DoD (1) Manual Intake로 케이스 1건을 생성하면 C.1.3/C.1.4/C.1.5/C.2.r.3/E.i.2.1b/Reporting Criteria가 저장되고, Tracker에 새 행이 추가된다. AE Type/RA Due 자동 계산 표시는 M5b 엔진 완료 후 연동된다. (2) 기존 케이스 행에서 [+]로 Manual FU를 생성하면 Manual FU 생성 진입점에서 부모 케이스 데이터 상속 경로가 준비된다. FU No 자동 증가/SEQ 정렬은 M5c 완료 후 연동된다.
목표. ICSR 케이스의 데이터 스키마와 보고 출처 분류 로직이 작동한다.
구현 항목
- E2B(R3) 케이스 데이터 스키마 확정 (C/D/E/F/G/H 블록 DB 설계)
- 보고 출처 분류 (Main 범위) — 국내 자발보고/시판후 중심. C.1.3=2 Study 세부 분류(C.5.3/C.5.4)는 Release2 Source/Study Config에서 완성
- 보고 출처 fixture (자발보고 / 시판후 / 의료기관 등) 단위 테스트
- '분류 불가(Unclassifiable)' 처리 (보고 출처 분류.md / 보고 기한 설정.md 31~32): 명시된 규칙 외 조합은 Unclassifiable로 분류 → 관리자 검토 트리거 + Group A로 분류(AE Type 분류.md 56)
- 의약품 매칭 로직 미적용 처리 (보고 출처 분류.md 29, 38): Source a(국내 자발보고)·h(국외 자발보고)의 의약품 매칭 로직은 "추후 적용". 현재는 우선 분류, M3b 의약품 매칭 완성 시점에 재처리 경계 명시
- Receiver 10종 코드 ↔ Source Type 매핑 (D-3 정합 결정): M11a Receiver 코드(MFDS-O-CT/T-CT/...)가 Source Type 분류 결과에서 자동 결정되는 규칙. M5a/M11a/M11b 어디에 매핑 로직이 위치할지 본 Phase 착수 전 확정
참고
- confluence/기획 문서/01. SafetyDB/Rule & Logic (인덱스)
- confluence/기획 문서/01. SafetyDB/Rule & Logic/AE Type 분류 로직/보고 출처 분류
의존 M3a/M3b (Product Master, Case ID, Sender 스키마 동결)
DoD 국내 자발보고/시판후 fixture에 대해 보고 출처가 정확히 분류된다. C.1.3=2 Study fixture는 Release2로 분리한다.
목표. AE Type 6종 결과값(SUSAR/SADR/SAE/ADR/AE — SUSAR는 사망/치명적 + 기타 2분기로 보고 기한 7CD/15CD 분리)과 RA Due 산정 엔진이 작동한다. (v1.8 정정: "6종"은 결과 분류 개수, 보고 기한 경로는 7개)
구현 항목
- AE Type 분류 엔진 — 중대성(E.i.3.2a~f) → 인과성(보수적 처리) → 예측성(RSI 기반) → Group A/B 분기 → SUSAR(사망/치명적) / SUSAR(기타) / SADR / SAE / ADR / AE 결과 (SUSAR는 2분기로 7CD/15CD가 다름 — v1.6 표기 "6종"은 결과 값 수, 보고 기한 분기로는 SUSAR 2종 포함 7개 경로)
- 인과성 보수적 처리 원칙 (AE Type 분류.md 34, 41): 자체 평가 / KRCT / WHO-UMC 어느 하나도 값이 없을 때 안전을 위해 '인과성 있음'으로 간주
- 인과성 판정 코드값 (v1.9, AE Type 분류.md L37~42):
- 자체 평가(G.k.9.i.2.r.3):
Related시 인과성 있음 - KRCT(G.k.9.i.2.r.3.KR.2):=1 (Related)시 인과성 있음 - WHO-UMC(G.k.9.i.2.r.3.KR.1):1, 2, 3, 5, 6중 하나일 때 인과성 있음 - PLAN-AC 미결 (Source k 정기보고 기준일): Source k(국외 출처불명 파트너사)는 Group B에 속해 SADR 신속보고 15CD 대상이나, SAE/ADR/AE의 정기보고 기준일이 보고 기한 설정.md L42~45 매트릭스에서 누락. a/f/g와 동일 처리인지, 별도 기준일인지, 보고 대상 아님인지 본 Phase 착수 전 결정 필요
- 예측성 자사 의약품 한정 (AE Type 분류.md 45): 자사 의약품에 대해서만 예측성 평가 적용
- Group A/B 정확한 Source Type 매핑 (AE Type 분류.md 56, 69): Group A =
b, c, i, 분류 불가4종 / Group B =a, d, e, f, g, h, j, k8종 - 보고 기한 (RA Due) 산정 — AE Type × Source Type 매트릭스, 신속 7CD/15CD/정기, C.1.5 기준 (보고 기한 설정.md 31)
- SADR + Source b/c/i 보고 제외 (보고 기한 설정.md 40): 임상/연구 출처의 SADR은 보고 대상 아님 → Submission List 노출 제외
- 정기보고 기준일 3종 (보고 기한 설정.md 42~44): - Source d(재심사): PBRER 제출일 기준 분기 종료 후 1개월 - Source e(미승인 연구): CSR 완료일 기준 분기 종료 후 1개월 - Source a/f/g(자발/문헌): 가장 최근 C.1.5 기준 분기 종료 후 1개월
참고
- confluence/기획 문서/01. SafetyDB/Rule & Logic/AE Type 분류 로직 (인덱스)
- confluence/기획 문서/01. SafetyDB/Rule & Logic/AE Type 분류 로직/AE Type 분류
- confluence/기획 문서/01. SafetyDB/Rule & Logic/AE Type 분류 로직/보고 기한 설정
의존 M5a (보고 출처 분류 + 스키마), M3b (RSI Term — Expectedness)
DoD 국내 자발보고/시판후/사망/예상성 차이/SUSAR 후보 fixture에서 AE Type + RA Due가 정확히 산출된다.
목표. 케이스 라이프사이클 상태 머신과 수동 중복 판별, 후속 SEQ 부여 로직이 작동한다.
구현 항목
- 케이스 상태 머신 — Entry→QC→MA→Approval→Completion + Draft/Validated/Ready to Submit + Lock/Unlock 역라우팅 (스키마/상태 전이 정의만, UI는 M9)
- 중복 로직 Logic B (Manual) — 주요 정보 필드 전수 일치 검증, 사용자 컨펌 모달 (Logic A XML 기반은 S4) - C.1.5 비교 정밀도 (중복 로직.md 27): YYYYMM까지만 비교 - Related Case ID 반환 (중복 로직.md 68): 신규 아님 판정 시 매칭된 기존 케이스 ID 함께 반환 - 컨펌 모달 액션 규칙 (중복 로직.md 93~96): "신규로 케이스 생성" → Case Edit 이동 / "입력 취소 후 Tracker 이동" → 데이터 비저장 - 중복 매칭 필드 비교 표시 UI (v1.9, 중복 로직.md 와이어프레임 #2 L100~104): 중복 판별 시 어떤 필드가 매칭되었는지 시각적 비교 표시(모달이 아니라 페이지 내 표시 허용) - 신규 케이스 생성 Toast + Case Edit 바로가기 버튼 (v1.9, 중복 로직.md 와이어프레임 #3 L104): 컨펌 모달 "신규로 케이스 생성하기" 선택 후 생성 완료 시 Toast 알림 + 알림창 내 Case Edit 바로가기 버튼 표시 - Logic B 시나리오 2 (C.1.8.1 입력 값이 있을 때) 공백 처리 — PLAN-AA로 격상: 중복 로직.md는 시나리오 1(C.1.8.1 없을 때)만 정의 — 시나리오 2 처리 방향(Logic A 동등 처리 vs Logic B 필드 전수 비교) 본 Phase 착수 전 결정 (PLAN-AA, M5c/M4 차단 가능성)
- 후속보고 SEQ 부여 (Initial = 'Initial', Tracker 표시 '0') — 내부 값은 'Initial' 문자열, Tracker 노출만 '0' (후속보고 순번 부여.md 42~43) - C.1.5 기준 정렬, 자사 수집 2단계 우선순위. Amendment/Nullification/재전송 5단계는 S4 - Tracker FU 표시 규칙 (후속보고 순번 부여.md 51): FU는 0/1/2..., Amendment는 'A', Nullification은 'N' - Follow-up 생성 모달의 C.1.5 입력 (후속보고 순번 부여.md 95~97): Follow-up 선택 시 date picker로 YYYY.MM.DD HH:MM:SS 입력 → 해당 케이스 C.1.5에 매핑 - Amendment/Nullification 선택 시 C.1.5 자동 상속 (v1.9, 후속보고 순번 부여.md L99~105): 사용자 입력 없이 이전 버전 C.1.5 값을 그대로 복사하여 생성 (Follow-up의 date picker 입력 흐름과 분리)
참고
- confluence/기획 문서/01. SafetyDB/Rule & Logic/중복 후속 판별 로직/중복 로직
- confluence/기획 문서/01. SafetyDB/Rule & Logic/중복 후속 판별 로직/후속보고 순번 부여 및 탐지 로직
- confluence/기획 문서/01. SafetyDB/Rule & Logic/케이스 상태
의존 M5b (AE Type 결과를 상태 머신 입력으로 사용)
DoD 케이스 상태 전이가 단위 테스트로 정확히 산출되고, Logic B Manual 중복 매칭과 Manual FU SEQ가 fixture에서 검증된다.
목표. Case Edit/Product 설정에서 MedDRA(이상사례/진단/적응증), WHODrug(글로벌 의약품/MPID), NeDrug/MFDS 국내 의약품 코딩이 가능하다.
🚨 선결 사항 (M6 착수 전 완료)
- MedDRA 라이선스 계약 + 분기별 버전 동기화 파이프라인 구축
- WHODrug Vendor Dictionary 라이선스/DB 또는 API 연동 방식 확정
- NeDrug API 또는 DB 파일 연동 방식 확정 (식약처 협의)
- MedDRA/WHODrug/NeDrug 팝업 3종의 UX/API/Data 계약 승인
Gate-M6-Coding-Popup-Spec
- UX 계약: 검색 조건, 결과 컬럼, 선택 후 부모 폼 반영 규칙, no-result/error/loading 상태 승인
- 데이터 계약: MedDRA hierarchy/version, WHODrug dictionary version/MPID·Drug Code, NeDrug source/version, Effective Date 저장 정책 승인
- API 계약: 검색 paging, exact/contains 검색, timeout/error response, 캐시 정책 승인
- 버전 정책: MedDRA/WHODrug/NeDrug 버전 전환 시 기존 케이스 display/validation 규칙 승인
구현 항목
- MedDRA 검색 팝업 (5계층 SOC>HLGT>HLT>PT>LLT)
- WHODrug 검색 팝업 (글로벌 의약품명/성분/WHODrug Code/MPID 검색, 국가코드 표시)
- NeDrug 검색 팝업 (국내 약품명/성분명/MFDS 코드 검색)
- 공통 팝업 컴포넌트 (검색 결과 그리드, 선택 후 부모 폼 반영)
- 외부 DB 버전 관리 (Dictionary Version / Effective Date 기반)
참고
- confluence/기획 문서/01. SafetyDB/검색 팝업 (인덱스)
- confluence/기획 문서/01. SafetyDB/검색 팝업/MedDRA 검색 팝업
- confluence/기획 문서/01. SafetyDB/검색 팝업/WHODrug 검색 팝업
- confluence/기획 문서/01. SafetyDB/검색 팝업/NeDrug 검색 팝업
의존 M2 (Org Admin 라이선스 등록), M3b (RSI MedDRA Lookup 계약), M4 (Manual Intake 연동 지점)
DoD 임의의 단어로 MedDRA PT, WHODrug 제품/MPID, NeDrug 약품/성분을 검색·선택해서 부모 폼 필드에 코드+버전/source가 반영된다. 검색 결과 0건, timeout, 라이선스 만료 상태가 구분된 메시지로 처리된다.
목표. Case Edit 화면의 골격(헤더/플로팅 Save/미저장 경고)과 Case 섹션이 작동한다.
구현 항목
- 고정 헤더 (Case ID, FU No, C.1.1, C.1.8.1, 단계, Delete + Unlock(Locked 조건부) + Close 버튼) — Case Complete는 Workflow 패널 3.2.5에 별도 위치(C-1 정정). v1.6 표기 "헤더 Case Complete"는 Case Edit.md 2.1과 충돌이므로 헤더에서 제거하고 Workflow 패널로 이동
- Close 버튼 동작 (v1.9, Case Edit.md §4.8 L132~134): 변경 사항이 있는 경우만 §4.6 미저장 경고 모달 표시, 변경 없으면 즉시 세션 종료(Tracker 복귀). 기획서 §4.8의 "변경 없이 Close 시 경고 표시" 서술은 §4.6과 충돌이며 실제 동작은 변경 시에만 경고
- FU 드롭다운 이탈 시 경고 (v1.9, Case Edit.md §2.1 FU 정보 비고): FU No 드롭다운에서 다른 케이스 선택 시 저장하지 않은 변경이 있으면 §4.6 미저장 경고 발생
- 스크롤 섹션 + 플로팅 Save + 미저장 경고
- 섹션 단위 저장 정책 (Case Edit.md 4.9, L142~144): Save는 6-섹션(Case/Patient/Event/Drug/Assessment/Narrative) 단위. 변경 없을 시 버튼 비활성. Assessment/Narrative 섹션의 Save 버튼 단위는 M8에서 구현하되, 6-섹션 단위 저장 정책 전체는 M7a에서 확정 (v1.9)
- 동시 편집 감지 (Case Edit.md 4.1, L83): 타 사용자 편집 중일 때 "[User Name]이 현재 편집 중입니다. 읽기 모드로 진입하시겠습니까?" Read-only 진입 모달
- 삭제 사유 모달 + 보고 이력 차단 (Case Edit.md 4.5, L113~122): 보고 이력 있는 케이스 / 타 사용자 편집 중 삭제 불가. 삭제 가능 케이스도 사유 필수 입력
- 외부 Validation 룰 의존 (Case Edit.md 1, L19): Case Edit 내 모든 MFDS 필드 Validation은
[MFDS 약물이상반응 및 이상사례 개별 항목 검증 룰]Excel 파일을 따른다 — 본 Excel 확보가 M7a~c/M8 착수 Gate 조건 - Case > Identification — C.1.1/C.1.8.1 Preview→Approval 확정, 인지일 선후 검증, C.1.7 자동 입력 (Identification.md 2.1, L37): C.3.4.5(Sender Country)=KR일 때 AE Type 기반 SUSAR/SADR→True, 그 외 False, KR 아닐 시 직접 입력
- Awareness date 자체 필드 (v1.9, Identification.md §2.1 L35): C.1.4/C.1.5와 별개의 인지일 필드(자체, 옵션, Date Picker YYYY MM 최소)
- C.1.11.1 자동 처리 로직 (v1.9, Identification.md §2.1 L39): 최초 Case 생성 시 비활성. FU Report 생성 시: Amendment=
2, Nullification=1, Follow-up=값 없음 (M5c FU/Amendment/Nullification SEQ 로직과 연동) - C.1.11.2 다국어 부가 입력 (v1.9, Identification.md §2.1 L40): 보고 무효화/수정 이유는 Free text + 언어 추가 입력 필드 지원
- C.1.6.1 추가 자료 그룹 (Identification.md 2.1, L41~44): C.1.6.1 자동(하위 값 존재 시 True), Document Type 13종 자체 필드, Documents Held by Sender(C.1.6.1.r.1), Included Documents(C.1.6.1.r.2 — PDF/JPEG/DICOM/TXT). 자동 True 처리 (v1.9 명시): C.1.6.1.Selta.1 / C.1.6.1.r.1 / C.1.6.1.r.2 중 하나라도 값이 있으면 True 자동 입력 → C.1.6.1.r.1 묶음 섹션 활성화
- C.1.9.1 이전 보고자관리번호 + C.1.10.r 연결 보고 (Identification.md 2.1, L46~51): C.1.9.1.r.2는 파트너사 Import 시 원본 C.1.1 자동 추가
- Report FU No from previous sender 자체 필드 (v1.9, Identification.md §2.1 L49): 이전 전송에서의 추적보고 연번. 용도 — Reconciliation Module 검증 시 사용 (S4 Import 고도화와 연계)
- Type of Report Link + C.1.10.r 조건부 필수 (v1.9, Identification.md §2.1 L50~51): Type of the Report Link(참조 보고 유형, 6종 옵션) 선택 시 C.1.10.r(Identification Number of the Report Which Is Linked) 필수 입력 검증
- C.1.1/C.1.8.1 불변 정책 (Identification.md 4.4, L116): Approval(Approved) 확정값은 승인 취소 후에도 변경 불가
- Case > Reporter — C.2.r.3 Intake 연동, C.2.r.4 자격 → E.i.8 동적 활성화 (주의: Reporter.md §4.2 표의 "Reporter's City" 오기는 실제 C.2.r.4(Qualification)를 지칭. 구현 시 C.2.r.2.4(City)와 혼동 금지 — v1.9 정정 주석) - 주소 3필드 1+ 필수 (Reporter.md 4.3, L103~108): Street(C.2.r.2.3) / City(C.2.r.2.4) / State or Province(C.2.r.2.5) 중 1개 이상 - C.2.r.4.KR.1 Other Health Professional Type (Reporter.md 2.1, L53): C.2.r.4=3일 때만 활성 (Nurse/Other) - Sender 정보 불러오기 버튼 (v1.9, Reporter.md §3.1 L88~107): 버튼 클릭 시 ICSR Config > Sender 등록 Batch ID 리스트 팝업 → 선택 시 C.3.x 매핑 필드 자동 입력 (기존 입력값 Overwrite)
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case (컨테이너)
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case/Identification
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case/Reporter
의존 M4 (Tracker/Intake)
DoD Manual Intake로 생성된 케이스가 Case Edit에서 열리고, Case 섹션(Identification + Reporter)을 입력·저장할 수 있다. 미저장 상태 이탈 시 경고가 노출된다.
목표. Case Edit에서 환자/의약품 핵심 필드를 입력·수정할 수 있다.
구현 항목
- Patient > Patient — D.1 Intake 연동, D.2 연령 그룹 상호 배타, D.5→D.6 동적 제어 - D.2 XML 출력 우선순위 (Patient (1).md 4.1, L80~84): D.2.1 → D.2.2 → D.2.2.1 → D.2.3 순으로 1개만 XML 출력
- Drug 컨테이너 + 탭 — Drug 시퀀스 단위 일괄 저장 (Drug.md L19~22): Drug 1/2/3/4가 각각 저장되지 않고 한 의약품(시퀀스) 단위로 전체 저장. v1.6 "탭 단위 일괄 저장" 표현은 시퀀스 단위로 정정 (D-1 정합). Product 불러오기 위치
- Drug 시퀀스 내 탭 이동 미저장 경고 정책 (v1.9, Drug.md L19~22): Drug 1~4 탭 이동 시 미저장 경고 미발생(동일 시퀀스 내 이동). 다른 섹션 이탈 시에는 §4.6 경고 발생
- Drug 1 — G.k.2.2 Intake 연동, G.k.1 구분, MFDS/NeDrug 팝업, G.k.3 허가 (WHODrug는 Release2) - [Release 2 예정] G.k.2.5 Investigational Product Blinded 처리 (v1.9, Drug/1.md §4.2 L88~93): Console > Company > Study Info > Blinding ≠ Open-Label AND C.5.Selta.1 Value=Blinded일 때만 True 전송, 그 외 XML 미포함. Release2 Study Config 완료 후 활성화 — 본 Phase에서는 미구현 표기만
- Drug 2 — G.k.2.3.r 성분 반복, NeDrug 팝업, UCUM 단위 - PLAN-M 확장 (v1.9): Drug 2의 G.k.2.3.r.2a/b TermID(WHODrug 의존)도 Medical History/Parent WHODrug 의존 필드와 동일 패턴 — PLAN-M 결정 범위에 편입
- Drug 3 — G.k.4.r 투여 반복, 날짜 선후 검증, 제형·투여경로 EDQM
- Frequency 17종 자체 필드 (Drug/3.md 2.1, L33): QD/BID/TID/QID 등 17종
- nullFlavor 처리 (Drug/3.md 4.3, L122): 날짜 미상 시 MSK/ASKU/NASK 대체 가능
- G.k.4.r.3 특수 단위 시 G.k.4.r.2 공란 처리 (v1.9, Drug/3.md §4.2 L109~113): G.k.4.r.3이
{cyclical}/{asnecessary}/{total}중 하나일 때 G.k.4.r.2 수치는 공란 처리 - G.k.4.r.4/5 미래 일자 입력 차단 (v1.9, Drug/3.md §4.3 L119~123): 투여 시작일/종료일 미래 일자 입력 금지 (날짜 선후 검증과 별도 규칙) - EDQM Dose Form/Route ID↔Term 매핑 표시 (v1.9, Drug/3.md §2.1 L43, L46): G.k.4.r.9.2b/G.k.4.r.10.2b는 XML에 ID 입력, 화면에서는 Term으로 표시. EDQM 코드 테이블 조회 방식은 PLAN-W 확장 범위에서 결정 - Drug 4 — G.k.5~G.k.11 누적/적응증/조치 - G.k.8 조건부 필수 (Drug/4.md 2.1, L36) - G.k.6 노출 시 임신 기간 (Drug/4.md 4.2, L86~90): Patient 섹션 임신 기간 정보 존재 시에만 활성화 (교차 섹션 조건부) - G.k.5a 누적 투여량 자동 제안 (Drug/4.md 3, 4.3): G.k.4.r.1a 합산값을 G.k.5a로 자동 제안
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient (컨테이너)
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient/Patient (1)
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Drug
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Drug/1
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Drug/2
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Drug/3
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Drug/4
의존 M7a (Case Edit 공통 layout)
DoD Patient(1)는 섹션 단위 저장, Drug는 시퀀스(의약품 1건) 단위로 1~4 섹션 일괄 저장(Drug.md L19~22)되고, NeDrug/EDQM/UCUM 매핑이 정확히 반영된다.
목표. Case Edit Event 섹션과 케이스 필드 변경 시 최소 Audit Trail 원장 기록이 작동한다.
구현 항목
- Event — E.i 반복 탭, MedDRA 코딩, 6개 중대성+NI 자동, Intake 연동, E.i.4~7 - E.i.1.1a/E.i.1.1b 원보고자 현지언어 + E.i.9 발현 국가 (Event.md 2.1, L34~35, L58) - E.i.3.1 Term Highlighted by Reporter (Event.md 2.1, L39): 4종 옵션 - Special Situation 자체 필드 16종 (Event.md 2.1, L40): Lack of efficacy / Medication errors / Overdose / Misuse / Abuse / Counterfeit 등 - Severity + CTCAE 자체 필드 (Event.md 2.1, L50~51): Severity 4종, CTCAE 6종 - 교차 섹션 Completion Check (Event.md 3, L118): E.i.3.2a=True OR E.i.7=5 → Death 섹션(D.9) 입력 필요 트리거 - Hospitalization 날짜 검증 (v1.9, Event.md §4.3 L147~150): E.i.3.2c 선택 시 확장되는 Hospitalization Start/End 날짜는 Start ≤ End 역전 불가 + 최소 일(Day) 단위까지 입력 필수
- 최소 Case Audit Trail 훅 — 케이스 필드 저장 시 변경 전/후 값, 사용자, 시간, Revision Sequence 기록 (조회/Export 고도화는 S1)
- Audit Trail은 A1 인프라와 별도 원장 — Case Audit Trail은 케이스 필드 변경 전용
- PLAN-O 결정 필요(Lock 시점): Workflow.md 3.2.4는 "Approval 단계 진입 시 Lock" / Case Edit.md 4.1은 "Approved 이후 Read-only". 본 Phase 또는 M9 착수 전 단일 기준 결정
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Event
- confluence/기획 문서/01. SafetyDB/Case Audit Trail (최소 훅 부분만)
의존 M7b (Drug/Patient 섹션 완료)
DoD Event 1+ 입력 시 6중대성/NI 자동 계산이 작동하고, 케이스 필드 변경 시 Audit Trail 원장에 변경 전/후 값이 기록된다.
목표. 인과성 평가 매트릭스가 자동 생성되고 Narrative를 입력하면 케이스가 보고 준비 상태에 도달할 수 있다.
구현 항목
- Assessment: Drug-Event 매트릭스 자동 생성 (E.i.2.1b 기반)
- Intake → Assessment 1행 자동 생성 (Assessment.md 3, L96): Intake에서 Reported Causality 입력 시 자동 1행 생성 (Source=Qualification, Method=Global introspection, Causality=Intake 값)
- 시간 간격 자동 계산 — 두 쌍 분리 (Assessment.md 4.1, L101~107): - G.k.9.i.3.1a: E.i.4 − G.k.4.r.4 (투여 시작 → 발현) - G.k.9.i.3.2a: E.i.4 − G.k.4.r.5 (최종 투여 → 발현)
- MFDS Method of Assessment 자동 입력 — 3단계 우선순위 (Assessment.md 4.2, L110~127): - ① 원보고자 국가코드 ≠ KR → 비활성 - ② C.1.3=2 AND (C.5.4=1 또는 2) → "2" KRCT 자동 - ③ 나머지 → "1" WHO-UMC 자동
- Reporting Criteria Intake 연동
- Event Expectedness + RSI 자동 비교 (Family RSI 의존)
- 인과성 평가 반복 (G.k.9.i.2.r) — 자체 평가 + KRCT + WHO-UMC
- G.k.9.i.4 재투여/재발현 여부 필드 (Assessment.md 2.1, L38)
- Narrative: H.1 필수 자유 텍스트, H.2 Reporter's Comments(Narrative.md 2.1, L32), H.3.r Sender's Diagnosis (MedDRA LLT + PT + SOC 삼원 자동 표시 — v1.9 정정: H.3.r.1b MedDRA 코드 입력 시 LLT Term/PT Term/SOC Term 동시 자동 표시. 기존 표기는 PT 누락), H.4, H.5.r 다국어
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Assessment
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Narrative
의존 M7c (Event/Drug 섹션), M5b (AE Type 엔진 — Expectedness)
DoD 케이스에 의약품 1+ 이상사례 1+ 를 입력하면 Assessment 매트릭스 1행이 자동 생성되고 시간 간격이 계산된다.
목표. 케이스가 단계별 사용자에게 이송되어 승인까지 도달한다.
🚨 선결 사항 (M9 착수 전 기획팀 결정 필요)
- RA Triage 단계의 위치 확정:
Submission.mdv78 2절/3.1절은 "Workflow 단계 'RA Triage'가 완료되면 Submission 상태가 'Draft'로 변경" 으로 명시하나,Tracker/Workflow.mdv11은 Entry/QC/MA/Approval/Completion 5단계만 정의 — RA Triage가 (a) QC 또는 MA의 하위 액션인지 (b) MA와 Approval 사이의 별도 6번째 단계인지 미정. 본 결정에 따라 M9 단계 수, M11a 트리거 시점, Submission Status 머신이 변경됨. (섹션 6 미결 #PLAN-A 참조)
Gate-M9-RA-Triage-Decision (M9 착수 차단 게이트)
- 결정 없이는 M9 개발 착수 불가.
- 결정 영향 범위: Workflow state machine, Submission Draft trigger, Ready to Submit eligibility, Audit event taxonomy, Notification event, Tracker column semantics, M11a Submission List 노출 조건.
구현 항목
- 단계 이송 (Send to QC/MA/Approval) — RA Triage 정합성 결정 후 단계 수 확정
- 담당자 미지정 시 Send 차단 (Workflow.md 4.2, L143~145)
- 채팅형 코멘트 + 타임라인 — 타임라인에 단계 변경/코멘트/저장 이력/Lock·Unlock 시계열 기록 (Workflow.md 4.6, L173~174)
- 케이스 의견(User Context Comment) Audit Trail 자동 기록 (v1.10, Case Audit Trail.md 26.05.15 감사 로그 카테고리 표): 코멘트 NEW/EDIT/DELETE 발생 시 M7c Case Audit Trail 훅을 통해 Category=User Context, Classification=Comment, Element=Comment, Value=해당 코멘트 입력 값, Performer=행위자 유저 이름으로 기록. Workflow Chat 타임라인 저장과 별개 저장소 — D-5 결정 결과와 정합. 실제 조회/Export UI는 S1
- App User 전원 Chat/Workflow 접근 가능 (Workflow.md 4.7, L178~180): Case Lock 상태에서도 Chat Room과 Workflow에 접근 및 액션 가능
- Lock 시작 시점 — PLAN-O 결정 후 확정 (현재 미결): Workflow.md 3.2.4 "Approval 단계 진입 시 Lock" vs Case Edit.md 4.1 "Approved 이후 Read-only" 충돌. 본 Phase 착수 전 단일 기준 결정 필수. 다음 두 항목은 PLAN-O 결정 결과에 따라 채택 (현재 두 시점 모두 표기, 결정 후 1개만 활성): - (옵션 A — Workflow.md 기준) MA → Approval 라우팅 시 자동 Lock, Approval(In Progress) 표시 - (옵션 B — Case Edit.md 기준) Approval(Approved) 확정 시 Lock
- Approve / Reject → Approved 시 Lock 유지, Reject 시 Entry/QC/MA 선택 라우팅
- Unlock 시 기존 승인 Invalidated 처리 + Entry/QC/MA 선택 라우팅 + 수정 사유 필수
- Case Complete 버튼 (Completion 단계) — Workflow 패널 위치 (C-1 정정)
- Tracker Workflow 컬럼 + Lock 아이콘
- 상태 변경 → Submission Status 자동 동기화: Gate-M9 결정 결과에 따라 Draft 전환 트리거를 구현 / 케이스 Validation 통과 → 내부 상태
Validated(화면에는 여전히Draft표시) / Approval(Approved) + 최소 Validation 통과 →Ready to Submit - RA Triage 완료 → Submission Status Draft 전환 트리거 구현 (v1.9, Submission.md §3.2 L68): PLAN-A(RA Triage 위치) 결정 결과에 따라 본 Phase에서 Submission Status Draft 전환 트리거를 명시적으로 구현. M11a 화면 노출 조건의 시작점
- Workflow 타임라인 저장 이력 vs Case Audit Trail 분리 (D-5): "Workflow 타임라인의 저장 이력"이 Case Audit Trail과 동일 저장소를 사용하는지 별개 저장소인지를 본 Phase 착수 전 결정 (M7c 훅과 경계 명시)
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Workflow
- confluence/기획 문서/01. SafetyDB/Rule & Logic/케이스 상태 (상태머신 재참조)
- confluence/기획 문서/01. SafetyDB/Submission (RA Triage 트리거 명시)
의존 M8 (Assessment 완료 후 Validation 가능), M5c (상태 머신 스키마)
DoD Entry에서 시작한 케이스가 QC, MA를 거쳐 Approval 단계에서 PLAN-O 결정에 따른 단일 Lock 시점에 Locked 상태가 되고, Approve 후 Approval(Approved) 상태로 표시된다. Unlock 시 승인 무효화와 역라우팅 사유가 기록된다. RA Triage 완료 시점이 정의되어 Submission Status가 Draft로 자동 전환된다. (v1.9 검증 정정: PLAN-O 미결 동안 DoD는 단정하지 않고 결정 후 단일 시점으로 확정)
Acceptance Criteria / Verification
- RA Triage 결정안에 따라 Draft 전환 이벤트가 정확히 1회만 발생한다.
- PLAN-O 결정에 따른 Lock 시점(Approval 진입 / Approved 완료 / Case Edit Approved 이후 중 1개)에 정확히 1회만 Lock이 적용된다.
- Reject/Unlock 시 사유가 필수이며 이전 승인 상태는 Invalidated로 남는다.
- Ready to Submit 전이는 Approved + 최소 Validation 통과 조건을 모두 만족할 때만 가능하다.
- Verification: 상태 머신 unit test + workflow E2E + audit event integration test (Lock 시점 시나리오는 PLAN-O 결정 후 fixture 확정).
목표. SafetyDB 앱 내에서 Org Admin의 Case ID / Sender 설정을 Read-Only로 확인할 수 있다.
구현 항목
- SafetyDB Configuration > Case ID — Org Admin Case ID 미러 (제약사는 Read-Only)
- SafetyDB Configuration > Sender — Org Admin Sender 미러 (제약사 Read-Only / CRO는 다르게 적용 — Sender (Safety Config).md 17~19). CRO 케이스 처리 방식 본 Phase 착수 전 결정
- Case ID 미설정 시 Import/케이스 생성 차단 팝업 (XML Import 2.7 정책)
- (v1.11) 참고 기획서 3건은 spec-by-reference shell 상태 —
Configuration.md본문 1줄 /Case ID (Safety Config).md"Org Admin 미러" 한 문장 /Sender (Safety Config).md"제약사 Read Only / CRO 다름" 두 문장. M10 착수 전 CRO 분기 사양 본문 작성 선행 필요 (Gate 차단 조건, §6 참조).
참고
- confluence/기획 문서/01. SafetyDB/Configuration
- confluence/기획 문서/01. SafetyDB/Configuration/Case ID (Safety Config)
- confluence/기획 문서/01. SafetyDB/Configuration/Sender (Safety Config)
의존 M3a (Org Admin Case ID/Sender 원본)
DoD SafetyDB Configuration 메뉴 진입 시 Org Admin이 설정한 Case ID와 Sender가 그대로 표시된다.
목표. Approved 케이스가 Submission List에 노출되고 Submission Status 머신이 정확히 동작한다. 실제 배치 생성·MFDS AS2 전송은 M11b에서 다룬다.
구현 항목
- Submission Status 상태 머신: 내부 상태 3종 (
Draft/Validated/Ready to Submit) - 화면 표시 규칙 (Submission.md 3.2 명시): 화면 표시 상태는Draft/Ready to Submit2종만.Validated는 내부 추적용이며 List/필터 UI에서는Draft로 표시. Submission Status 필터 최대 2개 선택 가능. - RA Validation 정의 (Submission.md 39, 69): Draft → Validated 전환은 "RA Validation 완료(문제 없음)" 시점. Validated 뱃지는is_validated boolean조건. RA Validation에 포함되는 Validation set은 M11a 착수 전 정의 필요 (현재 미정 — Main 최소 Validation slice와 정합 결정) - Submission List 화면 — Expedited / Periodic 탭, 필터/검색, Due Date 정렬
- 페이지당 25건, Due Date(RA) 가장 임박순 → Case ID 오름차순 동률 처리
- Periodic 탭 필터 조건 (Submission.md 70, 198): RA 값이 있고 신속보고 여부에 체크되어 있지 않은 케이스만 노출
- 필터: C.1.1/C.1.8.1 키워드, Case Owner(다중 5), Workflow Status(다중 3), Submission Status(다중 2), Receiver(단일 1)
- 'Validated만 보기' 체크박스 (v1.9, Submission.md 2026-05-13 신설): Submission Status 필터
Draft선택 시 'Validated만 보기' 체크박스 활성화 (is_validated boolean 조건 필터) - Receiver 10종 코드 (MFDS-O-CT/T-CT/O-CF/T-CF/O-CU/T-CU/O-KR/T-KR/O-FR/T-FR) — 화면 표시명 매핑 ("임상 시험 국내", "시판 후 국내 (TEST)" 등)
- PLAN-I 미결: Study N.2.r.3 ↔ Receiver 코드 연계 (D-3): Study Config에 사전 설정된 N.2.r.3(Message Receiver Identifier)이 M11a Receiver 선택을 자동 결정/Override하는 규칙. 임상 케이스(C.1.3=2) Submission 흐름에 직접 영향
- Submit 버튼 + 확인 팝업 (UI만, 실제 배치 생성은 M11b)
- 배치 생성 조건:
Ready to Submit단일 조건 (Draft/Validated 케이스 선택 시 에러 "Submission Status가 Ready to Submit 일때만 보고 할 수 있습니다.")
참고
- confluence/기획 문서/01. SafetyDB/Submission
- confluence/기획 문서/01. SafetyDB/Submission/Submission List (메타)
의존 M9 (Workflow Approved 상태), M10 (Sender 확인)
DoD Ready to Submit 케이스가 Submission List에 노출되고 필터/페이징이 정상 동작한다. Submit 버튼 클릭 시 확인 팝업까지 진행된다(실 전송은 M11b 완료 후).
🚨 선결 사항 (M11b 착수 전 완료)
- MFDS AS2 게이트웨이 Test 환경 계정 발급
- 공휴일 마스터 데이터 테이블 구축 (2영업일 ACK Timeout 계산용)
- 최소 Validation Slice 완료: 필수 필드, E2B 구조, Receiver별 rule, Draft/Validated/Ready to Submit 전이 조건
목표. 선택된 케이스들이 E2B 배치 XML로 묶여 MFDS AS2 Test 환경에 전송 성공한다(ACK 수신 전).
구현 항목
- 배치 생성 엔진 (Receiver 유효성, 동시 25건 제한, N.1.5만 배치 생성 시점 타임스탬프로 세팅 — N.2.r.4 / C.1.2는 건드리지 않음. C.1.2는 케이스별 ICSR 버전 타임스탬프이며 케이스 내용 변경 시에만 갱신, 배치 재생성은 케이스 변경이 아니므로 갱신 불필요 (Submission.md 2026-04-28 정정 정책), N.1.3 Sender 삽입)
- N.1.x 배치 메타데이터 전수 처리 (Submission.md 156~158, 표 1): N.1.1/N.1.2/N.1.3/N.1.4/N.1.5 각 필드 세팅 규칙 — N.1.5만 갱신 정책 외 N.1.1/N.1.2/N.1.4 처리 규칙도 본 Phase에서 정의
- 동일 Receiver만 한 배치로 묶음 — 상이한 Receiver 혼재 시 자동 차단 (IS-1678)
- System Freeze (보고 진행 케이스 수정 잠금, List에서 제외) — 해제 시점은 ACK 수신 또는 Timeout 시
- 영업일 계산 단위 (Submission.md 191, 표 4): 1영업일 = 8시간, 토·일·공휴일 제외. 2영업일 ACK Timeout 계산에 적용
- E2B(R3) XML 생성 (모든 케이스 필드 매핑)
- MFDS AS2 게이트웨이 전송 — Queued → Transmitting → Waiting ACK
참고
- confluence/기획 문서/01. SafetyDB/Submission
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case Edit_Field Type (E2B 필드 분류 — 일부 참조)
의존 M11a (List + 상태 머신), MFDS AS2 Test 계정, 공휴일 데이터
DoD Approved 케이스 1건이 Submit 버튼으로 MFDS Test 환경에 전송 성공한다 (ACK 수신 전).
Acceptance Criteria / Verification
Ready to Submit케이스만 선택 가능하다. Draft/Validated 선택 시 지정 문구로 차단된다.- Receiver가 다른 케이스는 같은 배치로 묶이지 않는다.
- 25건 초과 선택, Sender 미설정, Case ID/Sender 설정 불일치, XML validation 실패가 각각 별도 오류로 기록된다.
- 배치 생성 시 N.1.5만 갱신하고 N.2.r.4/C.1.2는 변경하지 않는다.
- System Freeze 적용 후 케이스 수정/삭제/재제출 중복 클릭이 차단된다.
- Verification: XML golden fixture, Receiver 혼재 integration test, 25건 제한 E2E, MFDS Test AS2 sandbox 전송 증적.
Failure / Recovery / Observability
- 실패 경로: XML validation fail, AS2 connection fail, AS2 timeout, duplicate submit click, partial batch creation fail.
- 재시도 정책: 전송 전 실패는 배치 폐기 후 Draft 유지, 전송 후 실패는 Submission Monitoring에서 수동 재시도/운영자 개입 경로로 처리.
- 중복 전송 방지: batch idempotency key를 생성하고 동일 케이스+Receiver+N.1.5 조합 재전송을 차단한다.
- 운영 지표: XML validation failure count, AS2 transmit failure count, duplicate submit blocked count, batch stuck duration.
- Runbook 기준: AS2 connection fail은 3회까지 5분 간격 재시도, 15분 이상
Transmitting지속 시 stuck batch로 분류.
목표. 전송한 배치의 ACK를 수신하여 결과(Success/Fail)를 자동 매핑하고, 전체 보고 흐름이 감사 추적된다.
구현 항목
- Submission Monitoring 화면 — 2-depth Expandable Row (배치 + 케이스)
- Progress 단계 (Queued / Transmitting / Waiting ACK / Receive ACK)
- ACK 수신 파서 (AA/AE/AR/CA/CR + R/P/C/N 상세)
- ACK Comment 툴팁 (Submission.md 132): AA/AE/AR/CA/CR/R/P/C/N 각 코드에 한국어 설명 툴팁 UI
- ACK 자동 매핑 (배치 레벨 / 케이스 레벨 분기)
- 접수 완료 조건 (Submission.md 126): ACK.A.4=AA AND ACK.B.r.6=CA → 접수 완료. 그 외(AR/AE/CR)는 재보고 후 접수 완료 시점에서 다시 판단
- 배치 Fail 시 케이스별 Result 분기 표시 (Submission.md 129): 배치 Fail이지만 문제 없는 케이스(CA)는 Result '-', 문제 있는 케이스(CR)는 'Fail'. On-Time/Late 전체 케이스는 '-'
- 오류 시 케이스 Draft 복귀 자동 처리
- On-Time / Late 자동 판정 (Due Date vs ACK 시간) — 재보고 케이스의 On-Time/Late 재판정 시점 규칙 본 Phase에서 정의
- ACK Timeout (2영업일) → Draft 복귀 배치 잡 — 영업일=8시간, 토·일·공휴일 제외
- 전송 파일 + ACK 파일 영구 보관 (변조/삭제 불가)
- 이벤트 카탈로그 편입: Submission 이벤트는 A1 인프라에 분류 규칙에 맞게 등록
참고
- confluence/기획 문서/01. SafetyDB/Submission (SSoT, 7단계 흐름 재참조)
- confluence/기획 문서/01. SafetyDB/Submission/Submitting Monitoring (메타)
의존 M11b (전송 성공)
DoD MFDS Test 환경에서 ACK 수신 후 Submission Monitoring에 Success/Fail이 자동 매핑되어 표시된다. Submission 이벤트는 A1 이벤트 카탈로그 후보로 식별되고, 케이스 상태/필드 변경은 Audit Trail 원장과 연결된다.
Acceptance Criteria / Verification
- ACK AA/AE/AR/CA/CR 및 R/P/C/N 상세가 배치/케이스 레벨에 정확히 매핑된다.
- ACK Fail 또는 Timeout 시 System Freeze가 해제되고 케이스가 Draft로 복귀하며 실패 사유가 남는다.
- ACK 파일, 전송 XML, 사용자 조작, 시스템 상태 전이는 삭제/변조 불가 저장소에 보관된다.
- On-Time/Late 판정은 공휴일 마스터 데이터 기준 2영업일 timeout 규칙과 일치한다.
- Verification: ACK fixture parser unit test + timeout batch job integration test + Submission Monitoring E2E + audit evidence review.
Failure / Recovery / Observability
- 실패 경로: ACK parse fail, partial ACK, ACK timeout, storage write fail, Draft 복귀 실패.
- 수동 개입: 운영자가 batch stuck 상태를 확인하고 재처리/수동 종료/고객 공지를 결정하는 runbook을 작성한다.
- 운영 지표: ACK timeout count, ACK parse failure count, stuck batch count, Draft recovery failure count, audit evidence write failure count.
- 알림 경계: 사용자 업무 알림은 Release2 알림 트랙에서 확장하되, 운영 장애 알림은 M12의 최소 관측성 범위에 포함한다.
🎯 Main Stream 종료 시점#
M12 완료 = "ICSR 1건이 자발보고로 시스템 진입 → 입력/평가/승인 → MFDS 제출 → ACK 수신까지" Happy Path가 끊김 없이 동작한다.
운영 로그/감사 인프라는 Sub Stream A 트랙에서 관리되며, 그중 A1(로그 인프라) + A4(Backoffice 통합 조회 + Break-Glass 양쪽 기록) 는 운영 가시성을 위해 권장되나, 감사 트랙(A)을 S 트랙보다 먼저 진행해 운영 증적·로그 조회·보존 정책을 선정비한다.
이 시점은 고객사 1곳이 자발보고 케이스만으로 한정해서 Production Pilot을 시작할 수 있는 후보 상태다. 실제 고객 노출은 Soft Launch Gate 통과 후에만 가능하다.
정리: M12 완료 = Soft Launch Gate 진입 조건, Soft Launch Gate 통과 = 제한 고객 Production Pilot 가능, GA Gate 통과 = 일반 고객 사용 가능.
4. Sub Streams — 우선순위#
각 Sub Stream은 의존성이 충족된 뒤 착수한다. 현재 실행 순서는 A 트랙(A1~A5) 선행 → S 트랙(S1/S2/S3/S4/S10)이며, S 트랙 내부 순서는 비즈니스 가치 + 규제 리스크 + 의존성을 종합한 권장 순서다.
4.0 S 트랙 우선순위 스코어#
1=낮음, 5=높음.Planning Readiness는 높을수록 착수 준비가 잘 된 상태다.Implementation Risk는 높을수록 일정/품질 리스크가 크므로 점수에서 뺀다.
Priority Score = User Value + Regulatory Risk + Dependency Unlock + Planning Readiness - Implementation Risk
A 트랙은 선행 고정이며, 아래 표는 A 트랙 이후 진행되는 S 트랙 내부 권장 순서를 Priority Score 기준으로 정리한다.
| Rank | Stream | User Value | Regulatory Risk | Dependency Unlock | Implementation Risk | Planning Readiness | Score | 우선순위 판단 |
|---|---|---|---|---|---|---|---|---|
| 1 | S1 Audit Trail 고도화 | 4 | 5 | 4 | 3 | 4 | 14 | 검사/보안심사 대응, GA 신뢰도 직접 영향. Case 필드 변경 원장은 A1과 별도 |
| 2 | S2 Validation 최소 범위 | 4 | 5 | 4 | 3 | 4 | 14 | Mapping Rule + C.2.r.4.KR.1 Regional Required Field만 활성. Field Type 일반/Message Profile/Auto Narrative 등 나머지는 Release2 |
| 3 | S3 특수 케이스 섹션 | 4 | 4 | 3 | 3 | 4 | 12 | 사망/태아/검사/병력 케이스 품질 영향 |
| 4 | S4 FU 고도화 | 4 | 4 | 3 | 3 | 4 | 12 | Amendment/Nullification C.1.5 상속 + Tracker FU 자동 생성 정책만 활성. XML Import/Data Hub는 Release2 |
| 5 | S10b Break-Glass 고도화 | 3 | 5 | 2 | 4 | 3 | 9 | 보안/법무 승인 필요. A4 양쪽 기록 인프라 위에 승인/통지 UX 고도화 |
| 6 | S10a Terminated Org 추출 | 3 | 4 | 2 | 3 | 3 | 9 | ONB-05 계약 종료 후 데이터 추출 |
4.1 조기 착수 조건#
Sub Stream은 아래 3종으로 구분한다.
| 구분 | 의미 |
|---|---|
| 필수 순차 | Main Stream을 막는 선행 작업. 의존 Phase 완료 전 착수 불가 |
| 조건부 조기 착수 | 데이터 모델/API/기획 계약이 동결되면 Main Stream 종료 전에도 착수 가능 |
| M12 이후 권장 | Main Stream 안정화, 운영 데이터, 외부 라이선스, 고객 피드백 이후 착수 권장 |
| 조기 착수 후보 | 착수 조건 | 통합 게이트 |
|---|---|---|
| S3 Patient 특수 섹션 | M7b 데이터 모델/Case Edit layout 동결 | M8/M11b XML 필수성 regression 통과 |
| M10 SafetyDB Configuration | M3a Case ID/Sender 원본 스키마 동결 | 미설정 차단 정책 M4/M11a과 일치 |
우선순위 근거. 개인정보 처리방침과 최소 운영 증적은 운영 고도화가 아니라 서비스 공개 선결 조건이다. 법인명, 개인정보 보호책임자, 연락처, 시행일이 미정이면 제한 고객 Pilot도 진행할 수 없다.
구현/확정 항목
- 개인정보 처리방침 법인명/책임자/연락처/시행일 확정
- My Profile / Footer / 약관 링크 연결 — PRF-16(My Profile 모달), PRF-23(Password 탭 링크) 구체 구현 본 Gate에 포함
- 180일 비밀번호 만료 화면(M1 PWD-04) 활성화 확인: 고라이브 시점 개발 항목, Pilot 진입 시 실제 만료 카운트 동작 검증
- 로그 보존 정책과 개인정보 보존 정책 정합성 확인 (A3 enforcement 결과 검증) — App/Workspace 단위 D+60 잡 동작 포함
- 최소 Case Audit Trail 원장 동작 확인 (M7c에서 구현한 field before/after 기록)
- MFDS Test AS2 전송/ACK evidence 보관
- 제한 고객/제한 케이스 범위 명시, known issue 승인
- 장애 대응 연락망 + M11b/M12 운영 runbook 초안
- Pilot success metrics: 제한 고객 1곳, 자발보고 케이스 3건 이상 end-to-end 성공, ACK timeout/parse failure P1 이상 0건, P0/P1 open issue 0건
- Go/No-Go 기준: P0/P1 미해결, 개인정보/권한/감사 증적 결함, MFDS Test evidence 부재 시 No-Go
참고
- confluence/기획 문서/00. Common (공통 정책)/개인정보 처리방침 (초안)
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail
우선순위 근거. GA는 기능 완료가 아니라 운영 책임 인수다. 규제 SaaS는 제출 Happy Path만으로 일반 고객 사용을 열면 안 된다.
필수 승인 항목
- Security verification: tenant isolation, cross-org denial, role matrix, break-glass 접근 차단/감사 증적
- Backup/restore drill: 케이스, XML, ACK, Audit Trail 복구 리허설
- Incident response: MFDS AS2 장애, ACK timeout 급증, XML validation failure 급증 runbook
- Production monitoring: M11b/M12 운영 지표 dashboard/alert
- Access review: Backoffice/Admin 권한 점검, 퇴사/잠금/Inactive 처리 확인
- Data retention/deletion test: Terminated D+60 삭제/추출 정책 검증 (A3 enforcement 결과)
- UAT sign-off: 제한 고객 담당자 승인
4.2 A 트랙 (Audit & Operations Automation)#
Activity/Audit Log 인프라(A1~A4)와 계약 알림 시스템(A5)을 모은 Sub Stream. A 트랙은 S 트랙보다 먼저 진행하여 운영 증적·로그 조회·보존/삭제 정책·Backoffice 감사 흐름을 선정비한다. 운영 가시성이 빨리 필요하면 Main Stream 후반부터 병행 착수할 수 있다. (v1.14 기준 Main Stream에서 Sub Stream으로 재분류 — 의존성 관계는 §5 그래프 유지)
| Phase | Release Mode | Gate | 핵심 Verification | Soft Launch 선결 |
|---|---|---|---|---|
| A1 | Internal only | 로그 분류·보존·무결성 정책 확정 | append-only 저장, 이벤트 카탈로그 등록 구조 동작 | S 트랙 전 선행 |
| A2 | Feature-flagged | A1 데이터 모델 동결, 화면 IA 합의 | 필터/페이징/10만 건 제한, 권한별 노출 | S 트랙 전 권장 |
| A3 | Feature-flagged | CSV Export 컬럼 계약, 삭제 정책 확정 | 1년/10만 건 Export, D+60 자동 삭제 잡 | GA 전 정책 결정 후 |
| A4 | Pilot enabled | Backoffice 통합 조회 IA, Break-Glass taxonomy | Cross-Org 조회, 양쪽 로그 동시기록 evidence | S 트랙 전 선행 |
| A5 | Pilot enabled | SMTP 계정·템플릿·수신 대상 정책 확정 | D-90/30/7/1 발송, 3회 재시도, 실패 시 인앱+감사 로그 | S 트랙 전 운영 자동화 |
목표. 플랫폼 전체 행위 기록이 동일한 방식으로 저장되도록 로그 인프라를 먼저 만든다. 이 Phase는 인프라만 다루며, 화면(A2)·Export/보존(A3)·Backoffice 통합 조회(A4)는 별도 Phase에서 다룬다.
구현 항목
- Activity Log / Audit Log 분류 공통 데이터 모델
- Scope 모델: Org / Workspace / App / Backoffice
- Backoffice Activity Log / Backoffice Audit Log 저장 모델
- 이벤트 카탈로그 등록 구조: 각 Phase가 자기 기능의 이벤트만 추가할 수 있도록 Category / Task / Message / Author / User / Scope 계약 정의
- Append-only 무결성: 수정·삭제 API 없음, 위변조 방지(해시 체인 또는 동급), 감사 증적 저장
- 보존/삭제 데이터 모델: 고객 로그 vs Backoffice 로그 보존 기간 구분 컬럼. 실제 삭제 잡과 자동화는 A3에서 처리. Scope에 App 단위/Workspace 단위 D+60(Multi-Org 6.4/6.5)도 모델링 필요
- 읽기/조회 이벤트는 기록하지 않는다(원칙)
- 케이스 필드 변경 전/후 값은 Audit Log가 아니라 Case Audit Trail에 기록(원칙) — Case Audit Trail 실제 구현은 M7c 훅 + S1 고도화
- 이벤트 카탈로그 항목 정리(D-4): Audit Log doc 6.2.1 "User account unlocked: 관리자 해제→Audit Log"는 Account doc 26.04.17 변경이력에서 관리자 잠금 해제 기능이 제거된 이후에도 잔존. A1 카탈로그 등록 시 (a) 본인 비밀번호 재설정→Activity Log만 활성, (b) 관리자 해제 이벤트는 카탈로그에서 제외 또는 Backoffice 직권 해제로 재정의
- 강제 로그아웃 트리거 목록 (v1.9 정정, Audit Log 26.05.14): 계정 비활성화 / 권한 변경(역할 강등) / 비밀번호 변경 완료 / MFA 인증 실패 잠금 / MFA 인증 시간 제한 초과(신규) / Org Terminated 전환. "유예 카운트 사용" 이벤트 행은 카탈로그에서 삭제 (Account doc LGN-44 폐지에 연동)
참고
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (2 Log Classification, 3 Core Recording Rules, AUD-11)
의존 M0 (Org/Workspace/App/Backoffice 계정·역할 모델)
DoD 샘플 이벤트(로그인, Org 생성 등)가 분류 규칙에 따라 append-only로 저장된다. 어떤 Phase든 자기 이벤트를 카탈로그에 등록하면 일관된 컬럼·scope·author로 기록된다. 수정/삭제 API는 존재하지 않는다.
재분류 (v1.14) 본 Phase는 v1.13까지 Main Stream에 위치. v1.14에서 Sub Stream A 트랙으로 이동. M1·M3a/b·M9·M11/M12 이벤트 카탈로그 편입은 Main Stream Phase에서 계속 호출하므로 Main Stream 진행 중 이벤트를 계속 발생시키나, 감사 트랙(A) 조회·보존·Export 인프라는 S 트랙 전에 선행 구축한다.
목표. 고객 Org 사용자와 Backoffice 운영자가 자기 영역의 Activity/Audit Log를 조회할 수 있다. Backoffice의 고객 Org 통합 조회는 A4에서 다룬다.
구현 항목
- 고객 Org Activity Log 조회 화면 (GNB → Activity Log)
- 고객 Org Audit Log 조회 화면 (GNB → Admin > Audit Log)
- Backoffice 자체 Activity Log 조회 화면
- Backoffice 자체 Audit Log 조회 화면
- 컬럼 (No / Org / Workspace / App / Date / Category / Task / Author / User) — Audit Log doc 2.1
- 고객 화면 컬럼/필터 미노출 정책(Audit Log doc 2.1 줄 82-83): Workspace, App 컬럼/필터는 Backoffice가 고객 Org 로그를 볼 때만 노출. 고객이 자기 Org를 볼 때는 Workspace/App 컬럼·필터 미노출
- 필터: 날짜 범위 / Category / Author / User / Workspace / App (필터당 조건 1개) — Workspace/App은 Backoffice 화면 전용
- 화면 조회: 기본 최근 2주(14일), 최대 1년, 페이지당 30건(Audit Log doc 4 줄 178-180), 한 번에 10만 건 제한
- 역할별 조회 권한 적용 (Audit Log doc 5.1)
- 역할별 조회 권한 매트릭스 (v1.9, AUD-15): App User = App 단위 Activity Log 조회 가능, Audit Log 접근 불가. App Admin 이상 = Activity Log + Audit Log 모두 접근. 권한 외 로그는 노출되지 않음을 시나리오별 검증
- 케이스 필드 변경 이력 노출 차단(Audit Trail은 별도)
참고
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (2.1 컬럼, 4 Viewing/Query Limits, 5 Access Scope, 7.1 고객 화면, 7.2.2 Backoffice 자체 화면)
의존 A1 (데이터 모델·이벤트 카탈로그), M2 (Admin UI frame — Org Admin 화면)
DoD Org Admin이 Org Activity/Audit Log를 필터 조회할 수 있고, Backoffice 운영자가 Backoffice 자체 로그를 탭으로 분리 조회할 수 있다. 권한 외 로그는 노출되지 않는다.
목표. Log CSV Export와 보존/삭제 정책 자동화를 완성한다. Export 행위 자체도 로그에 기록된다(자기 참조).
구현 항목
- CSV Export 컬럼: A2 화면 컬럼과 동일
- Export 1회 최대 1년, 10만 건 초과 시 10만 건만 추출
- 조회 기간 미설정 시 현재 기준 30일치 Export (10만 건 제한 적용)
- 1년 초과 건은 고객사 별도 요청 채널 안내 문구
- Export 행위 로그 기록:
Activity log exported: [추출 기간]/Audit log exported: [추출 기간](Audit Log doc 6.2.3, 6.1.2) - Backoffice의 고객 로그 추출 이벤트도 카탈로그 편입: Backoffice가 고객 Activity/Audit/Audit Trail을 추출하면 "Activity log exported", "Audit log exported", "Audit Trail exported"를 Backoffice Activity Log에 별도 기록 (Audit Log doc 6.1.2 줄 하단 표) — A4와 카탈로그 통일
- 보존 정책 자동화: 고객 로그는 계약 기간 전체 보존, 계약 종료 시 D+60 자동 삭제 잡 (Audit Log doc 4 Retention, AUD-12)
- App 단위 D+60 (Multi-Org 6.5): App 계약 종료 시 해당 App 데이터만 D+60 자동 삭제 잡
- Workspace 단위 D+60 (Multi-Org 6.4): Workspace 폐쇄 시 D+60 자동 삭제 잡
- Backoffice 로그는 계속 보관 (자동 삭제 대상 아님)
- PLAN-E 처리: Backoffice 로그 보존 기간 미정 + Multi-Org 8.3 ↔ AUD-12 표현 충돌 해결 결과를 본 Phase에서 enforcement (착수 전 기획팀 결정 필요). v1.7 추가: Audit Log doc은 "계속 보관" 확정 표현, Multi-Org는 미결 표현 — A1 카탈로그 등록 전 두 문서 표현 동기화 선행 필요
참고
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (4 Retention/Integrity/Export, AUD-12~14)
- confluence/기획 문서/00. Common (공통 정책)/Multi-Org 구조 및 관련 정책 (8.3 Retention)
의존 A2 (조회 화면 + 필터)
DoD 사용자가 조회 화면에서 CSV Export 버튼을 클릭하면 1년/10만 건 제한 안에서 파일이 다운로드되고, Export 행위가 로그로 기록된다. Terminated 처리된 Org의 로그는 D+60 자동 삭제 잡이 실행된다.
목표. Backoffice 운영자가 고객 Org의 Activity/Audit/Trail을 통합 조회하고, Break-Glass·Backoffice→고객 설정 변경 시 양쪽 로그에 동시 기록된다.
구현 항목
- Backoffice GNB [Log] → 고객사 로그 조회 흐름 (Audit Log doc 7.2.1)
- 필터: 날짜 범위 / 고객사명 / Org / Workspace / App / 로그 종류 (Activity Log, Audit Log, Audit Trail)
- 로그 종류 통합 조회 화면 (분류는 행 단위 컬럼으로 구분)
- CSV Export (1년/10만 건 제한)
- Backoffice의 고객 Log Export 행위 이벤트 카탈로그 (A3와 통일): "Activity log exported / Audit log exported / Audit Trail exported"를 Backoffice Activity Log에 기록 — Audit Trail Excel Export 기능은 S1 구현 / Export 행위 카탈로그는 A4 (v1.9 분리 명시, Case Audit Trail.md L36~41)
- AUD-10 enforcement: Backoffice Admin/Operator 행위가 고객 Org 설정을 변경하는 경우 Backoffice Activity Log + 해당 Org Audit Log 양쪽에 동시 기록 (Author는 Backoffice 행위자 ID)
- Break-Glass 양쪽 기록 (현재 정의된 수준만): 접근 시작 / 접근 종료 양쪽 기록 (Backoffice Activity Log + 해당 Org Audit Log). 접근 요청/승인/거부/직권/사후통지 등 추후 단계는 S10b로 분리
- Backoffice 잠금 해제 enforcement (BOF-U-07): Backoffice Admin/Operator가 고객 계정 잠금을 직접 해제하면 Backoffice Activity Log + 해당 Org Audit Log 양쪽에 기록 (M1에서 분리한 경로 (b)의 실제 enforcement는 A4에서 처리)
참고
- confluence/기획 문서/00. Common (공통 정책)/Audit Log, Activity Log, Audit Trail (7.2.1 Backoffice 흐름, AUD-10, 6.1.2 Break-Glass 현재 수준)
- confluence/기획 문서/00. Common (공통 정책)/Backoffice 기획
의존 A2 (Org 로그 조회 화면 컴포넌트 재사용), M12 (운영 시작 후 실데이터 발생)
DoD Backoffice 운영자가 특정 고객 Org의 Activity/Audit Log를 통합 조회 화면에서 필터/Export할 수 있고, Backoffice 행위가 고객 설정을 변경하면 양쪽 로그에 동시 기록된다. Break-Glass 시작/종료가 양쪽에 기록된다.
재분류 (v1.14) 본 Phase는 v1.13까지 Main Stream에 위치. v1.14에서 Sub Stream A 트랙으로 이동. 감사 트랙(A)은 S 트랙보다 먼저 진행한다(운영 가시성이 빨리 필요하면 Main Stream 후반부터 병행 가능).
목표. 계약 만료 임박/체결/복원 시점에 자동 이메일이 발송되고, 발송 실패는 재시도·감사 로그로 추적된다.
🚨 선결 사항: SMTP/이메일 게이트웨이 계정, 이메일 템플릿 승인, 수신 대상 정책 확정
구현 항목
- D-90 / D-30 / D-7 / D-1 자동 이메일 배치 (BOF-C-13): 계약 종료 임박 알림. 수신: Master Admin + 세일즈 담당자 + Backoffice Admin/Operator 전체 (BOF-AL-06)
- 종료 사전 알림 이메일 템플릿 분기 (v1.9 추가, Backoffice 기획 §1.1.8.1): Org 전체 종료 시 vs Workspace/App 개별 종료 시 안내 문구 분리. 삭제 예정일은 Org 종료·App 종료 시에만 추가, Workspace 종료 시 절차 안내만 발송
- 계약 체결 안내 이메일 (BOF-C-15): NEW / RENEW / 재계약 완료 시 발송. 계약 정정(CORRECT)은 시스템 입력값 정정 목적이므로 발송 제외 (v1.9 추가, Backoffice 기획 §1.1.8.2)
- 조건부 수신 대상 (v1.9 추가, Backoffice 기획 §1.1.8.2): 신규 계약 수신 기본 — Master Admin(지정된 경우) + 세일즈 담당자 + Backoffice Admin/Operator. 최초 계약 시 Master Admin 미지정 상태이면 MA 제외하고 발송 (신규 Org 온보딩 직후 MA 미존재 케이스 대응)
- 계약 복원 사후 통지 (BOF-C-16): Terminated → Active 복원 시 Master Admin 통지
- 재시도 정책 (BOF-AL-06): 발송 실패 시 1시간 간격 최대 3회 재시도, 최종 실패 시 (a) Backoffice Admin 인앱 알림 발송 (b) 감사 로그 기록 (v1.9 추가, Backoffice 기획 §1.1.8)
- 계약 상세 화면 액션 버튼 노출 매트릭스 (v1.9 추가, Backoffice 기획 §1.1.10): Contract 5-상태(SCHEDULED/ACTIVE/SUPERSEDED/EXPIRED/CANCELLED)별로 [계약 연장]/[계약 정정]/[계약 취소]/[계약 종료]/[계약 복원] 버튼 활성화/비활성화 조건 매트릭스 구현. M0 Contract 머신과 연동
- 이벤트 카탈로그 편입 (A1): 이메일 발송/재시도/최종 실패 이벤트를 Backoffice Activity Log에 기록
참고
- confluence/기획 문서/00. Common (공통 정책)/Backoffice 기획 (§1.1.8, BOF-C-13/15/16, BOF-AL-06)
의존 M0 (Contract 5-상태 머신), A1 (이벤트 카탈로그)
DoD 임의의 Contract에 대해 종료일 D-90/30/7/1 시점 자동 이메일이 발송되고, 실패 시 3회 재시도 후 감사 로그가 남는다. 신규 Contract 생성 시 안내 메일이 발송된다.
PLAN-Z 미결: A5를 M0 일부로 합칠지 별도 Phase 유지할지 결정 (현재 별도 유지 — Contract 머신 완료 후 착수)
우선순위 근거. 케이스 필드별 변경 전/후 값은 Audit Log가 아니라 Audit Trail에만 기록된다는 공통 정책이 명시되어 있다. Main Stream에서 최소 원장은 M7c에서 이미 구현하고, S1에서는 검사/보안심사 대응용 조회·비교·Export를 완성한다.
구현 항목
- Audit Trail 4-Level 분류 (Category / Classification / Action / Element) - Category 분류 (Case Audit Trail.md, 26.05.15 갱신): Case / User Context (Comment 정의 완료, 26.05.15) / Workflow Action(추후) — 현 Phase는 Case + User Context Comment 범위 - User Context > Comment 추적 (v1.10, Case Audit Trail.md 감사 로그 카테고리 표 26.05.15): 사례 의견(케이스 의견) NEW/EDIT/DELETE 발생 시 Category=User Context, Classification=Comment, Element=Comment, Value=해당 코멘트 입력 값, Performer=행위자 유저 이름으로 자동 기록. M9 채팅형 코멘트 입력 훅에서 호출 (Workflow Chat 타임라인과 별개 저장소 — D-5 결정 결과와 정합) - Performer 분류: User / System (고정) / AI (추후) - 단일 저장 시점 User/System 액션 혼재 → 별개 행 분리 (예: Case FU 생성 시 2개 행 동시 생성)
- 저장 이벤트 훅 고도화 (User vs System Performer 분리)
- SavePoint Revision Sequence
- 반복 필드 식별 인덱스 (Case Audit Trail.md L124~142): Classification은 "명칭+숫자"(Event 2, Product 1), Element는 "필드명+숫자"(Indication (MedDRA code) 1). 복합 관계 필드는 "Product 1 Event 1" 형식
- Case Audit Trail 페이지 (그리드, Date Range, 키워드)
- 조회 기본 기간 1년 (Case Audit Trail.md L155~156): 디폴트 최근 1년 자동 설정
- 3-Level 계층 조회 (Case Audit Trail.md L26~30): Level 1(Case ID) → Level 2(Report Type — Initial/FU별 분리) → Level 3(Save Point)
- Detail 모달 (SavePoint 체크박스 다중 선택, 합산)
- Excel Export + 워터마크 (추출자/일시)
- PLAN-AE 미결 (Audit Trail Category 'Workflow Action' Phase 배치, v1.10 범위 축소): 26.05.15 갱신으로 User Context Comment는 본 Phase 범위로 정의됨. 'Workflow Action' 카테고리만 "추후 적용" 잔존 — M9 Workflow Phase에 편입할지, S1 고도화 일부로 처리할지 본 Phase 착수 전 결정
참고
- confluence/기획 문서/01. SafetyDB/Case Audit Trail
우선순위 근거. Main Stream 최소 Validation Slice 이후에도 식약처 AE Type 자동 분류와 MFDS Regional Required Field 정합은 제출 품질에 직접 영향을 준다. 따라서 S2 활성 범위는 Mapping Rule과 PLAN-AH만 유지하고, Field Type 일반화·Message Profile·Auto Narrative 등 확장 Validation은 Release2로 분리한다.
구현 항목
- Mapping Rule (ICSR Config): 평가 결과 키워드 → 식약처 AE Type
Related자동 분류 규칙을 등록·적용한다. - 빈 행 SAVE 비활성화 (v1.9, Mapping Rule.md 사용자 입력 규칙): 텍스트 필드 행 생성 후 내용이 비어 있으면 상단 SAVE 버튼을 자동 비활성화한다.
- 대소문자 구분 없음 (v1.9): 영문 입력 시 대소문자를 구분하지 않고 키워드를 매칭한다.
- PLAN-AH 추가 — C.2.r.4.KR.1 Regional Required Field 분류: S2 Field Type 분류 시
C.2.r.4.KR.1 Other Health Professional Type을 Regional Required Field(MFDS 전용)로 명시 등록한다.
Release2 / 고도화로 분리
- Field Type 전체 체계 일반화, 국가별 Message Profile, Partner Exchange Core/Regional Rule, Validation Rule Builder, Auto Narrative는 Release2 범위로 분리한다.
- Auto Narrative는 현재 기획 미작성 상태이므로 Release2 착수 전 본문 작성이 선행되어야 한다.
참고
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config/Mapping Rule
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case Edit_Field Type (PLAN-AH C.2.r.4.KR.1 Regional Required Field 등록에 한정)
- confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config/Auto Narrative (Release2, 기획 미작성)
의존 M7a (Reporter C.2.r.4.KR.1 필드), M5b (AE Type 분류 엔진), M3a (ICSR Config 화면 골격)
DoD Mapping Rule에 등록한 평가 결과 키워드가 대소문자 구분 없이 매칭되어 식약처 AE Type Related 자동 분류에 반영된다. 빈 텍스트 행이 존재하면 SAVE가 비활성화된다. C.2.r.4.KR.1은 MFDS Regional Required Field로 분류표에 등록된다.
우선순위 근거. 사망/태아/검사/병력은 일부 케이스에서 보고 품질과 XML 필수성에 직접 영향을 준다. 빈도 추정치가 아니라 문서상 필드·트리거·연동 규칙이 존재한다는 점을 근거로 상위 우선순위에 둔다.
구현 항목
- Patient > Medical History (D.7.r 병력, D.8.r 병용약, MedDRA/WHODrug 팝업) - D.7.2 None 자동 출력 (Medical History.md 4.3, L129~133): D.7.1/D.7.2 모두 비어있고 Destination=MFDS인 경우 보고 시 'None' 자동 출력 - D.7.3 Concomitant Therapies 자동 True (Medical History.md 3, L104): Concomitant Therapy Type/Text 입력 시 D.7.3 자동 True
- Patient > Death (D.9, 사망 케이스 트리거: E.i.3.2a / E.i.7=5) - D.9.1 → D.9.3 조건부 필수 (Death.md 3, L70~72): 사망일 입력 시 부검 여부 필수 활성 - E.i.7=5 트리거 검증 (v1.9 DoD 추가, Event.md §3 L118): E.i.7(Outcome)=5(Fatal) 시 D.9 활성화 검증 시나리오를 본 Phase DoD에 포함
- Patient > Test (F.r 검사 결과, IVL_PQ XML 변환, MedDRA SOC 제한) - 삼원 검증 (Test.md 3, L80): F.r.3.1(코드) / F.r.3.2(수치+qualifier) / F.r.3.4(텍스트) 중 1+ 필수 - IVL_PQ 한정기호 5종 XML 변환 (Test.md 4.2, L98~107): 없음/>/</>=/=< 5종 각각의 XML 구조 - F.r.7 → C.1.6.1 연동 (Test.md 3, L83): F.r.7=Yes 시 C.1.6.1 확인, False일 경우 해당 필드로 강제 바로가기
- Patient > Parent (D.10 부모 정보, 태아/신생아 케이스) - D.10.7.1.r.3 Continuing → D.10.7.1.r.4 End Date 비활성 (Parent.md 4.2, L127~131): Continuing=True 시 End Date 삭제 + 비활성
- PLAN-M 미결 (D-4): Medical History D.8.r.1.KR.1a/1b, Parent D.10.8.r.1.KR.1a/1b는 WHODrug 팝업 의존. S3는 WHODrug Release2보다 우선. S3 착수 시 WHODrug 팝업 없이 Free text 처리 / 또는 Release2까지 해당 필드 보류 결정 필요
참고
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient/Medical History
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient/Death
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient/Test
- confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient/Parent
우선순위 근거. Main Stream의 수동 Follow-up 이후, Amendment/Nullification 분기와 Tracker [+] 기반 FU 생성 정책을 정비해야 후속보고 운영이 안정화된다. XML Import/Data Hub 대량 인입은 본문 준비도가 낮고 Release2 범위로 명확히 분리한다.
구현 항목
- Amendment / Nullification 후속 생성 분기 — C.1.5 상속 규칙(후속보고 순번 부여.md 104): 이전 케이스 C.1.5를 그대로 복사 상속한다.
- Tracker FU 자동 생성 ([+] 버튼) 정책 정비: M4의 Manual FU 생성 흐름과 정합되도록 [+] 버튼에서 Follow-up / Amendment / Nullification 선택·상속·SEQ 표시 정책을 정리한다.
Release2 / 고도화로 분리
- XML Import, Data Hub Import History, XML 기반 중복 판별 Logic A, Import Status 5단계, 배치 레벨 AE/AR 오류 신규 배치 생성, Import Summary Card, Task 30건 한도 등 Import 관련 내용은 Release2 범위로 분리한다.
XML Import.md본문은 현재 부족하므로 Release2 착수 전 파이프라인 단계·상태값·오류 처리·중복 처리 기획을 별도 작성한다.
참고
- confluence/기획 문서/01. SafetyDB/Rule & Logic/중복 후속 판별 로직/후속보고 순번 부여 및 탐지 로직 (Amendment/Nullification, C.1.5 상속)
- confluence/기획 문서/01. SafetyDB/Tracker ([+] 버튼 FU 생성 진입점)
- confluence/기획 문서/01. SafetyDB/Data Hub/XML Import (Release2)
- confluence/기획 문서/01. SafetyDB/Data Hub/Import History (Release2)
의존 M5c (후속 SEQ), M4 (Tracker [+] 진입점), M7a~M9 (Case Edit/Workflow 저장·잠금 정책)
DoD Tracker [+]에서 Amendment/Nullification 후속 생성 정책이 명확히 적용되고, 생성된 후속 케이스는 이전 케이스의 C.1.5를 그대로 상속한다. Import 관련 기능은 활성 S4 범위에 포함되지 않고 Release2 백로그로 추적된다.
우선순위 근거. 운영 안정화 후. Multi-Org 정책과 Backoffice 기획에서 고도화 / Phase 2 로 명시. 단일 S10으로 묶으면 보안/법무/운영 범위가 섞이므로 아래 2개 트랙으로 분리한다.
S10a Terminated Org Data Export
- ONB-05 계약 종료 후 데이터 추출: Terminated Org의 데이터를 D+60 보존 기간 내 추출
- 운영 모델 (Backoffice 기획 §1.1.14, Multi-Org 정책): 세일즈 담당자를 통해 요청 후 내부에서 제공하는 수동 운영 채널. 시스템 자동화 추출 기능이 아님 — Sub Stream 배치는 운영 SOP 정비와 Backoffice Operator 권한·로그 분리 처리가 본 트랙의 목적
- 추출 행위는 A1 이벤트 카탈로그에 따라 Backoffice Audit Log + 해당 Org Audit Log 양쪽에 기록
- Gate: Terminated Org 추출 승인권자, 요청 채널, 추출 파일 보관/폐기 정책, 법무/보안 승인
Backoffice Audit Log / Backoffice Activity Log 조회 화면과 CSV Export는 A2/A3에서 처리. A4에서 Backoffice 통합 조회 화면이 추가됨.
S10b Break-Glass 고도화
- 접근 요청 / 승인 / 거부 / 직권 접근 / 사후 통지 흐름 (Audit Log doc 6.1.2 "추후" 표기 부분)
- 시간 제한, 승인 미응답 시 직권 접근, 사후 Org Admin 전원 통지
- Gate: 접근 사유 taxonomy, 승인권자, 고객 통지 정책, 사후 리뷰 주기 승인
참고
- confluence/기획 문서/00. Common (공통 정책)/Multi-Org 구조 및 관련 정책 (11번 고도화, ONB-05, 8.4 Break-Glass)
- confluence/기획 문서/00. Common (공통 정책)/Backoffice 기획 (S10a 운영 모델)
5. 의존성 그래프 (Cross-Phase)#
flowchart TD
M0["M0
Multi-Org / Backoffice"]:::todo
A1["A1
Log 인프라
(S 트랙 전 선행)"]:::audit
A5["A5
계약 알림 시스템
(S 전 선행)"]:::audit
M1["M1
Account & Login"]:::todo
M2["M2
Home Nav / Org Admin"]:::todo
A2["A2
Org Log 조회 화면"]:::audit
A3["A3
Log Export + 보존"]:::audit
M3a["M3a
Case ID / Sender"]:::todo
M3b["M3b
Product 설정 + RSI"]:::todo
MedDRA(["MedDRA 라이선스"]):::ext
M4["M4
Tracker + Manual Intake"]:::todo
M5a["M5a
스키마 + 보고 출처"]:::todo
M5b["M5b
AE Type + RA Due"]:::todo
M5c["M5c
상태 머신 + Logic B + SEQ"]:::todo
M6["M6
검색 팝업"]:::todo
M7a["M7a
Case Edit + Case"]:::todo
M7b["M7b
Patient + Drug"]:::todo
M7c["M7c
Event + Trail 훅"]:::todo
M8["M8
Assessment + Narrative"]:::todo
M9["M9
Workflow"]:::todo
M10["M10
SafetyDB Config"]:::todo
M11a["M11a
Submission List + 상태"]:::todo
M11b["M11b
배치 + AS2"]:::todo
M12["M12
Monitoring + ACK"]:::todo
A4["A4
Backoffice 통합 조회
(S 전 선행)"]:::audit
S1late(["S1 Audit Trail 고도화
(이후 분기)"]):::todo
MS{{"🎯 Main Stream 종료"}}:::milestone
SL{{"SL
Soft Launch Gate"}}:::gate
GA{{"GA
GA Gate"}}:::gate
ATrack(["A1~A5
A 트랙 선행"]):::audit
SubAll(["S1~S4, S10
S 트랙"]):::todo
M0 -.-> A1
M0 -.-> A5
M1 --> M2
M2 -.-> A2
A2 -.-> A3
M2 --> M3a
M3a --> M3b
M3a --> M10
M3b --> M4
M4 --> M5a
M5a --> M5b
M5b --> M5c
M5b --> M8
M5c --> M6
M3b --> M6
MedDRA --> M6
M6 --> M7a
M7a --> M7b
M7b --> M7c
M7c -.-> S1late
M7c --> M8
M8 --> M9
M9 --> M11a
M11a --> M11b
M11b --> M12
M12 -.-> A4
M12 --> MS
MS --> SL
MS --> GA
MS --> ATrack
ATrack --> SubAll
classDef todo fill:#ffffff,stroke:#a1a1aa,color:#3f3f46,stroke-width:1.5px;
classDef audit fill:#dbeafe,stroke:#2563eb,color:#1e3a8a,stroke-width:2px;
classDef ext fill:#fce7f3,stroke:#be185d,color:#831843,stroke-width:1.5px,stroke-dasharray:4 2;
classDef gate fill:#fce7f3,stroke:#be185d,color:#831843,stroke-width:2px;
classDef milestone fill:#fef3c7,stroke:#b45309,color:#78350f,stroke-width:3px;
실선 = 필수 의존, 점선 = 조건부/선택적 분기. A 트랙은 S 트랙보다 먼저 진행하며, 운영 가시성 필요 시 Main Stream 후반부터 병행 가능. 외부 의존 전체 목록은 아래 체크리스트 참조.
외부 의존성 체크리스트 (Phase 착수 전 확보 필수)#
| 외부 의존 | 차단 Phase | 상태 |
|---|---|---|
| MedDRA 라이선스 + 분기 버전 동기화 | M3b/M6/M8 | 미확정 |
| WHODrug Vendor Dictionary 라이선스/DB 또는 API 연동 방식 | M6/M7b/S3 | 미확정 |
| NeDrug API 또는 DB 파일 연동 방식 | M6/M7b | 미확정 |
| MFDS 성분코드 API/DB | M3b/M7b/M11b | 미확정 |
| GSRS API 또는 성분 Dictionary | M3b | 미확정 |
| EDQM Dose Form/Route + UCUM constrained code table | M7b/M11b | 미확정 |
| MFDS AS2 게이트웨이 Test 계정 | M11b/M12 | 미확정 |
| 공휴일 마스터 데이터 (2영업일 계산) | M11b/M12 | 미확정 |
| 법인명/개인정보 보호책임자 정보 | Soft Launch/GA | 미확정 |
미확정 항목은 해당 Phase 착수 전 반드시 확보 상태로 치환한다. 미확정 상태가 남아 있으면 해당 Phase 착수 불가로 처리한다.
6. 기획 미작성 / 본문 부족 문서 — 개발 전 작성 선행 필요#
아래 문서는 frontmatter만 존재하거나 변경 이력 헤더만 있음 — 해당 Sub Stream/Phase 착수 전에 기획 본문을 반드시 완성해야 함.
| 문서 | 현 상태 | 영향 Phase | 비고 |
|---|---|---|---|
| confluence/기획 문서/01. SafetyDB/Data Hub/XML Import | 섹션 2.7만 작성 | Release2 | Import 관련 내용은 S4 활성 범위에서 제외. Release2 착수 전 5단계 변환 파이프라인 각 단계별 상태값 정의 등 본문 작성 필요 |
| confluence/기획 문서/01. SafetyDB/Submission/Submission List | 메타만 존재 | M11a | 상위 Submission.md가 SSoT — 본 문서는 통합/삭제 결정 필요 |
| confluence/기획 문서/01. SafetyDB/Submission/Submitting Monitoring | 메타만 존재 | M12 | 상위 Submission.md가 SSoT — 본 문서는 통합/삭제 결정 필요 |
| confluence/기획 문서/01. SafetyDB/Configuration | 본문 1줄("Safety Admin과 동일한 화면") — 사실상 shell (v1.11 신규 식별) | M10 | 컨테이너 성격이나 §7 인덱스로 보기 어렵고 하위 2건과 함께 본문 보강 필요 |
| confluence/기획 문서/01. SafetyDB/Configuration/Case ID (Safety Config) | spec-by-reference: "Org Admin Case ID 그대로 read only 표시" 한 문장 (v1.11 신규 식별) | M10 | 제약사 모드만 정의, CRO 모드 동작 미정 (Sender Safety Config과 동일 미결) |
| confluence/기획 문서/01. SafetyDB/Configuration/Sender (Safety Config) | spec-by-reference: "제약사 Read Only, CRO 다르게 적용" 두 문장 (v1.11 신규 식별) | M10 | CRO 모드 본문 미작성 — M10 착수 전 CRO 분기 사양 작성 선행 필요 (M10 Gate 차단 조건) |
| confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config/Auto Narrative | 변경 이력만 | Release2 | S2 활성 범위에서 제외. Auto Narrative 본문 작성 필요 |
| confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config/Partner | 완전 빈 문서 | Release2 | CRO 파트너 관리 기획 작성 필요 |
| confluence/기획 문서/01. SafetyDB/Submission/Submission List (trash) | 2026-05-14 trash 이동, SSoT=Submission.md | M11a | 영구 삭제 또는 archival 결정 (PLAN-P) |
| confluence/기획 문서/01. SafetyDB/Submission/Submitting Monitoring (trash) | 2026-05-14 trash 이동, SSoT=Submission.md | M12 | 영구 삭제 또는 archival 결정 (PLAN-P) |
6.1 기획 문서 간 정합성 미결 (Plan Reconciliation)#
본문은 작성되어 있으나 문서 간 정합성이 깨진 항목. 해당 Phase 착수 전 기획팀이 일관성을 확정해야 함.
| # | 미결 항목 | 충돌 문서 | 영향 Phase | 비고 |
|---|---|---|---|---|
| PLAN-A | RA Triage 단계 위치 — Submission.md 2/3.1은 Workflow 단계 "RA Triage"가 Submission Draft 트리거로 명시. Tracker/Workflow.md v11은 Entry/QC/MA/Approval/Completion 5단계만 정의 — RA Triage 미정의 | Submission.md ↔ Workflow.md | M9 (단계 수 확정 → M11a 트리거) | (a) QC/MA의 하위 액션 (b) 별도 6번째 단계 — 둘 중 결정 |
| PLAN-B | Submission List/Monitoring 하위 페이지 vs Submission.md (SSoT) — 하위 페이지가 메타만 존재해 잘못 참조될 위험 | Submission.md ↔ Submission/* | M11a/M12 | 하위 페이지 통합 또는 삭제 결정 |
| PLAN-C | Auto Narrative 위치 — ICSR Config 하위에 있으나 본문 없음. 실제 동작은 Narrative 입력 Assist이므로 Case Edit 측 정합성 검토 필요 | ICSR Config/Auto Narrative ↔ Case Edit/Narrative | Release2 | S2 활성 범위에서 제외. Release2 기획 본문 작성 시 위치 재결정 |
| PLAN-D | Multi-Org 11.3 미결 12건 (Cross-Org/Additional Org/Workspace 이름 변경 권한 등) | Multi-Org 11.3 | Release2 / 고도화 | 우선순위 별도 정렬 필요 |
| PLAN-E | Backoffice 운영 행위 로그 보존 기간 미정 + 문서 간 표현 충돌 — Multi-Org 8.3은 "내부 정책 결정 후 반영(미결 #4)" 이나 Audit Log doc AUD-12는 "Backoffice 로그 보존: 계속 보관" 으로 서로 다르게 기술. Org 측은 "Active 전체 + Terminated D+60"으로 확정. Backoffice 측 결정과 두 문서 표현 정합 양쪽이 필요. (v1.9 확장) 개인정보 처리방침 §3은 "감사 로그 D+60 보존 후 완전 삭제"로 기술 — Backoffice 로그 "계속 보관" 정책과 정합 검토 필요 (Soft Launch Gate 법무 리스크) | Multi-Org 8.3 ↔ Audit Log doc AUD-12 ↔ 개인정보 처리방침 §3 | A3 착수 전 (규제 감사 리스크) | A3에서 보존/삭제 enforcement 구현 전에 (1) 보존 기간 확정, (2) 세 문서 표현 동기화 필요 |
| PLAN-F | N.1.5 / N.2.r.4 / C.1.2 타임스탬프 세팅 정책 — Submission.md v78 2026-04-28에 한 차례 정정됨("N.1.5만 세팅"). 향후 배치 재생성·Amendment·Nullification 시 C.1.2 갱신 규칙은 별도 명세 필요 | Submission.md 3.3 + 후속보고 로직 | M11b / S4 | C.1.2 갱신 트리거 케이스(케이스 내용 변경)와 비갱신 케이스(배치 재생성)의 경계 명시 필요 |
| PLAN-G | Workspace 홈 본체 + 공지사항 고도화 Phase 배치 — Home Navigation doc 1.3는 Workspace 홈 본체와 공지사항·다가오는 보고 마감일 위젯을 "고도화"로 명시. Org Admin doc 9 공지사항도 "고도화" — 어느 Sub Stream에 배치할지 미정 | Home Navigation 1.3 ↔ Org Admin 9 | Release2 또는 신규 Sub Stream | 단일 Workspace 홈 위젯 + 공지사항 트랙 신설 또는 Release2 운영 고도화 묶음 결정 |
| PLAN-H | MFA 멀티 Org 분기 — Account doc 줄 395: 단일 Org는 로그인 후 즉시 MFA, 멀티 Org는 조직 선택 후 해당 Org MFA. M1/M2는 단일 Org 전제이나 멀티 Org MFA 흐름이 어느 Phase에서 구현될지 미정 | Account doc 5.x | M1/M2 또는 Release2 | Release2 External User 착수 전에 단일 Org/멀티 Org MFA 흐름 분기 확정 |
| PLAN-I | Study N.2.r.3 ↔ M11a Receiver 10종 코드 연계 — Study Config(N.2.r.3 Message Receiver Identifier)가 M11a Receiver 자동 결정/Override하는지 미정. 임상 케이스(C.1.3=2) 제출 흐름에 직접 영향 | Study.md 33 ↔ Submission.md 79 ↔ M11a 구현 | Release2 + M11a | Study 사전 설정 N.2.r.3 → Receiver 자동 매핑 vs M11a 수동 선택 우선 결정 |
| PLAN-J | Import 파이프라인 5단계 명칭 충돌 — 케이스 상태.md 64-74 vs Import History.md 2.3. 추가로 케이스 상태.md 31-32 'Triage' 단계가 Import History.md에는 없음. (v1.9 확장) 케이스 상태.md 자체 내부 표(L28~32: ...→Triage)와 텍스트(L67~73: ...→Case Creation)도 5번째 단계 명칭 불일치 — 동일 문서 내부 모순 포함 | 케이스 상태.md (내부 + 외부) ↔ Import History.md | Release2 | Import 관련 내용은 S4 활성 범위에서 제외. Release2 착수 전 단일 단계 체계로 정합 (Triage vs Case Creation 결정) |
| PLAN-K | Close / Archived 케이스 상태 구현 Phase 배치 — 케이스 상태.md 50: "Close / Archived [추후 고도화 예정]". 로드맵 어느 Phase에도 미배치 | 케이스 상태.md 50 | 미배치 | S10 또는 신규 Sub Stream 결정 |
| PLAN-L | Source 섹션 Literature 필드(C.4.r.1/C.4.r.2) R1 트랙 부재 + Source 비활성 시 Case 저장 정책 — Source.md 27-28: Literature 필드는 Release 2 표기 없음(=R1). M7a 참고 기획서에 Source 미포함, Release2 Study는 Study 전용 — Literature 처리 Phase 없음. (v1.9 확장) Source 섹션은 Case 섹션 저장 단위(Case.md §저장 정책 L17)에 포함 — Source 전체 비활성 시(C.1.3≠2) Case 섹션 저장 버튼 동작 정책 명확화 필요 | Source.md 27-28 + Case.md L17 | M7a 또는 Release2 | M7a Reporter 옆 Source 섹션 R1 범위(Literature)만 별도 배치할지, Release2 Study/Source로 보낼지 결정 + Source 비활성 시 저장 동작 결정 |
| PLAN-M | WHODrug 의존 필드 — S3 vs Release2 착수 순서 — Medical History D.8.r.1.KR.1a/1b, Parent D.10.8.r.1.KR.1a/1b는 WHODrug 팝업 의존. S3는 WHODrug Release2보다 우선. (v1.9 확장) Drug 2의 G.k.2.3.r.2a/b TermID도 동일 WHODrug 팝업 의존 — Drug 2(M7b) 착수 시점에도 동일 결정 필요 | Medical History 3 / Parent 2.1 / Drug/2.md §2.1 ↔ S9 | M7b/S3/Release2 | M7b 착수 시 Drug 2 TermID는 Free text 또는 Release2까지 보류, S3 착수 시 Medical History/Parent WHODrug 필드도 동일 결정 일괄 적용 |
| PLAN-N | 알림 위치 — 사이드바 vs 헤더 문서 충돌 — Notification doc 1.4(사이드바) vs Home Navigation doc 2.3 26.04.15 변경이력(헤더). 헤더가 최신이나 Notification doc은 미정합 | Notification.md ↔ Home Navigation.md | Release2 | Notification doc 본문 정합 작업 선행 |
| PLAN-O | Lock 시점 — Workflow vs Case Edit 충돌 + Workflow.md 내부 모순 — Workflow.md 3.2.4: Approval 단계 진입 시 Lock / Case Edit.md 4.1: Approved 이후 Read-only. 두 문서 표현 다름. (v1.9 확장) Workflow.md 자체 내부에서도 3.2.4(진입 시 Lock)와 4.5절 표(Approved 처리 완료 시 Lock)가 충돌 — 동일 문서 내부 모순 포함 | Workflow.md (3.2.4 vs 4.5) ↔ Case Edit.md 4.1 | M9 / M7c | 세 시점(Approval 진입 / Approved 완료 / Case Edit Read-only) 중 단일 기준 확정 |
| PLAN-P | Submission List/Submitting Monitoring trash 2건 처리 — 2026-05-14 trash 이동, SSoT는 Submission.md. 매핑표 #46/#47은 trash 표시 정정 완료. 후속 trash 정리 정책 필요(영구 삭제 vs 보존) | Submission/* 하위 페이지 | 운영 정책 | trash 영구 삭제 또는 archival 정책 결정 |
| PLAN-Q | 다중 기기 동시 접속 제어(SES-04/LGN-60) — Account doc "추후 반영" 표기. Sub Stream 어디에도 미배치 | Account doc 5.2 | 미배치 | 신규 Sub Stream 또는 M1/M2 후속 항목으로 배치 |
| PLAN-R | 세션 초기화 대상 페이지·액션 정의(SES-02) — Account doc 줄 309 "추후 별도 기획 정의 예정". M2 Gate에서 해소 필요 | Account doc 5.1 | M2 | 초기화 트리거 범위 본문 작성 |
| PLAN-S | AE Type 차트 'Death' 세그먼트 출처 — Dashboard.md 208은 'Death' 별도 세그먼트로 표기. AE Type 분류.md는 SUSAR(사망/치명적) 1종에 포함 — 데이터 소스 차이 | Dashboard.md ↔ AE Type 분류.md | Release2 / M5b | E.i.3.2a 값에서 별도 파생 / SUSAR 재레이블링 결정 |
| PLAN-T | My Profile Name 필드 허용 문자(D-1) — PRF-13(한글/영문/숫자/공백/, . -) vs Home Navigation doc 2.3(영문/숫자/공백/, .) | Account doc PRF-13 ↔ Home Navigation 2.3 | M2 | 한글·하이픈 허용 여부 단일 결정 |
| PLAN-U | Audit Log doc D-4(관리자 잠금 해제 항목 잔존) — Account doc 26.04.17에서 관리자 잠금 해제 기능 제거. 그러나 Audit Log doc 6.2.1은 "관리자 해제→Audit Log" 항목 유지 | Audit Log 6.2.1 ↔ Account doc | A1 카탈로그 등록 전 | 카탈로그에서 항목 제거 또는 Backoffice 직권 해제로 재정의 |
| PLAN-V | Tabulator Phase 1 데이터 관리 미결 — 회의록 60~66: 개선안 A(자체 DB 없음) vs B(Intake Hub) 미결. v1.6 S8 본문은 A 가정. 회의록 124 'Library 저장', 126-134 '2/3단계 순서', 183-185 '과금 세부' 미결 다수 | 02. Tabulator 회의록 | Release2 | A/B 결정 + 미결 항목 일괄 정리 |
| PLAN-W | Workspace Sender 화면 위치 + 국내 강제/국외 선택 상속 토글 v1 범위 + EDQM 코드 테이블 조회 — Sender.md 34-43은 Workspace Level Sender 토글(국외만) 정의. Org Admin / App Admin / 별도 화면 중 어디인지 미정. (v1.9 확장) 와이어프레임 #1·#2 "고도화 예정" 표기가 v1 포함 여부와 정합 불일치. 또한 EDQM Dose Form/Route ID↔Term 매핑 조회 방식(DB 내장 vs 외부 API) M7b Gate에서 함께 결정 | Sender.md ↔ M3a 화면 범위 ↔ Drug/3.md L43,L46 | M3a / M7b | (a) 단일 화면 위치 결정 (b) Workspace 상속 토글 v1 포함 여부 결정 (c) EDQM 코드 테이블 조회 방식 결정 |
| PLAN-X | Products WHO Medicinal Product ID vs WHODrug Code 동일 여부 — Products.md 27 / Licenses.md 32 동일 필드 존재. M3b 구현 항목 "WHODrug 필드는 Release2까지 비활성"과 정합 검토 필요 | Products.md ↔ Licenses.md | M3b / Release2 | 동일 필드 / 별개 필드 결정 |
| PLAN-Y | Drug 시퀀스 저장 단위 표현 통일 — Drug.md L19-22 "시퀀스 단위 일괄 저장" vs v1.6 M7b "탭 단위" — v1.7 본문 정정 + v1.8 매트릭스/DoD 잔존 2건 정정으로 종결 | Drug.md ↔ 로드맵 M7b | (종결) | |
| PLAN-Z | A5 계약 알림 시스템 Phase 경계 — v1.8 신설 A5(D-90/30/7/1 + 재시도)를 M0 일부로 합칠지 별도 Phase 유지할지 결정. 현재 별도 유지 (Contract 5-상태 머신 완료 후 착수) | Backoffice 기획 §1.1.8 ↔ M0/A5 | A5 착수 전 | M0 확장 vs A5 별도 결정 |
| PLAN-AA | Logic B Manual 시나리오 2 (C.1.8.1 입력 있을 때) 처리 방향 — 중복 로직.md L60은 시나리오 1(C.1.8.1 없을 때)만 정의하고 시나리오 2 처리 로직은 본문 공백. Manual Intake에서 사용자가 C.1.8.1을 직접 입력한 경우 Logic A(XML) 동등 처리할지, Logic B 필드 전수 비교로 처리할지 결정 필요 | 중복 로직.md L60 | M5c / M4 (착수 차단 가능성) | 시나리오 2 처리 로직 명세 추가 후 M5c 구현 |
| PLAN-AB | Manual Intake 인과성 KRCT/WHO-UMC [필수] vs [선택] 충돌 — Manual Intake.md 3.1 필드 명세는 KRCT(G.k.9.i.2.r.3.KR.2)/WHO-UMC(G.k.9.i.2.r.3.KR.1)를 [선택]으로, 5절 제안 구조는 [필수]로 표기. 동일 문서 내부 충돌 | Manual Intake.md 3.1 vs 5절 | M4 | 동일 문서 내 일관 표기 확정 |
| PLAN-AC | Source 'k' (국외 출처불명 파트너사) SAE/ADR/AE 정기보고 기준일 결정 — 보고 기한 설정.md L42~45 정기보고 매트릭스에서 Source 'k'에 대한 SAE/ADR/AE 정기보고 기준일이 누락. Group B에 속해 SADR 신속보고 15CD는 적용되나 정기보고 행 부재 | 보고 기한 설정.md L42~45 | M5b (RA Due 엔진 정확도) | a/f/g 동등 처리 / 별도 기준일 / 보고 대상 아님 중 결정 |
| PLAN-AD | Manual FU 3종 유형 모달 Main Stream 지원 범위 — 후속보고 순번 부여.md L84~88은 [+] 버튼 클릭 시 3종 유형(Follow-up/Amendment/Nullification) 선택 모달 명시. M4는 Follow-up만 처리하고 Amendment/Nullification는 S4로 분리하나 모달 자체의 노출 범위 미정합 | 후속보고 순번 부여.md L84~88 ↔ M4/S4 분리 | M4 / S4 | (a) 모달 전체 노출 + Amendment/Nullification는 S4 의존 처리 (b) M4는 Follow-up만 모달 노출 중 결정 |
| PLAN-AE | Audit Trail Category 'Workflow Action' 착수 Phase 배치 (v1.10 범위 축소) — Case Audit Trail.md 26.05.15 갱신으로 User Context > Comment 행은 정식 정의(비고란 "추후 적용" 없음, S1 본 Phase 범위 확정). 'Workflow Action' 카테고리만 "추후 적용" 잔존 — M9 Workflow Phase 완료 후 어느 Phase에서 구현할지 미정 | Case Audit Trail.md (Workflow Action 행) | M9 vs S1 | M9 편입 / S1 고도화 일부 중 결정 |
| PLAN-AF | Tracker Workflow 필터 'Close' vs Workflow.md 'Complete' 용어 정합 — Tracker.md 4.1 Workflow 컬럼 필터 옵션에 "Close" 포함. Workflow.md 단계 정의는 Entry/QC/MA/Approval/Complete로 "Complete". Close=Complete 동일 표기인지 별도 상태인지 미정 | Tracker.md 4.1 ↔ Workflow.md 단계 정의 | M4 / PLAN-K 연계 | 용어 통일 결정 (Close 또는 Complete 단일 표기) |
| PLAN-AG | UM-50 '진행중 케이스 Owner/Assignee 시 비활성화 불가'의 Backoffice 적용 여부 — Account doc UM-50은 Org Admin 측 비활성화 조건. Backoffice Admin의 BOF-U-05 비활성화에도 동일 규칙이 적용되는지 미정. Backoffice 기획 §3.3에는 "계약 종료 전 Master Admin 비활성화 불가"만 명시 | Account doc UM-50 ↔ Backoffice §3.3 | M1 / M4 enforcement 범위 | Backoffice 적용 여부 결정 → M4 케이스 도입 후 enforcement 적용 범위 명시 |
| PLAN-AH | C.2.r.4.KR.1 Other Health Professional Type Regional Required Field 분류 — Reporter.md §2.1 L54 옵션값 "1=Nurse / 2=Other". KR 전용 필드로 S2 Field Type 분류 시 Regional Required Field(MFDS 전용)로 명시 등록 필요 | Reporter.md §2.1 L54 ↔ Case Edit_Field Type.md | S2 | Field Type 분류 시 Regional Required Field로 등록 절차 확정 |
7. 컨테이너/인덱스 문서 — 개발 항목 없음 (참고용)#
아래는 Confluence 페이지 계층의 부모 노드로만 기능하며 자체적인 개발 요구사항 없음.
| 문서 | 역할 |
|---|---|
| confluence/기획 문서/IVIGILANCE SQUARE 구조 | 플랫폼 전체 인덱스 |
| confluence/기획 문서/00. Common (공통 정책) | Common 카테고리 인덱스 |
| confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin) | Admin 다이어그램 링크만 |
| confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/Company Config | Company Config 인덱스 |
| confluence/기획 문서/00. Common (공통 정책)/Admin (Org Admin)/ICSR Config | ICSR Config 인덱스 |
| confluence/기획 문서/01. SafetyDB | SafetyDB 인덱스 |
| confluence/기획 문서/01. SafetyDB/Rule & Logic | Rule & Logic 인덱스 |
| confluence/기획 문서/01. SafetyDB/Rule & Logic/AE Type 분류 로직 | AE Type 분류 인덱스 |
| confluence/기획 문서/01. SafetyDB/Rule & Logic/중복 후속 판별 로직 | 중복/후속 인덱스 |
| confluence/기획 문서/01. SafetyDB/Data Hub | Data Hub 인덱스 |
| confluence/기획 문서/01. SafetyDB/검색 팝업 | 검색 팝업 인덱스 |
| confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Case | Case 섹션 컨테이너 |
| confluence/기획 문서/01. SafetyDB/Tracker/Case Edit/Patient | Patient 섹션 컨테이너 |
7.1 구조 문서상 placeholder (별도 파일 없음)#
IVIGILANCE SQUARE 구조.md 인덱스에는 노출되어 있으나 실제 .md 파일이 존재하지 않는 항목. 78개 카운트에서는 제외됨.
| 인덱스 위치 | 현 상태 | 비고 |
|---|---|---|
IVIGILANCE SQUARE 구조.md 2번 — "공통 Rule & Logic" | 헤딩만 존재, 별도 파일 없음 | 현 시점에는 Rule & Logic이 SafetyDB 종속(M5a/b/c). 향후 다른 App(Tabulator/Sync)와 공유되는 플랫폼 레벨 Rule & Logic이 등장하면 이 자리가 분리됨 — 그때 별도 Phase 신설 검토 |
8. 전수 매핑 표 (활성 76개 + trash 2개 = 누적 78개 페이지)#
모든 기획 문서가 Main Stream 또는 Sub Stream 중 하나에 매핑되었는지 검증. 기획 미작성 문서는 섹션 6, 컨테이너 문서는 섹션 7로 분리.
v1.7 정정: v1.6까지 "78개 전수"로 표기. 2026-05-14 trash 이동(Submission/Submission List.md,Submitting Monitoring.md)으로 활성.md는 76개. 본 표는 누락 방지 + 이력 보존을 위해 trash 2개도 함께 표기하되 (trash) 표시한다. SSoT는Submission.md이며 trash 페이지 콘텐츠는 SSoT에 통합되어 있다.
8.0 매핑 깊이 정의#
| 깊이 | 의미 |
|---|---|
| Full | 해당 Phase에서 문서 요구사항을 실질 구현 완료 |
| Partial | Main Stream 최소 slice만 구현하고 나머지는 Sub Stream으로 이월 |
| Reference only | 데이터/정책 참고만 하고 직접 구현 항목 없음 |
| Planning needed | 본문 미작성/충돌로 기획 선행 필요 |
우선 적용 규칙: 섹션 6 문서는 Planning needed, 섹션 7 문서는 Reference only, M11b의 Case Edit_Field Type 참조는 Partial, S2 완료 시 Full로 전환한다.
8.1 공통 정책 (00. Common) — 26개#
| # | 문서 | 매핑 Phase |
|---|---|---|
| 1 | 00. Common (공통 정책).md | (인덱스, 섹션 7) |
| 2 | Account (+Login, Password).md | M1 |
| 3 | Admin (Org Admin).md | (인덱스, 섹션 7) |
| 4 | Audit Log, Activity Log, Audit Trail.md | A1 (인프라) + A2 (조회) + A3 (Export/보존) + A4 (Backoffice 통합/Break-Glass) + M1/M3a/M3b/M9/M11/M12 이벤트 카탈로그 편입 + M7c 최소 Audit Trail 훅 + S1 Audit Trail 고도화 |
| 5 | Backoffice 기획.md | M0 (+ A4 Backoffice 통합 조회) |
| 6 | Home Navigation 기획.md | M2 |
| 7 | Multi-Org 구조 및 관련 정책.md | M0 + A1 scope 모델 + A3 보존 (+ S10b Break-Glass 고도화, S10a ONB-05) |
| 8 | Notification 기획.md | Release2 (구 S6) |
| 9 | Org Admin App Admin 기획.md | M2 (+ Release2 고도화) |
| 10 | 개인정보 처리방침 (초안).md | Soft Launch Gate + GA Gate |
| 11 | Admin (Org Admin)/Company Config.md | (인덱스, 섹션 7) |
| 12 | Company Config/Partner.md | Release2 (기획 미작성) |
| 13 | Company Config/Product_Config.md | M3b |
| 14 | Product_Config/Family.md | M3b |
| 15 | Product_Config/Licenses.md | M3b |
| 16 | Product_Config/Products.md | M3b |
| 17 | Company Config/Study_Config.md | Release2 (구 S5) |
| 18 | Study_Config/Project.md | Release2 (구 S5) |
| 19 | Study_Config/Study.md | Release2 (구 S5) |
| 20 | Study_Config/Study Design.md | Release2 (구 S5) |
| 21 | Study Design/Product List.md | Release2 (구 S5) |
| 22 | Admin (Org Admin)/ICSR Config.md | (인덱스, 섹션 7) |
| 23 | ICSR Config/Auto Narrative.md | Release2 (S2 활성 범위 제외, 기획 미작성) |
| 24 | ICSR Config/Case ID.md | M3a |
| 25 | ICSR Config/Mapping Rule.md | S2 (평가 결과 키워드→AE Type Related 자동 분류, 빈 행 SAVE 비활성화, 대소문자 무시) |
| 26 | ICSR Config/Sender.md | M3a |
8.2 SafetyDB (01. SafetyDB) — 48개#
| # | 문서 | 매핑 Phase |
|---|---|---|
| 27 | 01. SafetyDB.md | (인덱스, 섹션 7) |
| 28 | Case Audit Trail.md | M7c 최소 원장 + S1 고도화 |
| 29 | Configuration.md | M10 (spec-by-reference shell, §6 등재 — v1.11) |
| 30 | Configuration/Case ID (Safety Config).md | M10 (spec-by-reference shell, §6 등재 — v1.11) |
| 31 | Configuration/Sender (Safety Config).md | M10 (spec-by-reference shell, CRO 분기 본문 미작성, §6 등재 — v1.11) |
| 32 | Dashboard.md | Release2 (구 S7) |
| 33 | Data Hub.md | (인덱스, 섹션 7) |
| 34 | Data Hub/XML Import.md | Release2 (Import 관련 내용은 S4 활성 범위 제외, 기획 본문 미완성) |
| 35 | Data Hub/Import History.md | Release2 (Import History) |
| 36 | Rule & Logic.md | (인덱스, 섹션 7) |
| 37 | Rule & Logic/AE Type 분류 로직.md | (인덱스, 섹션 7) |
| 38 | AE Type 분류 로직/AE Type 분류.md | M5b |
| 39 | AE Type 분류 로직/보고 기한 설정.md | M5b |
| 40 | AE Type 분류 로직/보고 출처 분류.md | M5a |
| 41 | Rule & Logic/중복 후속 판별 로직.md | (인덱스, 섹션 7) |
| 42 | 중복 후속 판별 로직/중복 로직.md | M5c (Logic B) + Release2 (XML Import 기반 Logic A) |
| 43 | 중복 후속 판별 로직/후속보고 순번 부여 및 탐지 로직.md | M5c (Initial/Manual FU) + S4 (Amendment/Nullification C.1.5 상속, Tracker [+] 정책) + Release2 (Import/재전송 고도화) |
| 44 | Rule & Logic/케이스 상태.md | M5c + M9 (Workflow) + M11a (Submission 상태) |
| 45 | Submission.md | M11a + M11b + M12 |
| 46 | Submission/Submission List.md (trash, 2026-05-14) | M11a (메타, 콘텐츠는 Submission.md에 통합 — PLAN-P) |
| 47 | Submission/Submitting Monitoring.md (trash, 2026-05-14) | M12 (메타, 콘텐츠는 Submission.md에 통합 — PLAN-P) |
| 48 | Tracker.md | M4 |
| 49 | Tracker/Manual Intake.md | M4 |
| 50 | Tracker/Workflow.md | M9 |
| 51 | Tracker/Case Edit.md | M7a (공통 레이아웃) |
| 52 | Tracker/Case Edit/Case.md | (컨테이너, 섹션 7) |
| 53 | Case Edit/Case/Identification.md | M7a |
| 54 | Case Edit/Case/Reporter.md | M7a |
| 55 | Case Edit/Case/Source.md | Release2 (Study Information, C.1.3=2 시) + PLAN-L (Literature 필드 C.4.r.1/C.4.r.2 R1 트랙 배치 미결) |
| 56 | Tracker/Case Edit/Patient.md | (컨테이너, 섹션 7) |
| 57 | Case Edit/Patient/Patient (1).md | M7b |
| 58 | Case Edit/Patient/Medical History.md | S3 |
| 59 | Case Edit/Patient/Death.md | S3 |
| 60 | Case Edit/Patient/Parent.md | S3 |
| 61 | Case Edit/Patient/Test.md | S3 |
| 62 | Tracker/Case Edit/Drug.md | M7b (컨테이너 구조) |
| 63 | Case Edit/Drug/1.md | M7b |
| 64 | Case Edit/Drug/2.md | M7b (+ PLAN-M 확장 — G.k.2.3.r.2a/b TermID WHODrug 의존, v1.9) |
| 65 | Case Edit/Drug/3.md | M7b |
| 66 | Case Edit/Drug/4.md | M7b |
| 67 | Case Edit/Event.md | M7c |
| 68 | Case Edit/Assessment.md | M8 |
| 69 | Case Edit/Narrative.md | M8 |
| 70 | Case Edit/Case Edit_Field Type.md | S2 (PLAN-AH: C.2.r.4.KR.1 Regional Required Field 등록) + M11b (E2B 매핑 일부 참조) + Release2 (Field Type 일반/Message Profile 확장) |
| 71 | 검색 팝업.md | (인덱스, 섹션 7) |
| 72 | 검색 팝업/MedDRA 검색 팝업.md | M6 (검색 팝업 3종 중 MedDRA) |
| 73 | 검색 팝업/NeDrug 검색 팝업.md | M6 (검색 팝업 3종 중 NeDrug) |
| 74 | 검색 팝업/WHODrug 검색 팝업.md | M6 (검색 팝업 3종 중 WHODrug) |
8.3 Tabulator / Sync / 메타 — 4개#
| # | 문서 | 매핑 Phase |
|---|---|---|
| 75 | IVIGILANCE SQUARE 구조.md | (인덱스, 섹션 7) |
| 76 | 02. Tabulator.md | Release2 (구 S8, 기획 본문 미완성) |
| 77 | 02. Tabulator/2026-04-22 - 23 개발 방향 논의.md | Release2 (구 S8/S11, 회의록/Phase 2 미결 사항) |
| 78 | 03. Sync.md | Release2 (구 S12, 기획 미착수) |
✅ 활성 76개 + trash 2개 = 누적 78개 페이지 전수 매핑 완료. (v1.7 정정)
9. 사용 가이드#
9.1 새 Phase 착수 시#
- 현재 진행 중인 Phase의
🧱 의존성이 모두 완료되었는지 확인. 🔗 참고 기획서를 팀이 모두 읽었는지 확인.- 외부 의존성 (섹션 5 표)이 사전 확보되어 있는지 확인.
Release Mode,Acceptance Criteria,Verification,Gate를 합의.✅ DoD를 Phase 완료 기준으로 합의.
9.1.1 Review Cadence#
| 시점 | 필수 리뷰 | 산출물 |
|---|---|---|
| Phase 시작 전 | Scope review | Gate 통과 여부, Acceptance Criteria 승인 |
| 중간 점검 | Demo + risk review | 미해결 의존성, scope cut 후보 |
| Phase 종료 | QA/UAT review | Verification evidence, known issue 승인 |
| M5a~c / M9 / M11a~b / M12 종료 | Architecture review | rule fixture, 상태 머신, AS2/ACK evidence, 운영 runbook |
| Soft Launch 전 | Security/Compliance review | 개인정보, 권한, 모니터링, 복구, incident response 승인 |
9.2 기획 미작성 문서가 영향 Phase에 포함되어 있을 때#
- 섹션 6 표 참조.
- Phase 착수 전 기획팀과 본문 작성 범위 조율.
- 기획이 늦어지면 해당 Sub Stream은 다음 Sub Stream보다 뒤로 미루어 순서 재조정.
9.3 본 로드맵의 갱신#
- 기획 본문이 새로 작성되거나, 외부 의존성/스코프가 변경되면 본 문서의 해당 Phase와 섹션 6/8 표를 동기화한다.
- Sub Stream 우선순위는 비즈니스 컨텍스트(고객 요청, 규제 변경)에 따라 순서를 바꿀 수 있으나, Main Stream의 순서는 의존성 그래프상 변경 불가하다.
10. 핵심 결론#
- Main Stream은 M0 + M1 + M2 + M3a/M3b + M4 + M5a/M5b/M5c + M6 + M7a/M7b/M7c + M8 + M9 + M10 + M11a/M11b + M12 = 총 19개 Phase로 분할되었다. Activity/Audit Log는 A1(인프라) / A2(조회 화면) / A3(Export+보존) / A4(Backoffice 통합+Break-Glass)로 분리된 A 트랙이며, S 트랙보다 먼저 진행한다(운영 가시성 필요 시 Main Stream 후반부터 병행 가능).
- Soft Launch Gate / GA Gate는 기능 스트림이 아니라 출시 선결 조건이다. 개인정보 처리방침, 최소 Audit Trail, MFDS Test evidence, 운영 runbook, 보안/복구 검증, 180일 PWD 만료 화면 활성화 검증이 끝나야 고객 노출이 가능하다.
- Sub Stream 실행 순서는 A1 / A2 / A3 / A4 / A5 선행 후 S1 / S2 / S3 / S4 / S10으로 정리한다. S2는 Mapping Rule + PLAN-AH만 활성, S4는 Amendment/Nullification + Tracker FU 정책만 활성이다. Study/Dashboard/Notification/Tabulator/Sync/AI/Intake Hub/XML Import 등 구 S5~S8·S11~S13 범위는 Release2 / Deferred Backlog로 분리한다. WHODrug 검색 팝업은 M6 검색 팝업 3종에 포함한다.
- 기획 미작성 문서는 해당 Phase 착수 전에 본문 완성이 선결 조건이다. 가장 큰 Main Stream 리스크는 검색 팝업 3종(MedDRA/WHODrug/NeDrug, M6) 외부 라이선스·DB/API 확보이다. XML Import, Sync App, AI App, Intake Hub는 Release2 / Deferred Backlog로 분리한다.
- 외부 의존성 (MedDRA/WHODrug/NeDrug 라이선스·DB/API, MFDS AS2, 공휴일 데이터, GSRS/MFDS 성분코드/EDQM/UCUM 코드, [MFDS 약물이상반응 및 이상사례 개별 항목 검증 룰] Excel)은 해당 Phase 착수 전 별도 트랙으로 확보 필요.
- Tabulator Phase 1은 Release2(구 S8)로 분리한다. 회의록상 (a) DB 관리 방식 A/B, (b) 2/3단계 순서, (c) 과금 세부, (d) Intake Hub 도입 여부, (e) MedDRA Non-Current 인라인 재코딩, (f) Read me 비교 화면 등 미결이 다수 — PLAN-V로 일괄 정리.
- v1.7 갭 보강: 4-Agent 병렬 정독으로 약 180건 갭 발견. 핵심 사실관계 정정 4건 — (a) 78개→활성 76개+trash 2개 분리, (b) Case Complete 헤더 위치 → Workflow 패널, (c) Drug "탭 단위" → "시퀀스 단위" 정합, (d) AE Type 6종 표기 → SUSAR 2분기 포함 명시. PLAN 미결 항목 6개(A~F)에서 v1.7 시점 활성 24개(A~X, Y는 v1.7에서 종결)로 확장 (PLAN-Z는 v1.8에서 신설, PLAN-AA~AH는 v1.9에서 신설).
- v1.8 결함 정정: 3-Agent 독립 검증 후 발견된 16건 정정 — 사실관계 1건(KRCT/WHO-UMC 용도 교환), 정합성 6건(목록 "21개" 카운트, M7b 매트릭스/DoD 탭 표현, M5b 목표 문구, M5b→M8 그래프, PLAN-O ↔ M9 본문 모순, Source.md S5 매핑 vs PLAN-L 충돌), 추가 누락 9건(Contract 5-상태 머신, A5 계약 알림 신규 Phase, BOF-U-07 잠금 해제, 브라우저 탭 타이틀, S6 야간 배치, Org/Workspace 이름 한도, Backoffice 공지사항 관리, My Profile 약관 링크 2탭, S10a 수동 채널 명시). PLAN-Z 1건 추가.
- v1.9 갭 보강: 4-Agent 도메인 병렬 전수 재정독(Common 17건/Intake 9건/Case Edit 14건/Rule&Logic 8건 ≈ 60건 갭) → 사실관계 정정 9건(M1 비밀번호 유예 폐지·MFA 10분 제한·복잡도 3종 조합, A1 강제 로그아웃 트리거 정합, M2 Backoffice 잠금 해제 경로, Workflow 내부 모순, Dashboard 5/7종, Reporter City 오기, Source k 정기보고), 누락 반영 48건(M0 Terminated 접근 차단·MA 최소 1명·1년 사용량 초기화, M1 PWD 쿨다운 DoD, M2 디폴트 앱 우선순위·Viewer 사이드바·라이선스관리 고라이브, M3a Year+Month 삭제, M5b 인과성 코드값·Source k 결정, M5c 중복 매칭 UI·Toast·Amendment/Nullification 상속, M4 Reporting Criteria 3종·Assignee→Owner 정정, M7a Awareness/C.1.11.1·2/C.1.6.1 자동/Sender 불러오기·Close 동작, M7b Drug 시퀀스 내 탭 정책·G.k.4.r.3 특수 단위·미래 일자 차단, M7c Hospitalization 날짜 검증, M8 H.3.r.1b LLT+SOC+PT 삼원, M9 Draft 전환 트리거 명시, M11a Validated 체크박스 필터, S2 Mapping Rule SAVE/대소문자, S3 E.i.7=5 DoD, S4 EC-01/02 + 배치 AE/AR 신규 배치, S5 Source 비활성 저장, S6 보고 시작 세션 트리거, S7 GNB Dashboard 진입점 3종·Tenant Admin 정합, S8 DSUR/단독 판매 모드, 공지사항 기본 노출(Release2 고도화), A4 Audit Trail Export 카탈로그 분리, A5 인앱 알림). 신규 PLAN-AA~AH 8건 추가, 기존 PLAN-E/J/L/M/O/W 6건 범위 확장. v1.8 시점 활성 24개(A~X) + v1.8 Z 추가 1개 + v1.9 신규 AA~AH 8개 = 활성 33개(A~Z + AA~AH, Y 종결 제외).
- v1.9 사실관계/정합성/추가누락 3-Agent 교차검증 정정 (6차 검증 후속): (a) PLAN-AH 본문 vs frontmatter 불일치 보정 — frontmatter PLAN 목록 7건→8건, 섹션 6.1 표에 PLAN-AH 행 추가 (b) 활성 카운트 정정 — v1.8 PLAN-Z 누락 보정 (31→33) (c) M1 LGN-27 표현 정확화 — "삭제"가 아닌 "내용 재정의(MFA in-place → 로그인 화면 잠금 안내)"로 정정 (d) M9 DoD/Acceptance Criteria의 PLAN-O 미결 조건부 표기 — PLAN-O 결정 전까지 단정 표현을 조건부로 (e) 섹션 5 의존성 그래프에 A5 노드 추가 — M0 병렬 가능 화살표 명시 (f) 섹션 8 #64 Drug/2.md에 PLAN-M 연계 표기 추가 (g) 검증 2에서 발견된 추가 누락 7건 본문 반영 — S6 NTF-04 일괄 읽음 확인 팝업, S6 Owner 케이스 상태 변경 알림, M2/S6 Safety DB 사이드바 메뉴 이동 트리거, A5 CORRECT 미발송 규칙, A5 최초 계약 MA 미지정 조건부 발송, A5 종료 사전 알림 Org vs Workspace/App 템플릿 분기, A5/M0 계약 상세 화면 액션 버튼 노출 조건 매트릭스
- 본 문서는 책임자(DRI)나 역할별 작업일 산정을 포함하지 않는다. 그 정보는 별도 프로젝트 실행 계획에서 다룬다.
문서 끝. 본 문서는 활성 76개 + trash 2개 = 누적 78개 기획 페이지 전수 분석 결과 기반이며, 단 1개의 기획 페이지도 누락되지 않도록 섹션 8 매핑 표로 검증되었다. v1.7 (2026-05-14) 갭 보강 ~180건 반영 + v1.8 (2026-05-14) 3-Agent 독립 검증 후 16건 결함 정정 + 신규 Phase A5(계약 알림 시스템) 추가 + v1.9 (2026-05-15) 4-Agent 도메인 병렬 재정독 후 ~60건 6차 보강 + 3-Agent 사실관계/추가누락/정합성 후속 교차검증으로 13건 결함 정정 + 신규 PLAN-AA~AH 8건 추가 + 기존 PLAN 6건 범위 확장 + PLAN 미결 A~Z+AA~AH 활성 33개로 확장 완료 + v1.10 (2026-05-18) confluence 전수 재확인(3회 교차검증) 후 v1.9 이후 신규 변경 1건(Case Audit Trail 26.05.15 — User Context Comment 정의) 반영, PLAN-AE 범위 축소 + v1.11 (2026-05-18) confluence 전수 파일 길이 스캔 후 §6에서 누락된 "껍데기" 문서 3건(SafetyDB Configuration / Case ID Safety Config / Sender Safety Config) 추가 등재, M10 본문 + §8 매핑 표 cross-link 보강 + v1.21 (2026-05-28) S2/S4 활성 범위 축소 및 Release2 분리, A 트랙 후순위 잔여 정합성 보정.