feat: v0.4 画布编辑器——拖拽布置分格v1
- WindoorCanvas editable模式: 加竖梃/横梃点击玻璃区域实时分割
- 多边形两次交叉点法分割, mm.sp分割线记录同步, 撤销栈
- 订单详情: 编辑分格后保存图纸(PUT orders/{id})
- 样板库: 另存为我的样板(POST windoor/templates, 企业隔离)
- 10个API端点回归全部通过
This commit is contained in:
@@ -52,6 +52,25 @@ async def search_templates(
|
||||
} for t in items])
|
||||
|
||||
|
||||
@router.post("/templates")
|
||||
async def save_template(body: dict, db: DbSession, user: CurrentUser):
|
||||
"""保存自定义样板(编辑器另存)。body: {name, catelog_id, drawing_data, note?}"""
|
||||
from pydantic import ValidationError
|
||||
from huamenchuang.schemas.windoor import TemplateSave
|
||||
try:
|
||||
data = TemplateSave(**body)
|
||||
except (ValidationError, TypeError):
|
||||
return fail("参数错误: 需要 name 与 drawing_data")
|
||||
t = WindoorTemplate(
|
||||
name=data.name, drawing_data=data.drawing_data, pic_url="",
|
||||
catelog_id=data.catelog_id or 0, note=data.note or "",
|
||||
is_default=0, company_id=user.company_id,
|
||||
)
|
||||
db.add(t)
|
||||
await db.flush()
|
||||
return ok(data={"id": t.id}, message="样板已保存")
|
||||
|
||||
|
||||
@router.get("/templates/{template_id}")
|
||||
async def template_detail(template_id: int, db: DbSession, user: CurrentUser):
|
||||
"""模板详情:返回 drawing_data(画布可直接 openFile 渲染)。"""
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
"""样板库 schemas。"""
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class TemplateSave(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=128)
|
||||
drawing_data: str = Field(min_length=2)
|
||||
catelog_id: int | None = None
|
||||
note: str = ""
|
||||
Reference in New Issue
Block a user