Files
Aislo/M02_MasterTemplete/DataFlow/M02_DF_Router.py
T
eomsangdonandClaude Opus 5.5 6015525efd feat(842-2): 기계 비활성 — M01 기계 목록 「사용」 스위치 · 끈 기계는 찾기 · 고르기 · 잇기에서 뺌 · 해상 기계 79 대 끔
- 표지 = 기계 줄 맨 위 칸 `비활성: true`(없음 = 켜짐 · 값 묶음 밖) · 틀 검사 = 기계 줄에만 true(check_master OFF)
- M01 기계 목록 = 끝 열 「사용」 스위치(초안 → 페이지 [저장] · 자동저장 없음) · 끈 줄 흐림 · 머리 「비활성 같이 보기」(끄면 서버 rows state 「켜짐」)
- 뺌 = 요소 찾기 창(elements · 찾아 넣기 · 단가산출 기계 창) · logic-lib rows · M01 시험 계산 기계 고르기 표 · 내 기계 「비슷한 기계에서 시작」 ·
  불러오기 기계 잇기(M02_Machine_Find 표) · 기계경비식 「기계」 옵션(새 GET /api/m02/df/machine-off · 고른 값은 남기고 「· 비활성 기계」 꼬리)
- 셈 길은 그대로 — 끈 기계를 쓰던 단가산출 · 사본 값 같음
- 자료 = 해상장비 79 대(펌프 준설선 13 · 그래브 준설선 10 · 하천골재채취선 7 · 기중기선 5 · 예선 9 · 양묘선 11 · 토운선 6 · 이우선 2 · 대선 16) 끔
- 시험 = test_842_2_machine_off 새로 · test_804_10 옵션 글 단언을 새 글로 고침(끈 기계 거름이 들어간 줄)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-15 18:29:05 +09:00

53 lines
2.1 KiB
Python

"""단위 · 금액 표준 표 읽기 — `GET /api/m02/df/standards` → {unit, money, saved} · 기계 이름 `GET /machine-names`.
부르는 곳 = 단위 고르기(`M02_DF_UnitPick.ts`) · 끝수 표준(`M02_DF_Round.ts`).
표 = `_standard/` 파일(git 이 따라감) · 권한 = 로그인만(읽기만 · `main.py` 한 줄 · M02 줄 쌓기 단위 고르기).
"""
from __future__ import annotations
from pathlib import Path
from fastapi import APIRouter, HTTPException
from M01_MasterData import M01_MasterData_Store as store
from M01_MasterData.M01_MasterData_Router import _num
from M02_MasterTemplete.DataFlow import M02_DF_Values as dv
router = APIRouter(prefix="/api/m02/df", tags=["M02 DataFlow"])
STANDARD = Path(__file__).resolve().parent / "_standard"
@router.get("/machine-names")
def get_machine_names() -> dict:
"""기계 원문번호 → 「이름 규격」(요구 692-2) — 옵션 드롭다운 라벨만 · 값은 원문번호 그대로 · 겹친 번호는 첫 줄."""
out: dict[str, str] = {}
for data in store.loaded()[0].values():
if data.get("그룹") != "기계":
continue
for row in data.get(store.items_key(data)) or []:
code = str(row.get("원문번호") or "")
if code and code not in out:
out[code] = f"{row.get('이름') or ''} {row.get('규격') or ''}".strip()
return out
@router.get("/machine-off")
def get_machine_off() -> list[str]:
"""끈 기계 원문번호(842-2) — 그 번호 기계가 모두 「비활성」 · 옵션 고르기 목록에서 뺌(고른 값은 남김)."""
on, off = set(), set()
for data in store.loaded()[0].values():
if data.get("그룹") == "기계":
for row in data.get(store.items_key(data)) or []:
(off if row.get("비활성") else on).add(str(row.get("원문번호") or ""))
return sorted(off - on - {""})
@router.get("/standards")
def get_standards() -> dict:
try:
return _num(dv.standards(STANDARD))
except store.StoreError as e:
raise HTTPException(status_code=e.status, detail=e.detail) from e