메모 칸이 글자 아닌 값(수량 등)을 받아도 저장되던 것 · 이름이 글자 아니어도 저장되던 것을 막음(sub2 검증 `ref/_검증_조합.md` 일감 24). 메모는 글자·null만, 이름은 서버 400(글자 아님) + check_combo_form 422(빈 이름·60자 넘음·겹침)로 까닭과 함께 거절. _틀.md 10장 갱신 · 재현 시험 포함 4건 추가(21 통과).
3.7 KiB
3.7 KiB
검증 — 일위대가 조합 (일감 24)
읽기 전용 · 시험용 복사본 폴더에서 서버 길(TestClient)로 만들고 지움 — 정본 일위대가조합.json(줄 0)·_키대장.json 은 안 건드림.
어긋난 것 (2)
메모칸으로 수량이 새 들어갈 수 있음 — 담은 로직 줄의메모에 글자가 아닌 값(숫자5· 묶음{"수량": 3})을 보내도 200 으로 저장됨. 검사(master_combo.check_row)는 칸 이름(로직 · 메모)만 보고메모값의 모양은 안 봄 → 4-0(조합에 수량·계산 없음)의 뒷문. 재현:POST /combo/new에담은로직: [{"로직": "GF000219", "메모": {"수량": 3}}]. 고칠 곳:check_row에서메모는 글자 또는 null 만.check_master도 같은 함수를 써서 같이 잡힘.이름이 글자가 아니어도 저장됨 —이름: ["x"]가 200 으로 저장(UA000005) ·check_combo_form도str()로 감싸 통과. 고칠 곳: 이름은 글자만(서버 400 · 틀 검사).
참고(계약대로라 어긋남 아님 · 확인만): 구분 · 단위 를 안 주면 null 로 저장됨 — 미리 보기 결과단위 없는 조합이 생길 수 있음.
통과한 것
- ① 만들기 → 읽기 → 고치기 → 지우기: 키는 서버가
UA다음 번호로 줌(지운 번호는 다시 안 씀) · 열 한 벌(키·이름·구분·상세구분·단위·담은로직·출처·소유·비고)이 그대로 저장 · 고치기로 로직 빼기 · 지우면 줄 0.키·소유를 몸에 실어 보내도 서버 것이 이김. - 수량·계산 칸: 조합 위쪽 여분 칸(
수량·계산·비율)은 200 이되 저장되지 않고 버려짐 · 담은 로직 줄의 여분 칸(수량·계산)은 422(「모르는 칸」). - ② 검사: 없는 로직 키(422 「없는 요소」) · 모양 틀린 키 · 같은 로직 두 번(줄 번호 표시) · 빈 조합 ·
담은로직없음·null · 조합이 조합을 담기(UA…) · 로직 아닌 키(EA…) · 목록 아님 · 줄이 묶음 아님 · 이름 공백 400 · 모르는 소유 400 · 없는 키 404 — 모두 막힘. 거절된 요청은 파일·키 번호를 바꾸지 않음(같은 번호가 다시 나옴). - 낡은 판본: 고치기·지우기 모두 409
{stale: ["일위대가조합.json"]}· 거절된 고치기 뒤 판본 그대로. - 담은 로직이 나중에 사라지면: 조회는 200 +
blockedtrue + 까닭 · 미리 보기는 그 줄만 멈추고 나머지 합계는 냄. - ③ 미리 보기 합계: 로직 셋(GF000219 산림 찾기 · GC000996 덧줄 있음 · GC000994 로직 부르기 있음)을 담아 각 로직의 시험 계산과 비목별로 대조 — 줄마다 노무비·재료비·경비가 같고, 합계도 노무·재료·경비 비목별 합과 같음(계 729,595.598). 저장 전 조합 줄로 보내도 같은 합계 · 미리 보기는 저장하지 않음(줄 수 그대로). 입력에 없는 이름을 주면 그 줄만 「입력 … 없음」으로 멈춤.
/logic/combos거꾸로 찾기 · 목록의count· 소유·찾기 거름도 맞음. - ④
check_master: 조합 검사가 들어 있음(조합모드 ·전부모드에 포함 · 틀은check_combo_form) — 정본에서 틀 0 · 로직 0 · 조합 0건. 시험test_m01_combo.py17 통과.
고친 뒤 (일감 26)
어긋난 것 둘 다 고침 — 「메모」 는 글자 또는 null 만(master_combo.check_row) · 「이름」 은 글자만(서버 400) + 빈 이름·60자 넘음·같은 파일 안 겹침을 check_combo_form 이 422 로 막음(까닭 글 포함). _틀.md 10장에 두 규칙 적음. 재현 두 가지 + 새 규칙 셋 시험 넷을 더해 test_m01_combo.py 21 통과 · check_master 조합 정본 0건.