diff --git a/CHANGELOG b/CHANGELOG index cfe8fcd..3ef9021 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ # CHANGELOG +- [2026-10-07 11:30] FIX: v2.49 大样图窗方向识别修复(用户报告: 窗被旋转竖放)。对照第39页登记表: 修复前左上 2380宽横向窗被生成为 1400x2380 竖版, 多窗宽高对调; 根因: 提示词无方向约束, gpt-image 重绘时自由旋转窗体; 修复: 提示词新增「方向铁律(最重要)」——每个窗横竖方向必须与原图完全一致(横向窗输出宽>高/竖向窗高>宽, 严禁旋转竖立横放)+工程制图标注约定(宽度标窗下水平线/高度标右侧竖直线, 登记表宽/mm 栏对应水平方向 高/mm 栏对应竖直方向)+Avoid 追加被旋转方向的窗; 复测第39页: 全部窗方向与原稿一致(横向窗保持横向/磨砂竖条窗保持竖向 125x1185), 窗5 3530 完全精确, 内左右开文字标注/内开内倒对扇/磨砂玻璃标注等细节保留 (Files: src/huamenchuang/api/ai_render.py) - [2026-10-07 10:30] FEAT: v2.48 大样图全链路优化(草图预处理工具链+结果对比)。蓝图 Tab 重构: ①旋转转正(↺/↻ 90°, 治理横拍旋转图方向塌陷——离屏 canvas 旋转绘制, ≤1536px) ②框选裁剪拆窗(拖拽框选窗区域, 裁剪后仅转换选中部分——根治一页多窗的窗数幻觉与高密度页塌陷, 窗数天然1:1) ③结果并排对比(原始草图|AI大样图 左右对照, 人工核对尺寸效率提升) ④「再生成一张」快捷按钮(应对轮间方差挑最佳) ⑤大样图模式独立结果区(不再与照片/速览共用); 端到端实测: 上传→旋转90°→框选→生成→并排对比全链路通(34s), 裁剪含两窗局部时 AI 仍正确生成两窗规范大样图(分格/开扇/尺寸全对); 移除测试依赖 pillow; 回归: 冒烟 60/60+24 页巡检 0 异常 (Files: frontend/src/views/AIRenderView.vue) - [2026-10-07 09:30] TEST+FIX: v2.47 大样图真实测试视觉审计(4 页手绘登记表)。批量实测 4 页全部生成成功(33~42s, 加固后零失败); 逐页视觉审计: p51 4/4 窗结构/开扇全对但 2 处手写数字误识(2200↔2020/1995↔1955); p49(旋转横拍+7窗高密度)窗合并丢失+尺寸多处无出处; p50 4窗生成 5 窗(1770x1200 重复)+1 处开扇反向; p52 4窗生成 5 窗(2810 重复); 提示词强化三铁律(数量/尺寸/开向)+窗编号+划掉数字以改后为准+无法辨认标?+旋转图先转正; 复测 p50 反证: 6 窗(幻觉更重)——**扩散类生图模型对对象数量精确控制是能力边界, 提示词无法根治**, 有效部分(窗编号/尺寸?标注/表格信息卡)保留; 产品对策对齐 autocad 项目审图定位: 蓝图 Tab 加审图警示(尺寸与窗数可能有误, 逐窗核对后再用于报价); 审计资产: shots/audit-{p49,p50,p51,p52}-{src,out}.png (Files: src/huamenchuang/api/ai_render.py, frontend/src/views/AIRenderView.vue) - [2026-10-07 08:00] FIX: v2.46 大样图生成失败加固(用户报告偶发失败)。诊断: 后端 API 复现两页手绘登记表均 38~43s 生成成功——失败为中转偶发超时/慢响应叠加手机原图未压缩(现场拍照 5~10MB, 测试图仅 194KB, base64 后请求体过大加剧超时); 三重加固: ①前端草图上传压缩至 ≤1536px JPEG(toDataURL 0.9, 复用照片合成模式同款口径, 治本) ②后端生图请求超时/5xx 自动重试一次(4xx 快速失败不重试), 请求段重构 _post_image() ③重试前 3s 等待; 实测第 53 页登记表原图 38s 成功(4 窗逐窗转换: 5860 大窗+700 上亮+730 标注/1680/1775/1760, 尺寸与手稿全一致, 开启扇符号保留); 回归: 冒烟 60/60+24 页巡检 0 异常 (Files: src/huamenchuang/api/ai_render.py, frontend/src/views/AIRenderView.vue) diff --git a/shots/bp-dir-out.png b/shots/bp-dir-out.png new file mode 100644 index 0000000..d26d696 Binary files /dev/null and b/shots/bp-dir-out.png differ diff --git a/src/huamenchuang/api/ai_render.py b/src/huamenchuang/api/ai_render.py index c24fce2..e69edcc 100644 --- a/src/huamenchuang/api/ai_render.py +++ b/src/huamenchuang/api/ai_render.py @@ -75,11 +75,12 @@ Primary request: 将输入的门窗手绘草图(现场量尺登记表照片) Input images: 第一张是原始手绘草图照片或 2D 图纸,仅作为几何、分格与标注位置的几何来源。输入可能是一页包含多个窗的手绘量尺登记表——逐窗转换,保持各窗的相对布局与各自分格。 Style/medium: 黑白二维门窗工程大样图、正投影立面、细黑线框、玻璃淡灰填充、外部尺寸线与分格尺寸标注、中文工程标注、每个窗下方标注"窗1/窗2…"编号、右下角标题栏(图名/比例/日期)。 Constraints: {feat} +方向铁律(最重要): 每个窗的横竖方向必须与原图完全一致——原图中横向更宽的窗,输出必须仍是横向(宽>高);原图中竖向更高的窗,输出必须仍是竖向(高>宽);严禁旋转、竖立或横放任何窗。宽度尺寸一律标注在窗的正下方水平尺寸线上,高度尺寸一律标注在窗的右侧竖直尺寸线上。登记表手写表格中"宽/mm"栏的数字对应草图的水平方向,"高/mm"栏对应竖直方向。 数量铁律: 输出大样图的数量必须与输入草图中的窗数量完全相同,一个不多一个不少;每个窗只绘制一次,严禁重复绘制同一个窗,严禁合并或省略任何窗。 尺寸铁律: 手写数字可能有涂改或划掉——被划掉的数字以改后数字为准;只誊写可清晰辨认的数字;无法辨认的尺寸处只标注"?",严禁猜测或编造任何数字。 开向铁律: 每个开启扇的对角三角符号必须与原图的铰链侧、开启方向完全一致,不得镜像或反向。 结构铁律: 严格保留每个窗的分格数量、比例与位置;不要增删或合并分格;如果照片是旋转拍摄的,先将画面转正再逐窗转换;输出仅供人工审图与报价附件,不作为 CAD 几何或生产数据来源;无水印、无装饰性场景、无彩色、不保留登记表表格框线。 -Avoid: 三维渲染、透视效果、写实照片、彩色渲染、虚构品牌、模糊文字、重复的窗。""" +Avoid: 三维渲染、透视效果、写实照片、彩色渲染、虚构品牌、模糊文字、重复的窗、被旋转方向的窗。""" @router.post("/generate")