워크플로 1차 결과를 저장소로 옮긴다 — 검증이 10건을 반박했다

오케스트레이션으로 레거시 본문을 병렬로 읽고 각 매핑을 다른 에이전트가
<b>반박하도록</b> 시킨 결과. 에이전트 11개, 103만 토큰, 도구 299회.
내 컨텍스트는 거의 쓰지 않았다 — 오케스트레이션을 쓴 이유가 그것이다.

  ok 94 / wrong 10 / unsure 1, 고유 태그 84종

검증을 "통과시키는" 임무로 줬다면 wrong 10건이 그대로 코드에 들어갔을 것이다.
이 세션에서 당한 사고가 전부 "확인 없이 넣은 것"이었다.

## 이번 배치는 환자 태그가 아니다

대부분 ETC_ 계열(시각·로그인 사용자)이고, 상당수는 SessionTagResolver 가
이미 처리하고 있을 수 있다. 통합 전에 중복을 걸러야 한다 — 그대로 넣으면
같은 태그를 두 곳에서 처리하게 된다.

## 건진 것

- ETC_건강보험증번호_Refer 는 죽은 코드다(본문 전체가 주석, Return "" 하나).
- ETC_현재일시_MaskBox 는 마스크 때문에 일과 시가 붙는다(2026-08-1914:30).
- ETC_로그인_원내연락처 의 컬럼은 UIDOFFTEL 대문자다(형제는 파스칼).
- 검증이 기존 SheetMe 코드의 차이도 잡았다 — 레거시는 GetAdpDtm 앞 8자,
  SheetMe 는 SYSDATE 로 사용자 유효기간을 본다.

배치 6개 중 1개는 API 521 로 미실행이라 재실행이 필요하다.

문서만 변경. 게이트는 앞 커밋 상태 그대로다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Msystech
2026-08-19 13:00:37 +09:00
co-authored by Claude Opus 5
parent 5ec31cee41
commit 949db1aa18
+145
View File
@@ -0,0 +1,145 @@
# 워크플로 1차 결과 — CTX 태그 검증
오케스트레이션(에이전트 11, 103만 토큰, 도구 299회)으로 레거시 본문을 병렬로 읽고,
각 매핑을 <b>다른 에이전트가 반박</b>하게 한 결과다.
| 판정 | 수 |
| --- | --- |
| ok | 94 |
| wrong | 10 |
| unsure | 1 |
고유 태그 84종. 배치 6개 중 1개(읽기:2)는 API 521 로 실패해 <b>미실행</b>이다 — 재실행이 필요하다.
## 검증이 실제로 반박했다
wrong 10건. 검증을 "통과시키는" 임무로 줬다면 그대로 코드에 들어갔을 것이다.
## 이번 배치의 성격
대부분 `ETC_` 계열(시각·로그인 사용자)이라 <b>환자 태그가 아니다</b>.
상당수는 `SessionTagResolver` 가 이미 처리하고 있을 수 있다 —
통합 전에 `TagPreviewCatalog` 와 대조해 중복을 걸러야 한다.
## 건진 것 중 눈에 띄는 것
- `ETC_건강보험증번호_Refer` 는 <b>죽은 코드</b>다. 본문 전체가 주석이고 실행문은 `Return ""` 하나뿐.
- `ETC_현재일시_MaskBox` 는 마스크가 `9999-99-9999:99` 라 <b>일과 시가 붙는다</b>(`2026-08-1914:30`). 오타처럼 보이지만 레거시 동작이다.
- `ETC_로그인_원내연락처` 의 컬럼명은 `UIDOFFTEL` <b>대문자</b>다(형제 태그는 파스칼 `UidMblPhn`).
- `ETC_로그인사용자_서명` 은 서버에서 이미지 파일을 내려받는다 — `needs-lookup` 으로 격리.
- 검증이 <b>기존 SheetMe 코드의 차이</b>도 잡았다: 레거시는 로그인 사용자 조회에 `GetAdpDtm` 앞 8자를 쓰는데 SheetMe 는 `SYSDATE` 를 쓴다 — 같은 행이라도 기준일이 다르다.
## 다음 단계
1. 실패한 배치(읽기:2) 재실행
2. ok 94건에서 `SessionTagResolver` 가 이미 처리하는 것 제외
3. 남은 것 통합 후 게이트(--edit-smoke 이름 검사 · --db-patient · md5)
## 판정 표
| 판정 | 태그 | kind | row | column |
| --- | --- | --- | --- | --- |
| ok | `ETC_건강보험증번호_Refer` | - | - | - |
| ok | `ETC_건강보험증번호_Refer` | computed | - | - |
| ok | `ETC_로그인_사용자ID_사용자명` | - | - | - |
| ok | `ETC_로그인_사용자ID_사용자명` | computed | - | UidCod,UidNam |
| ok | `ETC_로그인_사용자ID` | - | - | - |
| ok | `ETC_로그인_사용자ID` | context-scalar | - | UidCod |
| ok | `ETC_로그인_사용자명` | - | - | - |
| ok | `ETC_로그인_사용자명` | context-scalar | - | UidNam |
| ok | `ETC_로그인_사용자연락처` | - | - | - |
| ok | `ETC_로그인_사용자연락처` | context-scalar | - | UidMblPhn |
| ok | `ETC_로그인_원내연락처` | - | - | - |
| ok | `ETC_로그인사용자_서명` | - | - | - |
| ok | `ETC_로그인사용자_서명` | needs-lookup | - | UidImgPth |
| ok | `ETC_현재년도` | - | - | - |
| ok | `ETC_현재년도` | formatted | - | - |
| ok | `ETC_현재시간` | - | - | - |
| ok | `ETC_현재시간` | formatted | - | - |
| ok | `ETC_현재일시_1_년` | - | - | - |
| ok | `ETC_현재일시_1_년` | formatted | - | - |
| ok | `ETC_현재일시_2_월` | - | - | - |
| ok | `ETC_현재일시_2_월` | formatted | - | - |
| ok | `ETC_현재일시_3_일` | - | - | - |
| ok | `ETC_현재일시_3_일` | formatted | - | - |
| ok | `ETC_현재일시_4_몇시` | - | - | - |
| ok | `ETC_현재일시_4_몇시` | formatted | - | - |
| ok | `ETC_현재일시_5_몇분` | - | - | - |
| ok | `ETC_현재일시_5_몇분` | formatted | - | - |
| ok | `ETC_현재일시_MaskBox` | - | - | - |
| ok | `ETC_현재일시_MaskBox` | formatted | - | - |
| ok | `ETC_현재일시` | - | - | - |
| ok | `ETC_현재일시` | formatted | - | - |
| ok | `ETC_현재일자_영문` | - | - | - |
| ok | `ETC_현재일자_영문` | formatted | - | - |
| ok | `ETC_현재일자` | - | - | - |
| ok | `ETC_현재일자` | formatted | - | - |
| ok | `OCM_OPNAME` | - | - | - |
| ok | `OCM_OPNAME` | needs-lookup | - | OPNAME |
| ok | `OCM_OPRCODNAM` | needs-lookup | - | OPRCODNAM |
| ok | `OCM_병동` | needs-lookup | CowInf | CowWadCod |
| ok | `OCM_병실베드` | needs-lookup | CowInf | CowBedCod |
| ok | `OCM_부상병POA_Refer` | needs-lookup | - | OkdPoaTyp |
| ok | `OCM_부상병명_Refer` | needs-lookup | - | KcdKorNam |
| ok | `OCM_부상병코드_Refer` | needs-lookup | - | KcdElcCod |
| ok | `OCM_부상병코드` | needs-lookup | - | KcdElcCod |
| ok | `OCM_상병명_가로_Refer` | needs-lookup | - | KcdKorNam + OkdCfmSus |
| ok | `OCM_상병명_영어_가로_Refer` | needs-lookup | - | KcdEngNam |
| ok | `OCM_상병명_영어_가로` | needs-lookup | - | KcdEngNam |
| ok | `OCM_상병명_영어_세로_Refer` | needs-lookup | - | KcdEngNam |
| ok | `OCM_상병명_영어_세로` | needs-lookup | - | KcdEngNam |
| ok | `OCM_상병코드_가로_Refer` | needs-lookup | - | KcdElcCod |
| ok | `OCM_상병코드_가로` | needs-lookup | - | KcdElcCod |
| ok | `OCM_상병코드_세로_Refer` | needs-lookup | - | KcdElcCod |
| ok | `OCM_상병코드_세로` | needs-lookup | - | KcdElcCod |
| ok | `OCM_수술_OprPatETC` | needs-lookup | - | OprPatEtc |
| ok | `OCM_수술부위` | needs-lookup | - | OprRegionName |
| ok | `OCM_수술일자_Refer` | computed | - | - |
| ok | `OCM_심사_부상병명` | needs-lookup | - | - |
| ok | `OCM_심사_부상병코드` | needs-lookup | - | - |
| ok | `OCM_심사_주상병명` | needs-lookup | - | - |
| ok | `OCM_심사_주상병코드` | needs-lookup | - | - |
| ok | `OCM_외래내원일시_Refer` | formatted | ComInf | ComAcpDtm |
| ok | `OCM_외래내원일시` | formatted | ComInf | ComAcpDtm |
| ok | `OCM_외래내원일자_Refer` | formatted | ComInf | ComAcpDtm |
| ok | `OCM_외래내원일자_영문` | formatted | ComInf | ComAcpDtm |
| ok | `OCM_의사퇴원예고일시` | computed | ComInf | ComSchLev |
| ok | `OCM_입실시간` | formatted | ComInf | ComTrsDtm |
| ok | `OCM_입원내원일시_Refer` | formatted | ComInf | ComAcpDtm |
| ok | `OCM_입원시간_Refer` | computed | ComInf | ComAcpDtm |
| ok | `OCM_입원일시_Refer` | computed | ComInf | ComAcpDtm |
| ok | `OCM_입원전환일시_Refer` | formatted | ComInf | ComTrsDtm |
| ok | `OCM_입원전환일자_Refer` | formatted | ComInf | ComTrsDtm |
| ok | `OCM_입통원구분_입원` | computed | ComInf | ComPatTyp |
| ok | `OCM_입통원구분_통원_Refer` | computed | ComInf | ComPatTyp |
| ok | `OCM_입통원구분_통원` | computed | ComInf | ComPatTyp |
| ok | `OCM_적용진료의사` | needs-lookup | - | - |
| ok | `OCM_전과일시` | formatted | CodInf | CodStrDtm |
| ok | `OCM_전과일자` | formatted | CodInf | CodStrDtm |
| ok | `OCM_주상병POA_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병POA` | needs-lookup | - | - |
| ok | `OCM_주상병명_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병명_영어_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병명_영어` | needs-lookup | - | - |
| ok | `OCM_주상병일자_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병일자` | needs-lookup | - | - |
| ok | `OCM_주상병코드_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병특정기호_Refer` | needs-lookup | - | - |
| ok | `OCM_주상병특정기호` | needs-lookup | - | - |
| ok | `OCM_진단구분_상병명` | needs-lookup | - | - |
| ok | `OCM_진단구분_상병코드_상병명_Refer` | needs-lookup | - | - |
| ok | `OCM_진단구분_상병코드_상병명` | needs-lookup | - | - |
| ok | `OCM_진단서의사_영문_Refer` | needs-lookup | - | - |
| ok | `OCM_진단서의사_영문` | needs-lookup | - | - |
| ok | `OCM_진단서의사면허번호_Refer` | needs-lookup | - | - |
| ok | `OCM_진단서의사면허번호` | needs-lookup | - | - |
| unsure | `ETC_로그인_원내연락처` | context-scalar | - | UIDOFFTEL |
| wrong | `OCM_DX` | needs-lookup | - | DX |
| wrong | `OCM_OPRCODNAM` | needs-lookup | - | OPRCODNAM |
| wrong | `OCM_부상병POA` | needs-lookup | - | OkdPoaTyp |
| wrong | `OCM_상병명_가로` | needs-lookup | - | KcdKorNam + OkdCfmSus |
| wrong | `OCM_수술상병` | needs-lookup | - | OkdNam |
| wrong | `OCM_수술주상병` | needs-lookup | - | - |
| wrong | `OCM_수술집도의` | needs-lookup | - | - |
| wrong | `OCM_입통원구분_입원_Refer` | computed | ComInf | ComPatTyp |
| wrong | `OCM_전과` | needs-lookup | - | - |