- 표지 = 수식 문서 머리 · 옛 로직 줄 칸 「부품」 — 기계경비식 9 · 작업량 틀 60(기종 = 기계표 상세구분 · 규격 열쇠) · 계수식 4 · 변환기가 옮김 · 틀 문서 9 장 - 지움 = 작업량당 기계경비 6(GC001145 · 1148 · 1151 · 1156 · 1159 · 1166 · 부르는 곳 0 · 요구 734-4 · 735-4) — 수식 문서 · 옛 로직 · 키대장 폐기 칸 · 빌더 · 변수표 - 이름 꼬리 4 = 원문 제목(지게운반 · 인력운반(기계설비) · 벽돌운반 · 수중펌프 설치 및 해체) · 키 폐기 0 - 서버 = `M01_MasterData_Parts` — M01 `/logics` · M02 `/logic-lib/logics` 목록에서 부품 뺌(1,440) · 키로 열기 · 부르기 그대로 · `/m01/parts`(기종 계산식 · 틀 · 계수식) · `/m02/logic-lib/machine-parts` · 연결 찾기 과녁에서 부품 뺌(1,444 → 1,435 · 판정 코드 그대로) - 금액 전후 = 문서 1,513 · 셈 9,626(기본 + 옵션 표본) 모두 같음 · 791_1 지문 남은 1,513 같음 → 지문 다시 뜸 · 802_2 변환 대조 1,513 · 목록 xlsx 다시 씀(요약 수) - 낡은 시험 = 1,519 · 1,518 기대 → 1,513 · GC001148 견본 → 같은 꼴 GF000089 토사깍기(기계)(블록 Q 39.293 · 합계 2,190) · 지운 6 을 셈하던 줄 걷음 · 목록 수 1,440 · 묶음 328 · 부르는 수 507 - 새 지킴 시험 test_813_2_parts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
82 lines
3.0 KiB
Python
82 lines
3.0 KiB
Python
"""단가산출 로직 상세 읽기 · 셈 길(PLAN 717-1) — `/api/m02/logic-lib/…` · 로그인만(`main.py`).
|
|
|
|
M01 상세 부품(`M01_MasterData_UI_Logic_Api.ts` · `Api_Fetch.ts` · `Logic_Note.ts`)이 길 앞머리만
|
|
`/m02/logic-lib` 로 바꿔 부름 — 길 · 몸 · 답 = M01 `/api/m01/…` 와 같음(M01 길 함수를 부름).
|
|
쓰기 없음 — `/calc` · `/text` 의 `row`(저장 안 한 고친 줄)는 메모리 사본에서만 셈(`Store._swap`).
|
|
`/logics` · `/subs` · `/logic` · 원문은 `M02_MasterTemplete_Router_Combos.py` 에 있음.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
from M01_MasterData import M01_MasterData_Parts as parts
|
|
from M01_MasterData import M01_MasterData_Router as m01
|
|
from M02_MasterTemplete import M02_Machine_Hourly as machine
|
|
|
|
router = APIRouter(prefix="/api/m02/logic-lib", tags=["M02 Logic Lib Read"])
|
|
|
|
#: `/rows` 로 줄을 내줄 요소 파일 앞머리 — 인력 · 재료 · 기계(고르기 표 · 품목 찾기)
|
|
ROW_FILES = ("인력", "재료", "기계")
|
|
#: `/table` 로 내줄 표 파일 앞머리 — 소요량 · 계수(설명 카드 원문 표)
|
|
TABLE_FILES = ("소요량_", "계수_")
|
|
|
|
|
|
@router.get("/logic/auto")
|
|
def get_auto(key: str) -> dict:
|
|
return m01.get_logic_auto(key)
|
|
|
|
|
|
@router.get("/elements")
|
|
def get_elements(group: str, q: str = "", limit: int = 50) -> dict:
|
|
return m01.get_elements(group, q, min(limit, 200))
|
|
|
|
|
|
@router.get("/pick")
|
|
def get_pick(kind: str, q: str = "", limit: int = 50) -> dict:
|
|
return m01.get_pick(kind, q, min(limit, 200))
|
|
|
|
|
|
@router.get("/materials")
|
|
def get_materials(
|
|
sub: str, detail: str = "", spec: str = "", region: str = "", unit: str = "", limit: int = 50
|
|
) -> dict:
|
|
return m01.get_materials(sub, detail, spec, region, unit, min(limit, 200))
|
|
|
|
|
|
@router.get("/rows")
|
|
def get_rows(file: str, page: int = 1, size: int = 50, q: str = "", sub: str = "") -> dict:
|
|
if not file.startswith(ROW_FILES):
|
|
raise HTTPException(status_code=403, detail="요소 파일(인력 · 재료 · 기계)만 읽음")
|
|
return m01.get_rows(file, page, size, q, False, sub, "", "")
|
|
|
|
|
|
@router.get("/table")
|
|
def get_table(file: str, key: str) -> dict:
|
|
if not file.startswith(TABLE_FILES):
|
|
raise HTTPException(status_code=403, detail="소요량 · 계수 표만 읽음")
|
|
return m01.get_table(file, key)
|
|
|
|
|
|
@router.post("/calc")
|
|
def post_calc(body: m01.CalcBody) -> dict:
|
|
"""M01 `/calc` 와 같음 — `row` = 저장 안 한 고친 줄(셈만 · 쓰기 없음)."""
|
|
return m01.post_calc(body)
|
|
|
|
|
|
@router.post("/text")
|
|
def post_text(body: m01.CalcBody) -> dict:
|
|
return m01.post_text(body)
|
|
|
|
|
|
@router.get("/machine-hourly")
|
|
def get_machine_hourly(key: str) -> dict:
|
|
"""기계(EQ) 한 시간 값 노 · 재 · 경(736-3 · [항목 추가] 기계 고정 줄 단가)."""
|
|
return machine.hourly(key)
|
|
|
|
|
|
@router.get("/machine-parts")
|
|
def get_machine_parts(no: str) -> dict:
|
|
"""줄 쌓기 기계 넣기(813-2) — 기계 원문번호 → 그 기종 작업량 틀(문서째)."""
|
|
return m01._call(parts.of_machine, no)
|