# floorplan-quotation skill 开发上下文(给 Claude Code) ## 项目 拉迷全屋定制「户型图→报价单」智能体技能,纯 JS ESM(浏览器/CLI 共用)。 - `skill/src/` 各模块:defaults.js(规则库) quote.js(计价) vision.js(GLM视觉识别) geometry.js redraw.js(SVG重绘) parse.js(PDF/图片) report.js(HTML报告) publish.js(S3) index.js(管线+CLI) - CLI:`node bin/fpc.js quote <图> --client X --tier standard` - 测试:`node test/run.js`(12 项断言,必须全过) - 计价口径与公司 Excel 一致:投影面积×三档材质区间单价;厨房按计费延米(L/U型扣转角0.6m×处数+冰箱位1m);客户三型 price/standard/quality;谈价区间=到手价±浮动率 ## 当前任务(用户反馈的两个 bug) ### Bug 1(必须修):报告默认展示重绘 SVG,但与原图结构相差太大 用户要求:**默认展示原始户型图**。修改 `skill/src/report.js` 的 renderReport: - planBlock 逻辑改为:`imageDataUrl` 存在时**优先原图**(`.plan-img`),SVG 仅在 `opts.preferSVG === true` 时使用 - 同步改 `skill/src/index.js`:quoteFromFile 不再把 planSVG 传给 renderReport(或传 preferSVG:false) - 保留 redraw.js 不删(未来实验用) ### Bug 2(必须修):手机上「调整报价」操作台点击无效 桌面浏览器正常、手机无效 → 触屏兼容问题。修改 report.js 内嵌脚本与样式: - 所有交互元素加 `cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent` - 事件绑定从裸 `addEventListener('click')` 改为**统一事件委托**且同时监听 `click` 与 `touchend`(touchend 里 preventDefault 防止幽灵 click 双触发),委托到 document 级 - `.chip`/`.btn`/`.del`/`.room-h` 全部走委托;input 的 change 事件用委托 `change` 监听 - `#cabList` 行内 input 的 `data-i` 索引绑定逻辑重写:委托模式下从 `e.target` 读 dataset - 不要用 alert()(微信内置浏览器可能屏蔽),改用页内 toast div - 检查 CSS:`:active` 状态替代 `:hover`(触屏无 hover) ## 约束 - 只改 skill/ 目录下文件,不碰仓库其他程序 - 改完运行 `node test/run.js` 必须全过;再用 `node bin/fpc.js` 无 API key 的模式跑不了真实识别没关系,重点是语法与单测 - 中文注释,保持现有代码风格