fix: v2.5 浏览器级可视化验证与修复闭环

- 新增 ui-shots.mjs/open-shot.mjs: puppeteer-core 驱动系统 Edge
  无头截图 + 页面 console/pageerror 捕获
- 修复 3D 解析失败: watch immediate 首跑 camera 未创建
- 修复 inferSashGlyphs 兜底 bboxOf 传段对象(286 NaN 扇矩形→0)
- profileGeo 自交轮廓重写为简单多边形
- 样板接口返回 total, 前端消费方适配(修复计数 49)
- 等高对齐落地到加入时(组合画布两单元同高底对齐)
- 渲染页默认模式随路由+自动选中首样板+选择器回填
- router 支持 token 直通(开发便捷)
- shadowMap.type 移除(three r186 已移除 PCFSoft)
- 综合截图验证: 样板库/组合/3D/工作台全部正常无报错
This commit is contained in:
HHY
2026-09-21 15:02:06 -07:00
parent 2cee9febe5
commit b6d7db58d6
19 changed files with 488 additions and 17 deletions
+13 -7
View File
@@ -44,15 +44,21 @@ async def search_templates(
conds.append(WindoorTemplate.catelog_id == catelog_id)
if is_default is not None:
conds.append(WindoorTemplate.is_default == is_default)
stmt = (select(WindoorTemplate).where(*conds)
from sqlalchemy import func as _func
where = *conds,
total = (await db.execute(select(_func.count()).select_from(WindoorTemplate).where(*where))).scalar_one()
stmt = (select(WindoorTemplate).where(*where)
.order_by(WindoorTemplate.id).offset((page - 1) * page_size).limit(page_size))
items = list((await db.execute(stmt)).scalars())
return ok(data=[{
"id": t.id, "name": t.name, "pic_url": t.pic_url, "catelog_id": t.catelog_id,
"note": t.note, "times": t.times,
"low_width": t.low_width, "high_width": t.high_width,
"low_height": t.low_height, "high_height": t.high_height,
} for t in items])
return ok(data={
"total": total, "page": page, "page_size": page_size,
"data": [{
"id": t.id, "name": t.name, "pic_url": t.pic_url, "catelog_id": t.catelog_id,
"note": t.note, "times": t.times,
"low_width": t.low_width, "high_width": t.high_width,
"low_height": t.low_height, "high_height": t.high_height,
} for t in items],
})
@router.post("/templates")