- M02_MyMachine — 층 뿌리 내기계.json · 줄 = M01 기계 줄 꼴 · 키 EQP{사용자}-#### · 원문번호 「개인 {키}」 · 바로 · 품셈(계수 짝) · 직접 세 꼴 · 같은 이름 알림 · 쓰는 곳
- 셈 색인 = M01 + 지금 층 내 기계(skc.Copy) — 단가산출 셈 · 저장 · 사본 찍기 · 단가 갱신 · 새값 표지 · 기계 찾기 · 시간당 · 사본 모으기가 읽음 · 층 모르는 길 = M01 만
- 시간당 식 = 채운 칸으로 고른 GC 식(268 · 272 · 276 · 273) · M01 기계 619 대 셈 방식 대조 차이 0
- 길 /api/m02/layers/personal/my-machines(목록 · 하나 · 만들기 · 고치기 · 지우기 · 본뜬)
- 지킴 시험 test_821_1_my_machine
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
"""M02 내 기계 길(PLAN 821-1 · `M02_MyMachine`) — `/api/m02/layers/personal/my-machines`(?owner=).
|
|
|
|
GET 목록(줄마다 시간당 · 쓰는곳수) · GET `/{키}` 하나(+시간당 · 쓰는곳 · 같은이름) ·
|
|
POST 만들기 몸 {줄?, 본뜬?: M01 · 내 기계 키(「비슷한 기계에서 시작」 · 「M01 기계 복사해 만들기」)} ·
|
|
PUT `/{키}` 몸 {줄} · DELETE `/{키}`(답 = 쓰는곳 — 그 단가산출은 사본의 마지막 값 그대로).
|
|
권한 = 층 권한 한 벌(`Router_Items._root` — 본인 개인 층 · 맡은 회사 관리자) · 개인 층만(그 밖 404).
|
|
⚠ 등록은 `main.py`(로그인만).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from pydantic import BaseModel
|
|
|
|
from common_util.common_util_auth import verify_session
|
|
from M02_MasterTemplete import M02_MyMachine as mym
|
|
from M02_MasterTemplete.M02_MasterTemplete_Router_Items import Session, _call, _root
|
|
|
|
router = APIRouter(prefix="/api/m02", tags=["M02 My Machine"])
|
|
PATH = "/layers/{layer}/my-machines"
|
|
|
|
|
|
class MachineBody(BaseModel):
|
|
줄: dict[str, Any] | None = None
|
|
본뜬: str | None = None
|
|
|
|
|
|
def _folder(session: Session, layer: str, owner: str | None, write: bool = False):
|
|
if layer != "personal":
|
|
raise HTTPException(status_code=404, detail="내 기계는 개인 층만")
|
|
return _root(session, layer, owner, write=write)
|
|
|
|
|
|
@router.get(PATH)
|
|
def my_machines(layer: str, owner: str | None = None, session: Session = Depends(verify_session)):
|
|
return _call(_folder(session, layer, owner), mym.listing)
|
|
|
|
|
|
@router.get(PATH + "/{key}")
|
|
def my_machine(
|
|
layer: str, key: str, owner: str | None = None, session: Session = Depends(verify_session)
|
|
):
|
|
return _call(_folder(session, layer, owner), mym.one, key)
|
|
|
|
|
|
@router.post(PATH)
|
|
def my_machine_create(
|
|
layer: str,
|
|
body: MachineBody,
|
|
owner: str | None = None,
|
|
session: Session = Depends(verify_session),
|
|
):
|
|
return _call(_folder(session, layer, owner, True), mym.create, body.줄, body.본뜬)
|
|
|
|
|
|
@router.put(PATH + "/{key}")
|
|
def my_machine_update(
|
|
layer: str,
|
|
key: str,
|
|
body: MachineBody,
|
|
owner: str | None = None,
|
|
session: Session = Depends(verify_session),
|
|
):
|
|
return _call(_folder(session, layer, owner, True), mym.update, key, body.줄)
|
|
|
|
|
|
@router.delete(PATH + "/{key}")
|
|
def my_machine_delete(
|
|
layer: str, key: str, owner: str | None = None, session: Session = Depends(verify_session)
|
|
):
|
|
return _call(_folder(session, layer, owner, True), mym.delete, key)
|