auto-save 2026-05-13 18:24 (~3)

This commit is contained in:
2026-05-13 18:24:27 +08:00
parent 22261986d5
commit 9a9c0cca9c
3 changed files with 68 additions and 0 deletions

View File

@@ -1209,6 +1209,12 @@ class AddElementReq(BaseModel):
region: dict | None = None
class UpdateElementReq(BaseModel):
name_zh: str | None = None
name_en: str | None = None
position: str | None = None
@app.post("/jobs/{job_id}/frames/{idx}/elements", response_model=Job)
def add_element(job_id: str, idx: int, req: AddElementReq) -> Job:
"""加一条元素 · 若 name_en 缺则自动 zh→en 翻译"""
@@ -1265,6 +1271,37 @@ def add_element(job_id: str, idx: int, req: AddElementReq) -> Job:
return job
@app.patch("/jobs/{job_id}/frames/{idx}/elements/{element_id}", response_model=Job)
def update_element(job_id: str, idx: int, element_id: str, req: UpdateElementReq) -> Job:
"""更新元素标签 / 英文提示。提取不准时允许用户修正,不强制重建元素。"""
job = JOBS.get(job_id)
if not job:
raise HTTPException(404, "job not found")
changed_name = ""
found = False
new_frames = []
for f in job.frames:
if f.index == idx:
for e in f.elements:
if e.id == element_id:
found = True
if req.name_zh is not None:
name_zh = req.name_zh.strip()
if not name_zh:
raise HTTPException(400, "name_zh required")
e.name_zh = name_zh
changed_name = name_zh
if req.name_en is not None:
e.name_en = req.name_en.strip()
if req.position is not None:
e.position = req.position.strip()
new_frames.append(f)
if not found:
raise HTTPException(404, "element not found")
update(job, frames=new_frames, message=f"更新元素 · 分镜 {idx + 1} · {changed_name or element_id}")
return job
@app.delete("/jobs/{job_id}/frames/{idx}/elements/{element_id}", response_model=Job)
def delete_element(job_id: str, idx: int, element_id: str) -> Job:
job = JOBS.get(job_id)