문제 1: 전화번호 마스킹 안 됨 (사업담당자 표)

원인: 마스킹 코드가 02-6421-6466처럼 하이픈 3토막 형태만 잡음. 이 문서 전화번호는 02)6421-6466처럼 괄호+하이픈 2토막 형식이라 정규식이 인식 못 함.

PHONE_RE = re.compile(r"(?<![\d-])\d{2,3}\s*-\s*\d{3,4}\s*-\s*\d{4}(?![\d-])")

“지역번호)국번-번호” 패턴 누락 확인함. 정규식 패턴 하나 추가하면 되는 간단한 수정임.

문제 2: 표가 2칸 이상 비어있으면 라벨 복구 안 됨 (같은 표)

원인: 예전 “빈 칸 채우기” 코드가 딱 1칸 모자랄 때만 작동함.

elif len(cells) == target - 1:   # 1칸만 모자랄 때만 채움

이 표는 “사업담당자”·“제안/과업내용” 2칸이 동시에 생략돼서 규칙에 안 걸림 → 행마다 칸 수 달라짐 → “깨진 표”로 판정돼서 표 구조 통째로 잃음. 코드 수정 범위 안임 (1칸→여러 칸 대응 확장 필요).

문제 3: 큰 표가 쪼개져서 절반만 검색됨 (사업범위 표)

원인: 파싱 버그 아니고 설계상 그런 거임 — 표가 크면 자동으로 여러 조각(#0008, #0009)으로 쪼개짐. 검색할 때 둘 중 하나만 뽑혀서 답이 절반만 나옴(스크린샷에서 확인함 — 포탈·전자결재·메일 다 빠지고 회의실예약 이후만 답함).

Parent-Document 방식으로 가면 해결됨 — 검색은 조각 단위, 답변 생성 시엔 표가 속한 큰 덩어리 통째로 전달하도록 바꾸면 됨.

문제 4 (제일 어려움) — 정보시스템 SW 현황 표

원본 마크다운 직접 확인함. 청킹 코드 문제 아니고 추출 단계(hwp 파서)에서부터 표가 깨져서 나옴. “보안” 카테고리처럼 여러 줄 병합된 셀 있는 표는 파서가 행마다 칸 수를 1개~4개로 제멋대로 뽑아냄. 오늘 처음에 짚었던 “표 추출 문제”(585건 트리아지 안 한 그거)랑 같은 뿌리 문제임. forward-fill로 해결 안 되는 수준 — 다른 추출 방법 쓰거나 “확인 불가” 처리가 현실적임.

정리 — 우선순위 결정 필요

문제난이도효과
① 전화번호 마스킹쉬움NDA 위험 직결 — 시급함
② 2칸 이상 빈칸 복구쉬움~중간이 표 하나 살림
③ 표 쪼개짐 (Parent-Document)중간여러 문제 동시 해결 가능
④ 근본 추출 깨짐어려움근본 해결이지만 오래 걸림

①번(전화번호 마스킹)이 개인정보 문제라 제일 시급해 보임. 이것부터 진행할지, 순서 다르게 갈지 결정 필요함.