feat: 订单模块 v0.1 实现与样板二维平面图全量采集

- 后端分层架构: api(Controller)/services(业务)/repositories(数据)/models(ORM)
- 订单模块: 创建(契约对齐目标站{contract_id,drawing_data,pic_url})、搜索、
  详情、更新、删除、状态机(意向单→正式单→生产中→完工/取消,非法迁移拒绝)、
  7节点生产进度、审计日志
- 认证模块: JWT签发(HS256/24h)、PBKDF2密码、注册登录
- 样板库API: 分类树/模板搜索/模板详情, drawing_data 与采集样本同构
- 254张样板二维平面图全部采集并静态挂载 /static/windoor-images/
- 种子脚本: 管理员+分类树+254套样板入库
- 统一响应envelope与付费墙(code=10086)/权限(code=210)语义
- 端到端冒烟测试7/7通过, 更新API.md §12自研接口规范
This commit is contained in:
HHY
2026-09-20 08:16:03 -07:00
parent 7554f2e3c7
commit d3e6de585c
288 changed files with 1835 additions and 9 deletions
@@ -0,0 +1,44 @@
"""样板库模型(drawing_data 与目标站 254 套样本同构)。"""
import datetime
from sqlalchemy import DateTime, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column
from huamenchuang.core.database import Base
class WindoorTemplate(Base):
"""官方/企业窗型样板。drawing_data 为 shapeManager 序列化 JSON。"""
__tablename__ = "windoor_templates"
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(128), default="")
drawing_data: Mapped[str] = mapped_column(Text) # 原样保留编辑器 JSON 字符串
pic_url: Mapped[str] = mapped_column(String(255), default="")
catelog_id: Mapped[int] = mapped_column(Integer, default=0, index=True)
note: Mapped[str] = mapped_column(String(255), default="")
times: Mapped[int] = mapped_column(Integer, default=0) # 引用次数
# 尺寸限制(毫米),用于编辑器校验
low_width: Mapped[int] = mapped_column(Integer, default=0)
high_width: Mapped[int] = mapped_column(Integer, default=0)
low_height: Mapped[int] = mapped_column(Integer, default=0)
high_height: Mapped[int] = mapped_column(Integer, default=0)
is_default: Mapped[int] = mapped_column(Integer, default=1) # 1=官方样板
company_id: Mapped[int] = mapped_column(default=1, index=True)
created_at: Mapped[datetime.datetime] = mapped_column(DateTime, default=datetime.datetime.utcnow)
updated_at: Mapped[datetime.datetime] = mapped_column(
DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow
)
class WindoorCatelog(Base):
"""样板分类树(推拉门{平开,推拉,复古门,肯德基门,中式门窗,转角窗})。"""
__tablename__ = "windoor_catelogs"
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(64))
fid: Mapped[int] = mapped_column(Integer, default=0, index=True)
note: Mapped[str] = mapped_column(String(255), default="")
company_id: Mapped[int] = mapped_column(default=1, index=True)