- 혼화제(GC000684) g ↔ kg — 검색어 「무수축혼화제」 · 단가 0 → 5 · 금액 변화 0(수량 0)
- 성격이 다른 11줄 · 값 빈 자리표 14줄은 그대로
- 도구: 빈 줄은 후보 단위가 같은 성격일 때만 바꿈 · 1,354 자동값 금액 변화 0 · check_master 로직 0 · 단위 16 → 15
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 재료 줄 591 → {구분, 상세구분, 검색어} · 재료 입력 키 목록 76 걷음 · 넘기던 인자 뗌
- 결속선 등 원문대로 고른 품목(어닐링철선)이 검색 첫째 그대로
- 1,354 자동값 금액 변화 0 · 계산전부 멈춤 0 · check_master 로직 0 · 단위 16 그대로
- 못 맞춘 26줄은 옛 대표 · 조건 그대로: 값 빈 자리표 MT0306… 14 · 같은 단위 후보 0 빈 줄 12
- 도구: 빈 줄은 안 바꿈 · 판정은 서버 찾기(master_pick.search) · 시험 test_m01_search_words
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 대표 키 · 대표가 재료 입력인 줄 · 조건만 있는 줄 → {구분, 상세구분, 검색어}
- 검색어 = 이름 핵심 + 규격 핵심 + 지역 낱말 · 지금 품목이 8-1 차례로 첫째가 될 때까지 낱말 더함
- 재료 입력 키 목록 걷음 · 넘기던 인자 뗌 · GC000211 소모자재 MT:{합판} 자리는 줄 금액으로
- 글 모양 그대로(바뀐 값 자리만) · 기본은 마른 돌리기 · --쓰기 로 씀
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 새 master_pick.py — 검색어 찾기(지역 낱말은 차례만) · 고름(호표 줄 차례 → 자재 키) · 같은 성격 단위 환산 · 단위경고 칸 · 기계 목록 밖 원문 분류번호 받기
- Router 몸에 고름 칸 · check_master 검색어 후보 0 · 단위 경고
- 검색어 없는 줄은 옛 길 그대로 — 1,354 자동값 금액 변화 0
- 시험 test_m01_pick 8개
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- NoRow · Blank — 표에 맞는 줄이 없으면 중간값을 거쳐 쓰는 줄까지 단가·금액 null + 까닭 · 소계·계는 빈 줄 빼고 더함
- 까닭 「표 QC001869(1-2-3)에 시공구분 기계시공 · … 인 줄이 없음」 · 재료 고르기 후보 없음도 같은 규칙
- 시험 한 개 더 (test_m01_auto.py)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- 덧줄이 부른 빈 호표 줄 값 조각 글 None → 그 줄 이름
- 만약() 이 고른 갈래가 덧셈이면 곱셈 안에서 괄호로 묶음(× (1 + 60 %))
- 식 안 로직 부르기 조각 글 = 그 로직 이름(별칭 아님)
- GF000185 · GC000376 · GC000111 자동값 + 고르기 후보 66번 점검: 날글 · 산수 어긋남 0
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- MO:휘발유:{지역} 날글 대신 「휘발유 · 전국평균」 · 입력이 비면 「휘발유 · 지역」
- 조각 참조 = 입력으로 풀린 실제 키 · 못 풀면 참조 없음
- 요소조각 · 조각 · 이름 식 같은 규칙 · 값 식 · 되돌리기는 그대로
- 자동값 · 빈 입력 14,490줄: 날글 48줄(로직 13) → 0 · 금액 변화 0
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 표 키(QC…) 대신 표 제목을 짧게 — 규격·코드 뗌 · 길면 첫 + 끝 낱말 · 제목 없으면 공종 · 상세구분
- 같은 표 여러 번은 번호 대신 서로 가르는 인자 값만(낙석방지망설치재료_철망 · 합판거푸집_각재)
- 호표 줄 이름도 짧은 품명 · 한 로직 안에서 겹치면 꼬리 _2
- 자동값 7,008줄: 표 키 1,188→0 · 번호 별칭 982→4 · 붙인 20자 넘는 이름 108→0 · 금액 변화 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 수량식 맨 위가 덧셈·뺄셈이면 단가 곱 뒤에 괄호(GC000467 촌락지대가)
- 번호 별칭은 이름글에서 그대로 둠 — 별칭표 이름이어야 되돌려짐(찾은 줄 이름은 되돌리기 안 됨) · 시험으로 고정
- 조각은 수량식만이라 그대로
검증: test_m01_text 25개 통과 · 1,354 금액 변화 0 · 값 없이 멈춤 0 · GC000467 식에 괄호.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
- 빈 줄(후보 0 · 값 빈 품목 · 빈 덧줄)은 글 빈 값 · 금액 null 그대로 · 덧줄 식을 다시 셈하지 않음
- 덧줄 합 · 이름 값에 빈 줄을 넣지 않음
- 자동값으로 1,354 전부 텍스트 멈춤 62 → 0
검증: test_m01_text 23개 통과 · 자동값 1,354 멈춤 0 · GC000027 계 = 계산 계.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACe3CR4gBWhWUN5p44fLe4
- GET /api/m01/logic/auto — 고르기 목록 첫째 · 범위 최솟값 · 찾기 조건 값은 그 표 가장 낮은 줄 · 나누는 수 1 · 그 밖 0 (master_auto.py)
- run — 후보 0 · 값 빈 품목(덧줄 포함)은 단가·금액 null + 까닭 · 소계·계는 빈 줄 빼고 더함 · 없는 키는 지금처럼 멈춤
- 자동값으로 로직 1,354 전부 계산 · 멈춤 0 · 시험 test_m01_auto.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LcqZtEzEf1sYSU4FUmVLNJ
- 표 조각 글 = 「찾은 줄 · 칸」(합판 · 1회사용) · 참조.행 = 찾기 조건
- 중간값(재료율 · 인력율)은 글에 이름 · 값은 별도 칸
- 만약 = 「폼타이 가 사용 이면 A · 아니면 B」 · 안 걸린 갈래 흐림 · 조건 입력이 비면 두 갈래 다
- 조건 입력이 비어도 이름 식이 멈추지 않음(값 없이 1,354 중 멈춤 180 → 0)
- 글 안의 돈(단가 · 금액)은 정수 · 계산 값은 소수 그대로
검증: test_m01_text 21개 통과 · GF000160 표 조각 일곱 줄 글 모두 다름 · GF000219 금액 앞과 같음.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACe3CR4gBWhWUN5p44fLe4
master_text._env_of 가 입력을 못 갖추면(값 넣기 전) 받은 것만 담고 중간은 건너뛰어
lines() 가 ok:false 로 일찍 안 죽고 이름 식·조각까지 짓게 함
고른 값이 틀린 경우(고르기·범위 밖)는 지금처럼 그대로 멈춤 — 구분해 시험 둘로 확인
- master_text.py — 조각(요소·표·로직·값·기호·글) 생성기 추가, 이름글·글·금액·
까닭은 그대로 두고 줄마다 「조각」 칸만 더함
- 만약() 은 계산되면 걸린 가지만 · 계산 안 되면(FormulaError 따위) 양쪽 다
내보내고 깊이를 적어 접을 수 있게 함
- 자리 표시({…}) 든 요소 참조는 이름만 적고 참조(키) 자리는 비움
- mf.run 이 막혀도(재료 단가 없음 따위) row 구조만으로 이름 식·조각을 짓고
글·금액만 비움 — 로직 부르는 줄(비목 미정)은 세 비목에 다 걸쳐 보임
- test_m01_text.py — 새 시험 6개(계약 확인·요소 알약·자리 표시·만약 둘·
계산 막힘 no-calc 경로), 기존 10개 그대로 통과
- 검증: pytest resources/tester/test_m01_text.py 16 passed · 13-4-1·12-4·
12-17-1 금액이 앞과 같음(calc 엔드포인트와 대조, 기존 시험 그대로) ·
ruff format/check 통과
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- 아무도 안 읽는 최상위·ref 파일 7개를 old/ 로(지우지 않음) — _원문목록·_열목록_화면표·
수량_돌쌓기찰라이브러리_소광리·공종_수량연결_실무·수량_구조물원단위_울진·
품셈_산림_재료할증_울진·품셈_산림_돌종류계수_울진(뒤 넷은 old_code 만 읽어 이제 0)
- 공종_자원별칭_실무도 old/ 로 — common_util_aliases.py 를 읽던 시험 둘이 이미 깨져 있어(
B08·B09 모듈 없음) 실제로 부르는 살아 있는 코드가 없었음
- 살아 있는 common_util/ 에서 dead 모듈 셋(work_item_key·work_item_link·aliases)을
old_code/common_util/ 로 옮김 — old_code 만 부르던 것이라 옮겨도 부르는 자리 그대로(
old_code 는 old_code 를 스스로 루트로 읽는 관례) · 상대경로 계산만 한 단 보정
- 깨져 있던 시험 둘(test_b09_fuel_kind_vibrator·test_b08_root_removal_excavator)도
resources/tester/ 에서 old_code/resources/tester/ 로 — 7-3 이 놓친 것 마저 정리
- UnitPrice.py 의 load_basis_missing() — old/ 스냅샷 대신 새 최상위 마스터
`기준수량없음_산림품셈_2026-01-01.json` 으로(브레인 판정: 마스터 쪽) · old_code 로
옮겨진 뒤 root 계산이 한 단 부족해 조용히 빈 딕셔너리를 돌려주던 것도 같이 바로잡음
(79건 견본 대조 통과) · check_master.py 틀 검사에 특수 파일 면제 한 줄 추가
- 검증 — typecheck · check_master 틀 0건 · M01·자재품목 시험 215 + masterdata·m01_api 98 통과 ·
전체 모으기 1475 그대로
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
master_material.py — PICK_KEYS 에 「지역」·「계약종별」 더함. `_region`·`_tariff`
두 함수를 품셈재료 행이 아니라 조건 묶음 자체를 받게 고쳐 옛길(품셈재료 「연결」
간접)과 새길(호표 「요소」 에 조건을 바로 박음) 이 같은 코드를 씀(sub3 가 분석해
둔 방식 그대로 — 이름 뿌리 endswith·단위 같음·지역 이름 포함 매칭). check_pick —
지역·계약종별 조건은 구분 없이 이름만 확인 · 값이 "입력" 아닌 채 섞이면 틀로 잡음.
build_로직_재료_고르기.py — 품셈재료 연결이 {이름·지역:입력} 이나 {이름·계약종별:입력}
인 줄(모래 MP000004·자갈 MP000006·전력 MP000358)도 그 조건 묶음을 그대로 호표에
박도록 넓힘 — 다시 돌려 로직 4개 파일 17줄 반영(모래 8·자갈 1·전력 8). 전력은
지시대로 재료_유가전력.json(MO 테이블)을 그대로 가리킴 — 자재품목은 안 거침.
test_masterdata_check.py — PICK_KEYS 늘어난 만큼 cond_text 글자 열쇠 시험 고침 ·
지역 값이 "입력" 아닌 조건은 틀로 잡히는 것 확인.
test_m01_api.py — 전력 계약종별 시험을 mf.element 직접 호출로 바꿈(화면 단가
미리보기 `_pick_brief`(M01_MasterData_Store.py, 담당 밖)는 구분·상세구분 자리로만
찾아 지역·계약종별 조건은 아직 못 다뤄 None — 아는 구멍으로 남김 · 계산 자체는
정상 확인).
typecheck 통과 · 관련 시험 108 통과 · 로직 1354개 전수 대조 금액 달라짐 0·새 멈춤 0.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
고르기 조건(PICK_KEYS)에 이름 칸을 더함 — candidates()가 구분·상세구분·규격에 더해
이름 낱말도 봄(자재품목 원자료는 안 건드림). GF000176(파형강관 부설) 커플링밴드 호표를
옛 방식(품셈재료 손 연결)에서 고르기 조건으로 바꿔 같은 규격(관경)의 접속티와 안 섞이게 함.
재료_품셈재료.json MP000027·32·37 도 같은 조건으로 갱신. _틀.md 7장·시험 갱신.
검증: 이름 없이는 관경마다 커플링밴드·접속티 6줄이 섞임 → 이름을 더하면 1줄로 좁혀짐(전수
확인). 일괄 시험 계산 통과 1291·멈춤 63·금액 달라진 로직 0(앞뒤 동일) · check_master 틀·
본문·로직·조합 0 유지.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
품셈재료 가운데 자재품목에 짝 없어 로직이 부르는 재료 106종(원 분류의 139줄 대응)을
자재품목에 새 줄로 만듦 — 이름·규격·단위·구분·상세구분·출처(품셈재료 키·요구절)만
채우고 값 다섯 칸(물가자료·유통물가·물가정보·거래가격·관급)은 모두 빔 · 비고에
「품셈재료에서 옮김 · 값 미확보」 · 키는 MT030600부터(_키대장.json 갱신).
이름이 옛 분류 규칙에 안 걸리는 93종(건설품셈 13장 플랜트설비 소모품 위주)은
build_자재품목_분류.py 에 정확한-이름 대응표를 새로 두어 채움(정규식 우선순위는
안 건드림 · 기존 30592줄 분류 결과 그대로 · 미분류 25줄 불변).
모래·자갈(중량 kg, 자재품목엔 ㎥ 지역줄만 있음)은 한 줄로 안 굳히고 전국 대표 자리 ·
지역별 자리 두 줄씩(4줄) 나눠 둠. 전력은 재료_유가전력.json 에 이미 있어 그대로 둠(안 옮김).
VR관(GF000173 막힘 원인)은 고려콘크리트산업 규격표로 1본=2.5m(D300~D1200 공통) 확인 —
그 22줄 비고에 환산 계수·출처 적음(D1500 은 표에 없어 그대로 둠).
품셈재료 자체는 이번엔 안 옮김(다음 일감) · 로직·조합 파일은 안 건드림.
typecheck 통과 · test_자재품목_분류.py·test_masterdata_check.py 80 통과(미분류 0 신규).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
- `scripts/check_값없는줄.py` 신설 — 로직 1,354 줄을 훑어 호표 직접 지정·고르기 조건 후보·
대표 줄·품셈재료 연결(문자열 키·지역 조건)까지 실제 참조를 셈, 값은 안 채움
- 재료_자재품목.json 다섯 칸(물가자료·유통물가·물가정보·거래가격·관급) 모두 빈 줄 345 가운데
로직이 실제로 가리키는 진짜 구멍은 31 줄 — `ref/_분석_값없는줄.md` 신설
- `ref/_관리자값_미확보.md` 재검증 — 45종 가운데 6종은 고르기 조건으로 바뀌었거나 로직이
재료 자체를 뺀 것이라 로직이 안 씀으로 옮김, 남은 39종·로직 49개는 그대로 관리자 몫
- `ref/_없는_재료.md` 재검증 — 111줄 모두 지금도 로직이 부름, 뺄 줄 없음
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- 인력 한 줄 저장 7.0초 → 0.9초 · 자재품목 7.2초 → 2.0초 · 소요량 표 1.7초 ·
자재품목 저장 뒤 목록 2.5초 → 0.45초 · 켠 뒤 첫 목록 3.4초 → 1.6초
- 로직 줄을 셀 때 `Master.get` 을 덧옷(`_Watch`)으로 감싸 그 줄이 본 자리를 모음 —
키 · 「ID:원문번호」 · 없는 키를 물은 것까지 · 재료 고르기 줄은 자재품목 묶음 통째
- 저장은 그 지도로 흔들리는 줄만 검사(고친 키 · 고치기 전후 원문번호 · 지운 줄) ·
요소를 고친 저장은 연결·준용 검사를 그대로 돌림
- 저장 뒤 목록은 흔들린 자리를 알려 받아(`stale(names, marks)`) 그 줄만 다시 셈 ·
다른 창이 고친 파일이면 예전처럼 통째로 다시 셈
- 자재품목을 「구분」 으로 미리 갈라 둠(`master_material.by_class`) — 고르기 후보를
3만 줄에서 훑지 않음 · 가른 차례는 파일 차례 그대로라 고르는 줄은 안 바뀜
- 전수 확인 — 요소·표 파일 90 개마다 줄을 통째로 비우고 로직 1,354 줄을 다시 검사,
달라진 줄이 모두 지도 안(지도 밖 0)
- 시험 `test_m01_cache.py` 에 셋 더함(열둘) — 쓰이는 요소를 지우면 저장이 막힘 ·
요소를 고쳐 저장한 뒤 막힘 표시가 줄마다 검사한 것과 같음 · 인력 줄을 비운 전수 대조
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- 저장(`POST /save`) 6.8초 → 0.8초 — 고친 줄과 그 줄을 부르던 줄만 검사
(안 보는 줄이 부르는 키는 목록이 미리 세어 둔 것을 씀 · 돌고 도는 길은 전체 그림으로)
- 로직 줄만 고쳤으면 품셈재료 연결 · 인력 준용 검사(`check_links`)도 건너뜀
- 로직 밖 파일(요소 · 표)이 섞인 저장은 예전처럼 전부 검사 — 전체 검사는 `check_master` 몫
- 켠 뒤 첫 목록 3.4초 → 0.03초 — M01 라우터가 뜰 때 뒤에서 한 번 읽어 둠(`cache.warm`)
- 저장 전 검사(`check_saved`)를 M01 쪽(`_Store_Cache`)으로 옮김 — 좁히는 값이 있는 자리 ·
`check_master` 가 700줄에 닿음
- 시험 `test_m01_cache.py` 에 넷 더함 — 없는 로직 키 · 없는 요소 키 · 돌고 도는 참조 ·
다른 파일에서 그 줄을 부르던 줄이 깨짐(모두 422) · 미리 읽은 뒤 첫 목록
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
메모 칸이 글자 아닌 값(수량 등)을 받아도 저장되던 것 · 이름이 글자 아니어도
저장되던 것을 막음(sub2 검증 `ref/_검증_조합.md` 일감 24). 메모는 글자·null만,
이름은 서버 400(글자 아님) + check_combo_form 422(빈 이름·60자 넘음·겹침)로
까닭과 함께 거절. _틀.md 10장 갱신 · 재현 시험 포함 4건 추가(21 통과).
엔진은 이미 됐음 — run() 이 조건 칸을 fill() 로 채우고 static() 이 검사에서 뺌.
표본으로 확인한 뒤 22줄 가운데 20줄을 고르기 조건으로 옮김(MT 19 · 고무링 1).
못 옮긴 2줄 — VR관(자재 단위 「본」 대 호표 「m」 환산 미확정) ·
커플링밴드(자재품목 표기 두 갈래라 규격으로 접속티와 못 가름).
검사 넓힘 — check_logic 이 조건 칸 {이름} 이 입력·중간인지 봄 ·
check_pick 이 구분 자체가 {입력} 이면 건너뜀(옛 코드는 「후보 0」 오탐).
앞뒤 견주기 — 시험 계산 통과 1,291 · 멈춤 63 그대로 · 금액 달라진 로직 0(1,354 전수) ·
check_master 전부 같음 · 로직의 MT 직접 참조 19 → 0 · MP 160 → 158.
PLAN 4-2. 조합 = 관리자가 이름을 붙이고 단가산출 로직을 골라 담은 묶음.
마스터에는 담은 로직 목록만 두고 수량·비율·계산은 두지 않음(4-0 확정 · 계산은 프로젝트 몫).
- 새 파일 `일위대가조합.json`(빈 채 · 줄은 사용자가 화면에서 만듦) · 테이블ID `UA`
· 원문이 없어 머리 `원문` 과 줄 `원문번호` 를 두지 않음(`mk.NO_NUMBER` 에 `UA`)
- 엔진 `scripts/master_combo.py` — 검사 넷(없는 로직 키 · 같은 로직 두 번 · 빈 조합
· 조합이 조합을 담음) · 「이 로직을 쓰는 조합」 거꾸로 찾기 · 미리 보기 계산
- `check_master.py` 에 「조합」 갈래 더함 · 저장 전 검사(`check_saved`)에도 얹어 422 로 막음
- 서버 `M01_MasterData_Store_Combo.py` — `GET /combos`·`/combo`·`/logic/combos`
· `POST /combo/new`·`/edit`·`/delete`·`/preview`(저장 없음)
- 조합은 요소 그룹이 아님 — `/groups` 는 여덟 그대로 두고 제 길로만 다룸
- 틀 `_틀.md` 10장 · 계약 `_화면_계약.md` 9장 · 시험 `test_m01_combo.py` 17
검증 — 견본 조합(13-4-1 · 13-4-2 · 13-2-1) 미리 보기 합계가 그 로직 셋의 시험 계산을
비목별로 더한 값과 같음 · 못 도는 줄은 그 줄만 멈추고 나머지 합계는 그대로 ·
저장 전 조합 줄로도 미리 보기 되고 아무것도 안 생김 · 검사 넷 다 422 · 낡은 판본 409 ·
정본 로직 안 바뀜 · `check_master 틀`·`조합` 0건 · pytest 44 통과(조합 17 + api 27)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WaS48Nvs26o3aFUpcfJxVv
- update_관급단가_느슨.py 신설 — 엄격한 짝이 안 선 줄을 갈래 안에서 규격 글자를 느슨하게 맞춰 다시 봄
(아스콘 · H형강 · HI-VP · PE · VR관 · 돌망태 · 무게수로관 뚜껑 · 벤치플룸 · 유공관 · 이음관)
- 아스콘 관리번호 A3-W 떼기 · 못 채운 까닭 비고를 지금 말로 다듬음
- 자재품목 관급 열 212줄 채움(다른 열·줄 그대로) · 시험 · 설계 문서
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
POST /text 가 줄마다 「이름글」(석공노임 * 메쌓기인력.석공 * (1 + 증가율 %) = 석공비)과 「글」(값 꼴)을 같이 주고 짝 번호를 붙임 — 두 꼴이 한 줄 안에 있어 개수·차례가 늘 같음.
표 찾기·로직 부르기는 3-4 별칭 규칙 그대로(답에 별칭 목록 포함) · 단가 자리는 노임·손료·단가 꼬리 · 만약()은 두 꼴 모두 걸린 쪽만. 계약 3장 갱신 · 로직 1,291개 전수 점검(짝 어긋남 0 · 함수 샘 0) · 시험 20 통과.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
- 교차 검증 어긋남 1건(사용자가 별칭과 같은 이름의 입력·중간·덧줄을 새로 만들면 되돌릴 때
그 이름이 조용히 찾기() 원문으로 바뀌던 것) — gather 에서 별칭 이름을 그 순간의
입력·중간·덧줄 이름(_taken)과 견줘 겹치면 FormulaError(400) · 자동 이름 바꾸기는
화면 개입 없이는 어느 쪽 식인지 못 가려 안전하지 않아 넣지 않음
- 재현 시험 추가 · 전체 로직 1,354줄 펴고 되돌리기 어긋남 0건 재확인 ·
resources/master_data/ref/_검증_별칭_복사.md 에 「고친 뒤」 덧붙임