Files
Aislo/M02_MasterTemplete/M02_Doc_Router.py
T
eomsangdonandClaude Sonnet 5.5 a2a123e1c7 feat(836-5): 불러오기 저장 전 단가산출도 수식 보기 — 미리 보기 문서째 서버가 읽어 줄 쌓기로 그림
- 줄 쌓기 화면 `memory` 옵션(저장 전 문서) — 빈 키 + 몸 `본` · 왼쪽 보기만 · 디스크 쓰기 0
- 서버 `…/sangeun/-/doc/read` · 미리 셈 몸 `본`(읽기 권한이면 됨)
- 지킴 시험 `test_836_5_memory_doc`(STmate 봉화 · EST 북부 · 금액 = 저장 SK 와 같음) · 시험 둘 문자열 맞춤

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-15 13:51:24 +09:00

86 lines
3.3 KiB
Python

"""M02 단가산출(SK) 수식 길(PLAN 802-4a 4) — `M02_Doc_Sk_Path` 를 층 권한 안에서.
GET /api/m02/layers/{층}/sangeun/{키}/doc 읽기(층 읽기) → {문서, 부름, 끊음, 셈, 사본, 판}
POST /api/m02/layers/{층}/sangeun/{키}/doc/preview 미리 셈(층 쓰기) {문서?, 끊음?, 할일?}
→ {…, 전, 후, 바뀐자원?, 버림?}
POST /api/m02/layers/{층}/sangeun/{키}/doc/save 저장(층 쓰기) {문서?, 끊음?, 할일?, 판} → 읽기 꼴
POST /api/m02/layers/{층}/sangeun/-/doc/read 저장 전 문서 읽기(층 읽기 · 836-5) {본} → 읽기 꼴 · 미리 셈 몸에도 `본` 가능
GET /api/m02/layers/{층}/sangeun/{키}/doc/machine?no= 기계 창(827-1 · 층 읽기) → {사본, 지금, 새값}
옛 별칭 장부 쓰기(812-9) · 연결 찾기 길(810-4)은 걷음(815-2 · 요구 762-1 · 765).
⚠ 등록은 `main.py`(로그인만 · 층 권한은 길 안에서).
"""
from __future__ import annotations
from typing import Any
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from common_util.common_util_auth import verify_session
from M02_MasterTemplete import M02_Doc_Sk_Path as path
from M02_MasterTemplete.M02_MasterTemplete_Router_Items import Layer, Session, _call, _root
router = APIRouter(prefix="/api/m02", tags=["M02 MasterTemplete Sangeun Doc"])
class DocBody(BaseModel):
문서: dict[str, Any] | None = None
끊음: dict[str, Any] | None = None
할일: str | None = None
판: str | None = None
단가기준: str | None = None # 가져온 식만(807-1 · 엑셀 | 우리)
본: dict[str, Any] | None = None # 저장 전 SK 문서째(836-5 · 파일 안 읽음 · 안 씀)
@router.get("/layers/{layer}/sangeun/{key}/doc")
def read_doc(
layer: Layer, key: str, owner: str | None = None, session: Session = Depends(verify_session)
) -> dict:
return _call(_root(session, layer, owner), path.read, key)
@router.get("/layers/{layer}/sangeun/{key}/doc/machine")
def machine_doc(
layer: Layer,
key: str,
no: str,
owner: str | None = None,
session: Session = Depends(verify_session),
) -> dict:
return _call(_root(session, layer, owner), path.machine, key, no)
@router.post("/layers/{layer}/sangeun/-/doc/read")
def read_memory_doc(
layer: Layer,
body: DocBody,
owner: str | None = None,
session: Session = Depends(verify_session),
) -> dict:
return _call(_root(session, layer, owner), path.read_memory, body.본)
@router.post("/layers/{layer}/sangeun/{key}/doc/preview")
def preview_doc(
layer: Layer,
key: str,
body: DocBody,
owner: str | None = None,
session: Session = Depends(verify_session),
) -> dict:
folder = _root(session, layer, owner, write=body.본 is None) # 본 = 안 씀 → 읽기 권한이면 됨
return _call(folder, path.preview, key, body.model_dump(exclude_none=True))
@router.post("/layers/{layer}/sangeun/{key}/doc/save")
def save_doc(
layer: Layer,
key: str,
body: DocBody,
owner: str | None = None,
session: Session = Depends(verify_session),
) -> dict:
folder = _root(session, layer, owner, write=True)
return _call(folder, path.save, key, body.model_dump(exclude_none=True))