feat(z01): 표 목록을 서버가 냄 — GET /api/master-data/base-prices 가 갈래(base_price·pumsem_basis) · kind · 한글 이름(이름표에서) · 줄 수를 줌 · 화면이 kind 목록을 제 코드에 들면 새 kind 가 조용히 안 뜸(기계 작업량이 그랬음) · kind 를 하나 더하면 목록이 저절로 느는지 시험으로 못박음(브레인)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
This commit is contained in:
2026-09-16 15:56:24 +09:00
co-authored by Claude Opus 5
parent 389d014018
commit 28a5bcb636
3 changed files with 70 additions and 1 deletions
@@ -403,6 +403,37 @@ def spec(kind: str, columns: list[str]) -> dict[str, Any]:
}
#: 갈래 둘 — 기초단가(원가 = 얼마인가) · 품셈 기준(수량 = 얼마나 드나). 화면은 이것으로 상자를 세움.
BASE_PRICE_GROUP, PUMSEM_GROUP = "base_price", "pumsem_basis"
def kind_group(kind: str) -> str:
return PUMSEM_GROUP if kind in base_tables.SPEC else BASE_PRICE_GROUP
def kind_label(kind: str) -> str:
"""kind 한글 이름 — 이름표 `merged_tables` 에서만(코드에 박지 않음 · 없으면 영문 그대로)."""
merged = tables.load_labels().get("merged_tables") or []
named = next((t for t in merged if t.get("key") in (kind, f"{kind}s")), {})
return named.get("name_ko") or kind
def kinds() -> list[dict[str, Any]]:
"""화면이 상자를 세울 목록 — **서버가 냄**(화면이 제 코드에 들면 새 kind 가 조용히 안 뜸).
갈래 · kind · 한글 이름(이름표) · 줄 수.
"""
return [
{
"group": kind_group(kind),
"kind": kind,
"label": kind_label(kind),
"rows": len(rows(kind)),
}
for kind in KINDS
]
def row_label(kind: str, row: dict[str, Any] | None) -> str:
if row is None:
return ""