Merge remote-tracking branch 'origin/dev' into main_desktop_1
# Conflicts: # M01_MasterData/M01_MasterData_Router.py # resources/master_data/_화면_계약.md
This commit is contained in:
@@ -268,3 +268,33 @@ def logic_delete(key: str, version: str) -> dict:
|
||||
if store.read(OWN)[1] != version:
|
||||
raise store.StoreError(409, {"stale": [OWN]})
|
||||
return _write([{"op": "delete", "key": key}])
|
||||
|
||||
|
||||
# ── 식으로 만들기 ──────────────────────────────────────────────────────
|
||||
def logic_draft(
|
||||
text: str,
|
||||
decided: dict | None = None,
|
||||
head: dict | None = None,
|
||||
save: bool = False,
|
||||
owner: str = OWNERS[0],
|
||||
) -> dict:
|
||||
"""줄로 적은 식 → 변수 · 검사(`_화면_계약.md` 7장).
|
||||
|
||||
`head`(이름 · 결과단위 …)가 오면 로직 한 줄까지 미리 보이고, `save` 면 다 정해진 때만
|
||||
자체 로직으로 저장(키 GX 는 서버) · 덜 정했거나 걸리면 422 로 아무것도 안 씀.
|
||||
"""
|
||||
import master_draft as draft # store 가 scripts 를 길에 올린 뒤라야 함
|
||||
|
||||
got = draft.read(text, decided)
|
||||
if head is None:
|
||||
return {**got, "logic": None}
|
||||
row, bad = draft.옮기기(text, decided, head)
|
||||
got["문제"] = got["문제"] + [x for x in bad if x not in got["문제"]]
|
||||
got["다됨"] = not got["문제"]
|
||||
if save and got["문제"]:
|
||||
raise store.StoreError(
|
||||
422, {"errors": [f"{x['줄']}줄 · {x['말']}" for x in got["문제"]], "문제": got["문제"]}
|
||||
)
|
||||
if not save:
|
||||
return {**got, "logic": row or None}
|
||||
return {**got, **logic_new(row, owner)}
|
||||
|
||||
Reference in New Issue
Block a user