Files
Aislo/M02_MasterTemplete/M02_MyMachine_Router.py
T
eomsangdonandClaude Opus 5.5 ebd1bc0121 feat(821-1): 내 기계(개인 층 기계 줄) 저장 · 길 · 찾기 · 시간당 · 사본 · 단가 갱신이 개인 줄 읽기
- 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>
2026-11-12 13:36:24 +09:00

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)