knowledge(M01): 화면 개선 셋 분석 — 원 소수점·시험 계산 2열·자재 키값
- 분석만(코드 안 고침) · 새 문서 resources/master_data/ref/_분석_화면개선_셋.md - 원 단위: formatNumber() 한 함수가 돈·수량·비율을 안 가름, Combo_Preview 는 딴 사본 - 2열: 요소 표에 이미 있는 auto-fill 그리드 방식 재사용 가능, 280px 좁음이 걸림 - 자재 키값: 실은 기계·직종 코드도 걸림, searchElements 재사용 가능하되 100건 상한 걸림 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 분석 — 화면 개선 셋 (M01)
|
||||
|
||||
분석만 · 코드·데이터 안 고침. 브레인 지시 셋(원 단위 소수점 · 시험 계산 2열 · 자재 키값 표시) 검토.
|
||||
|
||||
## ① 원 단위는 소수점 0자리
|
||||
|
||||
- **지금** — 금액 표시는 거의 다 `formatNumber()`(`M01_MasterData_UI_Logic_Edit.ts:53`) 한 함수를 거침. `toLocaleString(..., {maximumFractionDigits:4})` 한 규칙이라 원(돈)·수량·계수·비율을 안 가르고 소수 넉 자리까지 보임. `조합 미리 보기`(`UI_Combo_Preview.ts:20`)는 같은 규칙의 **딴 사본**(`fmt()`)을 따로 둬서 한곳이 아니라 두 곳.
|
||||
- **고칠 곳** — 서버는 안 건드림. `formatNumber()` 옆에 원 전용 짝 함수(소수 0자리)를 하나 새로 만들어, **돈 자리**(`m01-logic__money` 클래스 붙은 곳 — 단가산출 상세의 단가·금액·소계·합계, 텍스트 수식의 소계·합계, 요소 모달의 단가·값, 시험 계산의 금액·비목합, 자재 고르기 목록의 값)와 `조합 미리 보기`의 노무비·재료비·경비·계만 그걸로 바꿔 낌.
|
||||
- **걸리는 것** — 시험 계산의 `result`(로직 최종값)·`middle`(중간값)은 「money」 표식이 없음 — 로직마다 돈일 수도 비율·계수일 수도 있어 화면만 보고 못 가름(서버가 값 성격을 안 실어 보냄). 이 둘은 이번엔 못 자름. 끝수 안내(원 미만 버림, `UI_LogicLab_Formula.ts:77`의 `끝수`)는 서버가 이미 따로 만들어 괄호로 붙이는 별글자라 정수화해도 안 부딪힘.
|
||||
|
||||
## ② 시험 계산 컨테이너 입력을 2열로
|
||||
|
||||
- **지금** — `buildCalc()`(`UI_Logic_Calc.ts:35`)가 입력 칸마다 `<label>`(이름 + 입력/고르기)을 만들어 세로 한 줄씩 그냥 쌓음(`.m01-logic__calc`가 `flex-direction: column`, `M01_MasterData_UI_Logic_Style.css:38`). 그릇 자체 폭은 280px 고정(`.m01-logic:has(...)`, 같은 파일 20행) — 본문(가운데 로직 목록/상세) 옆에 붙는 좁은 오른쪽 칸.
|
||||
- **고칠 곳** — 같은 CSS에 이미 있는 「자동 두 칸」 방식(요소 표 머리칸 `.m01-logic__head`가 `grid-template-columns: repeat(auto-fill, minmax(180px,1fr))`, 79행)을 `.m01-logic__calc`의 입력 목록에도 그대로 씀 — 긴 이름 항목만 `.m01-logic__field--wide`(96행, 이미 있는 클래스)로 한 줄 다 차지.
|
||||
- **걸리는 것** — 그릇이 280px라 두 칸이면 한 칸이 130px 안쪽 — 입력 이름이 길면(예 "조종원직종") 잘리거나 줄바꿈. 고르기(드롭다운)와 값 칸(글자 입력)이 섞인 줄은 높이가 서로 달라 두 칸이 나란할 때 줄이 안 맞을 수 있음. 「390px」은 지금 코드 어디에도 없음(검색 0건) — 알약 카드 쪽 딴 논의로 보임, 이 칸과는 무관.
|
||||
|
||||
## ③ 계산 입력의 자재가 키값으로만 보임
|
||||
|
||||
- **지금** — `spec.고르기` 배열(`M01_MasterData_UI_Logic_Api.ts:12`, `(string|number)[]`)을 `createSelectField`(`UI_Logic_Calc.ts:40`)에 `String(o)` 그대로 넣음 — 마스터 JSON을 보면(`resources/master_data/로직_건설품셈_01장_공통.json`) 크레인·고소작업차는 기계 키("2104-0010" 따위), 조종원직종은 직종 코드("1048" 따위)라 사람이 못 읽음. **자재만이 아니라 기계·직종 코드도 같이 걸림.**
|
||||
- **고칠 곳** — 이미 있는 요소 찾기 API(`searchElements(group, q)`, 같은 파일 181행 — `openPicker` 모달(`UI_Logic_Pick.ts`)이 쓰는 그 API)로 그 그룹을 한 번 받아 키→이름 표를 만들고, 드롭다운 글자를 `이름 (키)`로 바꿔 낌(값은 키 그대로 보냄). 고른 뒤 화면엔 이름만 보이게 하려면 `<select>`의 표시 글자만 이름으로 하면 되고, 서버로 보내는 값(`ctx.values[name]`)은 지금처럼 키 그대로 두면 됨 — 저장할 건 키, 보일 건 이름.
|
||||
- **걸리는 것** — `searchElements`는 한 번에 최대 100개(`limit:"100"`, 185행)라 후보가 100개 넘는 그룹(기계 카탈로그 전체 등)은 못 다 채움 — `고르기` 배열 안 키만 골라 걸러야 하는데 지금 API엔 「이 키 목록만」으로 찾는 길이 없어(그룹 전체 또는 글 검색만 됨), 후보 수가 많은 입력은 이름 못 채울 수 있음. 후보 수가 적은 입력(작업위치·수종처럼 코드 아닌 한글 옵션)은 애초에 문제 없음 — 코드 값(숫자·"NNNN-NNNN" 꼴)인 옵션만 걸림.
|
||||
Reference in New Issue
Block a user