knowledge(경쟁사): 설정키 241종·간접비 식 26개 전수 — 설정 사슬 닫힘

PRJLST.SMT 저장키 전수
- 241종. 접두어가 뜻을 가름 — C_(금액직접입력 62)·R_(요율 39)·I_(선택 41)·
  B_(켬끔 12)·D_(밑수 26)·S_(산출액 30)·ADD_(추가금액 22)
-  D_ 와 S_ 가 같은 항목 이름으로 짝을 이룸. 항목마다 「어떤 밑수에 곱했고
  얼마가 나왔는지」를 프로젝트에 남김. 09번의 indirect_result 계약과 맞음
- 추가금액 저장 구조 ADD_AMT_단계_행_칸 (11번이 화면 문자열로만 본 것)
- 고용개선지원비가 휴업수당·장려금·사회보험·지원금 네 갈래
- 수공 밑수 배분 계수 R_R_DM·DL·L·DMDL·DML 이 rGrd_RateB 열 이름과 일치

간접비 식 템플릿 26개 전수
- 밑수별 기본 꼴 여섯 (총액·노무·재료·노무+토큰·총액-재료·세 성분 합)
- ⚠ 식 안에 IF(...) 조건 분기가 있음. DP_Common 의 IIF·IFI·IFO 가 처리.
  사칙연산과 ROUND 만으로는 재현 불가
- ROUNDDOWN([C_KUNBO]*[RAT_1]) — 장기요양은 건강보험료 「직접입력 금액」에
  요율을 곱함. 19번의 「당초액 유지」와 이어짐
- 복합 보험식·변경설계 A/B·사급자재 /1.1 전부 포함

설정 사슬이 닫힘 — 화면 272축 → 저장키 241종 → 식 26개 → 함수 73개 →
D_/S_ 재저장 → 출력. 다섯 칸이 모두 이어짐.

문서 25 신규, 키 원자료와 스크립트 추가.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
This commit is contained in:
2026-09-13 14:21:03 +09:00
co-authored by Claude Opus 5
parent 50113cb6f5
commit e7c090d3fd
5 changed files with 293 additions and 0 deletions
@@ -31,6 +31,7 @@
| 22 UI 폼 분석 | **폼 233개 중 3개만 봤던 것** — 선택축 272개, `ACTTYP`·자리수 키·일괄변경 규칙 | (저장소 파일) | | 22 UI 폼 분석 | **폼 233개 중 3개만 봤던 것** — 선택축 272개, `ACTTYP`·자리수 키·일괄변경 규칙 | (저장소 파일) |
| 23 `COSTN.SMT` 전수파싱 | **단가산출 원장** — 참조 1,570·품 1,460·Q식 187개(10꼴)·운반 사이클 | (저장소 파일) | | 23 `COSTN.SMT` 전수파싱 | **단가산출 원장** — 참조 1,570·품 1,460·Q식 187개(10꼴)·운반 사이클 | (저장소 파일) |
| 24 모듈구조 전수 | **46개 모듈 export**`DP_Common` 73함수, 플러그인 규약, 동글, 8차 해소 | (저장소 파일) | | 24 모듈구조 전수 | **46개 모듈 export**`DP_Common` 73함수, 플러그인 규약, 동글, 8차 해소 | (저장소 파일) |
| 25 설정키 전수와 식템플릿 | **설정 사슬 닫기**`PRJLST.SMT` 키 241종, 간접비 식 26개 | (저장소 파일) |
> **정본은 저장소 파일이다** — `resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/`. > **정본은 저장소 파일이다** — `resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/`.
> 위 Orca 링크는 보기용이며, 문서를 지식DB 자리로 옮기면서 주소가 한 번 바뀌었다. > 위 Orca 링크는 보기용이며, 문서를 지식DB 자리로 옮기면서 주소가 한 번 바뀌었다.
@@ -98,6 +99,11 @@
| 라이선스 | 「없음」 | **Rainbow Sentinel SuperPro 하드웨어 동글** | 24번 §4 | | 라이선스 | 「없음」 | **Rainbow Sentinel SuperPro 하드웨어 동글** | 24번 §4 |
| 엑셀 | 단방향 출력 | **양방향**`CONV_XLS_2_ST`·`XLS_2_BDREC` | 24번 §3 | | 엑셀 | 단방향 출력 | **양방향**`CONV_XLS_2_ST`·`XLS_2_BDREC` | 24번 §3 |
| 변경 차수 8차 | ⚠ 미해결 | ✅ **해소** — 한 파일 4벌, 8차는 분리형 파일 선택 | 24번 §7 | | 변경 차수 8차 | ⚠ 미해결 | ✅ **해소** — 한 파일 4벌, 8차는 분리형 파일 선택 | 24번 §7 |
| 프로젝트 저장키 | 일부만 | **241종 전수**`C_`금액 62·`R_`요율 39·`I_`선택 41·`D_`밑수·`S_`결과 | 25번 §1 |
| 밑수 저장 | 안 남는 줄 알았음 | **`D_`(밑수)·`S_`(결과) 짝으로 저장** | 25번 §1.1 |
| 추가금액 | 화면 문자열만 | **저장 구조** `ADD_AMT_단계_행_칸` | 25번 §1.3 |
| 간접비 식 템플릿 | 일부 | **26개 전수** | 25번 §2 |
| 식에 조건 분기 | 몰랐음 | ⚠ **`IF(...)` 존재** — 평가기 필수 요건 | 25번 §2.2 |
분석일: 2026-09-13 분석일: 2026-09-13
대상: `C:\경영정보(주)` 대상: `C:\경영정보(주)`
@@ -0,0 +1,149 @@
# 설정키 전수와 간접비 식 템플릿 — 설정 사슬 닫기
점검일: 2026-09-13
재현 스크립트: `40_스크립트/settings_key_map.py` · 원자료 `30_원자료/prjlst_smt_keys.txt`
## 1. `PRJLST.SMT` 저장키 **241종**
21번 §3에서 일부만 봤던 것을 전수로 세었다. 접두어가 뜻을 가른다.
| 접두 | 뜻 | 개수 |
|---|---|---:|
| `C_` | **금액 직접입력** | 62 |
| `R_` | **요율** | 39 |
| `I_` | **선택 인덱스** | 41 |
| `B_` | 켬/끔 | 12 |
| `D_` | **밑수** | 26 |
| `S_` | **산출액** | 30 |
| `ADD_*` | **추가금액** | 22 |
| 그 밖 | `JAB_TYPE` · `CAL_ACTL` · `VIS_TOTL` · `Y_KONGSU` | 9 |
### 1.1 ⭐ `D_` 와 `S_` 가 짝을 이룬다 — 밑수와 결과를 함께 저장
```text
D_KANNO / S_KANNO 간접노무비 D_SANBO / S_SANBO 산재보험료
D_KUNBO / S_KUNBO 건강보험료 D_YUNBO / S_YUNBO 연금보험료
D_ANJUN / S_ANJUN 안전관리비 D_T_KITA / S_T_KITA 기타경비
D_HWAN / S_HWAN 환경보전비 D_ILBAN / S_ILBAN 일반관리비
D_HADOSU / S_HADOSU 하도급보증 D_EQIPSU / S_EQIPSU 건설기계보증
D_S_SUDO / S_S_SUDO … 수공 세부경비 8종도 같은 짝
```
**항목마다 「어떤 밑수에 곱했고 얼마가 나왔는지」를 프로젝트에 남긴다.** 09번 §2의 `indirect_result(base_amount, rate, raw_amount, rounded_amount)` 계약이 실제 저장 구조와 맞는다.
`S_DAMT_L` · `S_DAMT_M` · `S_DAMT_S` · `S_KAMT_M` 은 직접비 성분 합계다.
### 1.2 고용개선지원비가 4종으로 나뉜다
```text
C_EIS_HOLLAB C_EIS_HOLPAY C_EIS_INCENT C_EIS_SOCINS C_EIS_SUPPAY
R_EIS_HOLIR1 R_EIS_HOLIR2 R_EIS_INCENT R_EIS_SOCIR2
D_EIS_* / S_EIS_*
```
12번 §3.2가 「일반형식에 별도 묶음이 있다」고만 적은 **고용개선지원비**가 실제로 **휴업수당·장려금·사회보험·지원금 네 갈래**다.
### 1.3 ⭐ 추가금액 저장 구조
```text
ADD_CNT_1 ~ ADD_CNT_4 단계별 행 수
ADD_NAME_2_01 · ADD_UNIT_2_01 · ADD_BIGO_2_01 이름·단위·비고
ADD_AMT_2_01_1 ~ ADD_AMT_2_01_5 금액 (단계별 5칸)
ADD_AMT_3_01_1 ~ ADD_AMT_3_01_5
ADD_BUGA_2_01 부가세 포함 여부
```
`_2_`·`_3_` = **삽입 단계**, `_01` = 행 번호, `_1~5` = **단계별 포함 칸**. 11번 §9가 화면 문자열로 본 「단계 3~6 삽입」이 저장 구조로 확인된다.
### 1.4 형식 전용 키
```text
실적형식만 I_MTYP · I_LTYP · I_MXA · I_MXK · R_R_DM · R_R_DL · R_R_L · R_R_DMDL · R_R_DML
수공형식만 C_S_* / R_S_* / D_S_* / S_S_* (수도광열·복리후생·소모품·통신·세금·폐기물·도서·지급수수료)
```
`R_R_DM`·`R_R_DL`·`R_R_L`·`R_R_DMDL`·`R_R_DML`**`rGrd_RateB`의 열 이름(`재`·`직노`·`노`·`재+직노`·`재+노`) 그대로**다(02번 §RATE_B). 수공형식 밑수 배분 계수가 여기 저장된다.
## 2. 간접비 식 템플릿 — 바이너리 전수 **26개**
11번 §6이 일부만 보여 준 것을 모두 뽑았다. **대괄호는 런타임 치환 변수**다.
### 2.1 밑수가 다른 기본 꼴
```text
ROUNDDOWN( [T_AMT] * [RAT_1] ) 총액 기반
ROUNDDOWN( [LAMT] * [RAT_1] ) 노무 기반
ROUNDDOWN( [M_AMT] * [RAT_1] ) 재료 기반
ROUNDDOWN( ([L_AMT][+LAB]) * [RAT_1] ) 노무 + 선택토큰
ROUNDDOWN( ([T_AMT]-[M_AMT]) * [RAT_1] ) 총액 − 재료 ← 이윤
ROUNDDOWN( ([M_AMT]+[L_AMT]+[S_AMT]) * … ) 세 성분 합
```
`[+LAB]`는 **옵션에 따라 켜고 끄는 항**이다 — `DP_Common``CHK_TRUE_CLSTR`가 판정한다(24번 §2.3).
### 2.2 ⭐ 조건 분기가 식 안에 있다
```text
IF( ([LAMT]+[M_AMT]) … )
IF( ([L_AMT]+[M_AMT]) … )
```
**식 평가기에 `IF`가 필요하다.** 24번 §2.3의 `IIF`·`IFI`·`IFO` 함수가 이것을 처리한다. 사칙연산과 `ROUND` 계열만으로는 재현이 안 된다.
### 2.3 앞 결과를 밑수로 쓰는 꼴
```text
ROUNDDOWN( [C_KUNBO] * [RAT_1] )
```
**건강보험료의 「직접입력 금액」(`C_KUNBO`)에 요율을 곱한다** — 노인장기요양보험료다. 16번 §3에서 `장기요양 = 건강보험료 × 12.95%`로 실증한 것의 식 원문이며, **밑수가 요율 계산 결과가 아니라 `C_` 직접입력 칸**이라는 점이 19번 §6의 「당초액 유지」와 이어진다.
### 2.4 복합 보험식 — 세 항을 각각 절사 후 다시 절사
```text
ROUNDDOWN( ROUNDDOWN([LAMT]*[RAT_1]*[RAT_2]/100*1.4, 0)
+ ROUNDDOWN([LAMT]*[RAT_KY]*[RAT_3]/100, 0)
+ ROUNDDOWN([LAMT]*[RAT_1]*[RAT_2]/100*[RAT_4]/100, 0), 자리 )
```
### 2.5 변경설계 두 꼴
```text
[C_AMT_B] + ROUNDDOWN( [C_AMT_B] * (([C_TAMT_C]-[C_TAMT_B])/[C_TAMT_B]) ) 방법 A
[C_AMT_B] + ROUNDDOWN( ([C_TAMT_C]-[C_TAMT_B]) * [RAT_1] ) 방법 B
```
### 2.6 사급자재 VAT 제외
```text
+ [C_SAGUP_C] / 1.1
```
`cmBx_Kwan_Sa``사급자재대/1.1` 선택(12번 §10.1)이 식으로 들어간다.
## 3. 설정 사슬이 닫혔다
```text
화면 선택축 272개 (22번)
↓ 고르면
PRJLST.SMT 저장키 241종 (이 문서 §1)
↓ C_/R_/I_/B_ 값이
간접비 식 템플릿 26개 (§2)의 [RAT_n]·[C_*] 자리에 치환
↓ DP_Common 73함수로 평가 (24번 §2)
↓ 항목마다 D_(밑수)·S_(결과) 로 되돌아 저장
공사원가계산서 출력 (16번에서 원 단위 재현 완료)
```
**입력(화면) → 저장(SMT) → 식(템플릿) → 평가기(함수) → 결과(출력)** 다섯 칸이 모두 이어졌다.
## 4. 이번 점검이 바꾸는 것
| 항목 | 이전 | 지금 |
|---|---|---|
| 프로젝트 저장키 | 일부만 봄 | ✅ **241종 전수**, 접두어 6갈래 |
| 밑수 저장 | 안 남는 줄 알았음 | ✅ **`D_`(밑수)·`S_`(결과) 짝으로 저장** |
| 추가금액 | 화면 문자열로만 | ✅ **저장 구조** `ADD_AMT_단계_행_칸` |
| 고용개선지원비 | 「별도 묶음」 | ✅ **4갈래** (휴업수당·장려금·사회보험·지원금) |
| 수공 밑수 배분 | `RATE_B` 표만 | ✅ **`R_R_DM`·`DL`·`L`·`DMDL`·`DML`** 저장키 |
| 간접비 식 | 일부 | ✅ **26개 전수** |
| 식에 조건 분기 | 몰랐음 | ⚠ **`IF(...)` 존재** — 평가기 필수 요건 |
@@ -0,0 +1,95 @@
### PRJLST.SMT 저장키 241종 (접두 차수 제거)
■ C_ 금액 직접입력 62개
C_ANJUN C_ANJUN1_G C_ANJUN2_G C_ANJUNP C_ANJUN_B
C_ANJUN_G C_BUGA_M C_BUSAN C_BUSAN_B C_DOSEOH
C_EIS_HOLLAB C_EIS_HOLPAY C_EIS_INCENT C_EIS_SOCINS C_EIS_SUPPAY
C_EQIPSU C_EXCEPT_B C_HADOSU C_HWAN C_ILBAN
C_IYUN_M C_KANNO C_KAN_M C_KN_SA C_KOBO
C_KONGSA C_KONGSA_J C_KONGSU C_KONGSU_A C_KONGSU_MA
C_KUNBO C_KWANGUP C_KWANGUP_D C_KWANGUP_K C_NBUGAM
C_PSAMT_B C_PUMJIL_B C_PURCHAS C_SAGUP C_SANBO
C_SANGSI C_SLVBO C_S_ANJUN_B C_S_BOKRI C_S_DOSEO
C_S_JIGUP C_S_PEGI C_S_PUMJIL C_S_SEGUM C_S_SIGONG
C_S_SOMO C_S_SUDO C_S_TONGSIN C_TBUGUM C_T_ANJUN_N
C_T_JODAL C_T_KITA C_T_KOLJAE C_T_K_MAT C_T_PEGI
C_UPDNKWN C_YUNBO
■ R_ 요율 39개
R_ANJUN R_ANJUN1 R_ANJUN2 R_ANJUNP R_DOSEOH
R_EIS_HOLIR1 R_EIS_HOLIR2 R_EIS_INCENT R_EIS_SOCIR2 R_EQIPSU
R_HADOSU R_HWAN R_ILBAN R_IYUN R_KANNO
R_KOBO R_KONGSA R_KONGSU R_KUNBO R_R_DL
R_R_DM R_R_DMDL R_R_DML R_R_L R_SANBO
R_SLVBO R_S_BOKRI R_S_DOSEO R_S_JIGUP R_S_PEGI
R_S_SEGUM R_S_SIGONG R_S_SIGONG_1 R_S_SOMO R_S_SUDO
R_S_TONGSIN R_TBUGUM R_T_KITA R_YUNBO
■ I_ 선택 인덱스 41개
I_ANJUNAUTO I_ANJUN_B I_ANJUN_K I_ANJUN_TYPE I_ANPUM
I_AN_DN_TYPE I_BF_CH_BO I_BID_TYPE I_BUGA I_COST_BO
I_DOGUP I_DOG_JEOL I_EQIP I_HWAN I_ILBAN
I_IYUN I_JEOLSA I_KAN_JEOLSA I_KN_SA_TYPE I_KOBO_TYPE
I_KONG_KIKAN I_KONG_TYPE I_KOSU_TYPE I_KUNBO I_KUN_TYPE
I_KWN_COMB I_KWN_JEOLSA I_KWN_K_JEOLSA I_KWN_K_UPDN I_KWN_UPDN
I_LTYP I_MTYP I_MXA I_MXK I_NAG_RATE
I_POS_SA I_SET_BASE I_TBUGUM I_TOT_ADD I_TOT_JEOL
I_YUNBO
■ B_ 켬/끔 12개
B_ANJUN_B B_BUGA_UP B_BUSAN_B B_CHANGE B_EXCEPT_B
B_KONGSA B_KWANGUP_D B_KWANGUP_K B_NBUGAM B_PSAMT_B
B_PUMJIL_B B_T_JODAL
■ Y_ 연도·기타 1개
Y_KONGSU
■ 기타_ 섹션·기타 86개
ADD_AMT_2_01_1 ADD_AMT_2_01_2 ADD_AMT_2_01_3 ADD_AMT_2_01_4 ADD_AMT_2_01_5
ADD_AMT_3_01_1 ADD_AMT_3_01_2 ADD_AMT_3_01_3 ADD_AMT_3_01_4 ADD_AMT_3_01_5
ADD_BIGO_2_01 ADD_BIGO_3_01 ADD_BUGA_2_01 ADD_CNT_1 ADD_CNT_2
ADD_CNT_3 ADD_CNT_4 ADD_NAME_2_01 ADD_NAME_3_01 ADD_UNIT_2_01
ADD_UNIT_3_01 CAL_ACTL D_ANJUN D_ANJUNP D_EIS_HOLLAB
D_EIS_INCENT D_EIS_SOCINS D_EIS_SUPPAY D_EQIPSU D_HADOSU
D_HWAN D_ILBAN D_KANNO D_KOBO D_KONGSA
D_KONGSU D_KUNBO D_SANBO D_SLVBO D_S_BOKRI
D_S_DOSEO D_S_JIGUP D_S_PEGI D_S_SEGUM D_S_SIGONG
D_S_SOMO D_S_SUDO D_S_TONGSIN D_TBUGUM D_T_KITA
D_YUNBO JAB_TYPE S_ANJUN S_ANJUNP S_DAMT_L
S_DAMT_M S_DAMT_S S_EIS_HOLLAB S_EIS_INCENT S_EIS_SOCINS
S_EIS_SUPPAY S_EQIPSU S_HADOSU S_HWAN S_ILBAN
S_KAMT_M S_KANNO S_KOBO S_KONGSA S_KONGSU
S_KUNBO S_SANBO S_SLVBO S_S_BOKRI S_S_DOSEO
S_S_JIGUP S_S_PEGI S_S_SEGUM S_S_SIGONG S_S_SOMO
S_S_SUDO S_S_TONGSIN S_TBUGUM S_T_KITA S_YUNBO
VIS_TOTL
### 간접비 식 템플릿 — 바이너리에서 전수
서로 다른 템플릿 26개 (상위 30)
ROUNDDOWN( [T_AMT] * [RAT_1] 62
ROUNDDOWN( [LAMT] * [RAT_1] 31
ROUNDDOWN( ([L_AMT][+LAB]) * [RAT_1] 31
[C_AMT_B]+ROUNDDOWN( [C_AMT_B] * (([C_TAMT_C]-[C_TAMT_B])/[C_TAMT_B]) 31
(([LAMT][+LAB])- 31
[C_AMT_B]+ROUNDDOWN( ([C_TAMT_C]-[C_TAMT_B]) * [RAT_1] 31
([LAMT][+LAB]) 31
ROUNDDOWN( [C_KUNBO] * [RAT_1] 31
ROUNDDOWN( ([LAMT][+LAB]) * [RAT_1] 31
[LAMT][+LAB] 31
([LAMT]+[M_AMT] 31
IF(([LAMT]+[M_AMT]) 31
([LAMT]+[M_AMT])) 31
([L_AMT]+[M_AMT]) 31
IF(([L_AMT]+[M_AMT]) 31
([L_AMT]+[M_AMT])) 31
ROUNDDOWN( ([T_AMT]-[M_AMT]) * [RAT_1] 31
ROUNDDOWN( ROUNDDOWN([LAMT]*[RAT_1]*[RAT_2]/100*1.4 31
0) + ROUNDDOWN([LAMT]*[RAT_KY]*[RAT_3]/100 31
0) + ROUNDDOWN([LAMT]*[RAT_1]*[RAT_2]/100*[RAT_4]/100 31
ROUNDDOWN( ([M_AMT]+[L_AMT]+[S_AMT] 31
ROUNDDOWN([T_AMT] * [RAT_1] 31
ROUNDDOWN([M_AMT] * [RAT_1] 31
+[C_SAGUP_C]/1.1 31
[C_SAGUP_C]/1.1 31
ROUNDDOWN([TAMT] * [RATE] 3
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""화면 선택축 ↔ PRJLST.SMT 저장키 대응, 그리고 간접비 식 템플릿 전수."""
import sys, io, re, pathlib, zipfile, collections
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
PRAC = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
SYS = pathlib.Path(r"C:\경영정보(주)\System")
# ── PRJLST.SMT 키 모으기 ─────────────────────────
keys=collections.Counter()
for p in sorted(PRAC.rglob("*.STC")):
try: b=zipfile.ZipFile(p).read("PRJLST.SMT")
except Exception: continue
txt=b[0x200:].decode("cp949","replace")
for k in re.findall(r"([0-9]?_?[A-Z][A-Z0-9_]{2,})=", txt): keys[re.sub(r"^\d_","",k)]+=1
print("### PRJLST.SMT 저장키 %d종 (접두 차수 제거)" % len(keys))
grp=collections.defaultdict(list)
for k in keys:
m=re.match(r"^([CRIBY])_(.+)$", k)
grp[m.group(1) if m else "기타"].append(k)
LBL={"C":"금액 직접입력","R":"요율","I":"선택 인덱스","B":"켬/끔","Y":"연도·기타","기타":"섹션·기타"}
for g in ("C","R","I","B","Y","기타"):
if g not in grp: continue
v=sorted(grp[g])
print("\n%s_ %s %d" % (g, LBL[g], len(v)))
for i in range(0,len(v),5): print(" " + " ".join("%-20s"%x for x in v[i:i+5]))
# ── 간접비 식 템플릿 전수 (바이너리) ─────────────
print("\n\n### 간접비 식 템플릿 — 바이너리에서 전수")
TMPL=re.compile(rb"[A-Z_\[\]0-9+\-*/(). ]*\[[A-Z_0-9]{2,12}\][A-Z_\[\]0-9+\-*/(). ]{4,80}")
found=collections.Counter()
for p in SYS.rglob("*"):
if not p.is_file() or p.suffix.upper()!=".CPM": continue
try: b=p.read_bytes()
except Exception: continue
for m in TMPL.finditer(b):
s=m.group().decode("latin1").strip()
if s.count("[")<1 or len(s)<10: continue
if not re.search(r"[*/+]", s): continue
if re.search(r"[a-z]", s): continue
found[s]+=1
print(" 서로 다른 템플릿 %d개 (상위 30)" % len(found))
for s,c in found.most_common(30): print(" %-72s %2d" % (s[:72], c))
@@ -63,6 +63,7 @@
| 22 | **UI 폼 분석** — 선택축 272개, 화면에 남아 있던 계산 규칙 | | 22 | **UI 폼 분석** — 선택축 272개, 화면에 남아 있던 계산 규칙 |
| 23 | **`COSTN.SMT` 전수파싱** — 단가산출 원장, Q식 10꼴, 운반 사이클 | | 23 | **`COSTN.SMT` 전수파싱** — 단가산출 원장, Q식 10꼴, 운반 사이클 |
| 24 | **모듈구조 전수** — 46개 export, 계산 공용 라이브러리 73함수, 동글 | | 24 | **모듈구조 전수** — 46개 export, 계산 공용 라이브러리 73함수, 동글 |
| 25 | **설정키 전수와 식템플릿** — 저장키 241종, 간접비 식 26개, 설정 사슬 닫힘 |
## 확정된 굵직한 것 ## 확정된 굵직한 것