CLAUDE.md 2.3 KB

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') 改为统一事件委托且同时监听 clicktouchend(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 的模式跑不了真实识别没关系,重点是语法与单测
  • 中文注释,保持现有代码风格