HS Design 报价自动化系统(2026-08-01 建立)

背景决策

  • 弃用 quotation SaaS(部署经常出问题,Sozo 心累)
  • 改用 Google Sheets + Hermes AI 协作:制度化又灵活
  • Sozo 定协作模式:大框架 AI 写,定制化细节用户写,标准 item AI 自动匹配,用户写好 AI 检查逻辑

系统组件(Google Sheets)

工作簿: https://docs.google.com/spreadsheets/d/1AtTlTiqMLbl8t0u8u6osQQ6NmiQ-lG6kXewsgIuUwRM/edit

Sheet内容
Quotation 模板品牌化报价格式(10 工种分组 + 付款条款)
Cost Breakdown成本明细(一 item 多成本子项)
Item 库85 个 item(最终清洗版,从 HS Design + Hill Land 提取)
检查SOP漏项检查逻辑(18 条规则)

架构决策(2026-08-01 晚场细化 → 方案 B)

  • 对比「A. 每项目单独 Sheet」vs「B. Item 大数据 + 项目 Sheet 结合」后,用户确认 B以一处累积的 Item 库为核心,每个项目用独立 Quotation Sheet
  • 理由:item 集中才能做训练/分析、自动化匹配、跨项目漏项检查;参考格式用 Rosmerah(用户喜欢),item 数据大量从前公司 Hill Land 提取

构建进度(2026-08-01 晚场 17:55–19:11)

  • ITEM 大数据库:Rosmerah 28 → HS Design 92 → Hill Land 451(去重 298)→ 智能分类 → 清洗合并 85 个最终 item(Carpentry 28 / Supply-Install 18 / Labour 13 / Masonry 13 / Plumbing 6 / Painting 4 等)
  • Quotation 模板重建:54 行 = 品牌化表头 + 10 工种分组 + 条款区;利润公式(Cost → Profit Margin → Profit → Selling Price)
  • 检查SOP Sheet:18 条漏项检查规则(敲/水泥/地砖/橱柜/水电常见坑)
  • skill 固化hsdesign-quotation-system(D:\hermes\skills\productivity\hsdesign-quotation-system\SKILL.md)
  • 提取/清洗脚本:D:\hermes\hsdesign_work\(init_item_db / extract_all_items / clean_merge_items / merge_hillland_to_db / write_final_item_db 等)
  • Hill Land 数据源:G:\.shortcut-targets-by-id\144qcqfCNgK6WQLz5lcDTIjjsFaNKXcH8\Hillland\Customer Project\Proposal(HLP0001-0064+,43 个 xlsx 已复制本地)
  • 用户指示:一小时内无回复则继续自动完善数据库(自动续跑模式)

品牌风格(HS Design “Design your Health Space”)

  • primary 鼠尾草绿 #7C9A8E(主表头)
  • gold 金 #C9A84C(强调/总额)
  • primary-light #F0F7F4(分组背景)
  • 字体:Plus Jakarta Sans / Segoe UI
  • 配色取自原有 quotation SaaS UI (quote-app.js)

数据源

  • HS Design(新公司):格式标准(Rosmerah/HSP/HSD),6 报价单提取
  • Hill Land(前公司):数据量大(43 xlsx → 451 item),格式不采用但词汇可用
  • 本地脚本:D:\hermes\hsdesign_work\quotes_data\

报价流程

  1. 收集项目信息(房型/面积/工种)
  2. 查 Item 库匹配 item 措辞
  3. 填 Quotation 模板(工种分组)
  4. 成本拆 Cost Breakdown(一 item 多成本)
  5. 利润 20-33%(成本×1.2-1.5)
  6. 对照检查SOP 找漏项
  7. 用户审 → 导出 PDF

待办的两个新报价

  • Austin 橱柜:商家版 + 铝蜂窝板橱柜
  • Permas Condo:敲工/水泥/地砖/装工/少量木工

相关 skill

  • hsdesign-quotation-system(主 skill)
  • workspace-mcp-auth(授权)
  • winrm(远程)

深夜场更新(2026-08-01 21:17–08-02 00:14)

当前文件体系(4 个独立 Sheets,勿混淆)

模板格式基准(用户原模板,Quotation sample.xlsx)

  • Description 在 C 列(宽 63.4),售价 H,成本 J-L,利润 N-P;打印区域 A1:I66 → 导出 PDF 自动跳过成本/利润列
  • Description 全列 wrap=True;字体 Quattrocento Sans 12pt;工种标题行青绿 #5E9E9B + 白字粗体
  • xlsx 导入 Google Sheets 1:1 保留格式(列宽/wrap/合并/打印区域/颜色/公式)→ 重建报价版面用「上传原模板转换」优于 API 逐格重建
  • item 措辞规范:尺寸放描述末尾 + 括号 + 斜杠分隔(如 (4465mm / 250mm deep)

颜色规范(2026-08-01 修复白字 bug 后定稿)

  • item 行(白底):文字 深青绿 2D4E52
  • 工种标题行(青绿底 5E9E9B):文字 白色 粗体
  • 陷阱:模板创建时曾把整列设白字 → 白底白字 invisible(已修 MASTER 335 + Ambience 100 处);任何从模板复制的新表都要先检查颜色

已知坑(操作 Sheets 时)

  1. 操作前先重读布局(删列/行后坐标偏移)
  2. 插入行会继承上方样式(inheritFromBefore)→ 需重置白底
  3. 删行后 REF! 常在 A 列残留=#REF!*0.15)→ 清 A 列
  4. execute_code 被安全策略阻止 → 用 terminal 跑 Python
  5. API 导出 PDF 默认 Letter 且带成本列 → PDF 由用户自己导出(用户偏好)

Description 富文本格式(用户认可的可读性优化,2026-08-01 夜)

  • item 格 = 粗体标题 + 普通正文 + 青绿粗体 Size 行(如 (4465mm / 250mm deep))3 行结构
  • 用户明确满意(「粗体字大大降低顾客阅读难度」)→ 所有 item 一律用此结构

Sheets API 富文本要点(踩坑记录)

  • textFormatRunsCellData 顶级字段(不在 userEnteredFormat 里)
  • TextFormatRun.format 直接就是 TextFormat(不要再嵌套 textFormat 层)
  • run 的 fg=None 会继承单元格整体文字色 → 白底白字 invisible 的根源之一
  • auto-resize 对多行文本无效(仍 20px)→ 手动设行高(3 行 ≈ 90px)

打印规范(用户偏好,勿违背)

  • PDF 一律用户自己导出(agent 不导出,省 token);用户习惯:手动 select 客户可见部分 → Print > Selected cellsA4 / portrait / fit to width / narrow margins
  • 成本/利润列用 custom page breaks 跳过(不要隐藏列——隐藏后编辑时看不到成本)
  • 用户已删 A 列 + 第 1 行 → print preview 无多余边距(模板已同步,新表勿加回)

空白页解法(已验证)

  • 删多余空白行列:Austin rowCount 977→40、MASTER 1046→109(多余列 27→19/21)→ PDF 从 3 页(含空白页)变干净 1 页
  • Google Sheets 打印把空行列也算进范围,custom page breaks 救不了空白页

小规范

  • S/N 列居中(水平+垂直)
  • item 措辞:材质直接括弧、不用 “with”(如 Replace Pull-Out Drawer Doors (Aluminium Honeycomb)

底部区(Bank/Contact/Payment)标准(2026-08-02 用户确认)

⚠️ 重要:底部所有 detail 写 A 列 + merge A-F(新模板已删 A 列空格,不像 Rosmerah 用 B——Rosmerah 用 B 是因为它的 A 列有一整排空格占位)。

  • Payment Term 标题行(Ambience R24 / MASTER R91):标题格 + 右边一格 = 青绿底 + 白字粗体
  • Bank/Contact 4 行(teal 10pt LEFT,merge A-F):
    1. RegNo 202603001610
    2. 地址(24-1, Jalan Rosmerah 2/17, Taman Johor Jaya, 81100 Johor Bahru, Johor)
    3. email + 网站 www.hsdesign.biz + 真实手机号 011-1688 0145(绝不脱敏,脱敏客户无法联系)
    4. Maybank 551539158314
  • 不需要 “Bank Account” 标题(删掉,底下 Maybank 账号就够)
  • 长地址 → 分段写 + wrap + 行高 40px(如 B8 项目名+街道 / B9 邮编+城市;22px 单行高 wrap 会挤掉 postcode)
  • ⚠️ 补写内容必须带样式values().update 只写文字不写样式 → 继承错误深灰格式(白底白字 invisible 的变种);补写时用 format_sheet_range / cell 级样式抄模板
  • 客户 Project Site 地址尽量搜完整(如 Ms Ong: A-08-03, D'Ambience Residences, Jalan Permas 2, Bandar Baru Permas Jaya, 81750 Masai, Johor),显得专业