증상
문제없이 등록된 항목을 다시 저장하려니 400으로 거부된다.
원인
플랫폼이 중간에 필수 항목 검증을 강화했다. 기존 데이터는 그대로 살아있지만, 다시 쓰는 순간 현행 정책 검증을 탄다.
구체적 거부 조건
'상세설명 참조' 같은 회피 문구면 거부해법
★ 오래된 데이터를 대량으로 다시 쓰는 작업은 "수정"이 아니라 "현행 기준 재등록"이다. 통과율을 그렇게 예상해야 한다.
주의 — 반대 사례도 있다
필수값 누락은 "값 대체"가 맞지만, 값이 중복이면 채우는 게 아니라 단일로 접는 게 맞았다. 130여 건 중 실패 15건이 이 경우였다. 한 처방을 전건에 적용하지 않는다.
발원지를 막지 않으면 교정은 재생산된다
기존 항목을 고치는 동안에도 등록 파이프라인이 필수 속성마다 '상세설명 참조'를 무조건 주입하고 있었다. 교정 배치가 아무리 돌아도 신규 등록분이 같은 결함을 다시 만든다. 기존분 교정과 발원지 차단은 별개의 작업이고, 후자를 먼저 한다.
★ 같은 문구가 필드에 따라 갈린다. 고시정보 필드의 '상세페이지 참조'는 허용되고, 속성 필드의 같은 문구는 400이다. 금지 문구는 필드 단위로 판정한다.
메타를 축약해 저장하면 제약이 사라진다
카테고리 메타가 속성마다 단위·허용 단위·입력 타입을 주는데, 스키마를 이름과 필수 여부만 남기고 저장했다. 그래서 "30" 같은 순수 숫자를 단위 없이 보냈고 거부됐다. 메타의 단위와 입력 타입을 보존하고, 순수 숫자면 기본 단위를 결합하고, 허용 단위 밖이면 호출 전에 차단한다(목록이 없으면 통과 — 없는 제약을 만들지 않는다).
★ 오류 문구의 "혹은" 뒤쪽이 진범이었다. 앞 절만 읽고 가설을 세워 며칠을 버렸다. 원문의 모든 절을 용의선상에 둔다.