CYS Bearing ������������������ 2026-09-19

CYS Bearing 项目整体总结(2026-09-19 早晨版)

目的:把”B2b/B2c 联系方式数据驱动”和”CYS 工具箱(shipping_rates 新表 + 客户发票系统 + 客户运营)“两条线归回同一个项目,给出完整的目标 / 状态 / 缺口 / 明天计划。 作用:明早开会 / 用户回来 / 任何接手者都能直接看。 更新规则:重大变化(部署 / DDL / 决策)时,更新对应章节 + 顶部日期。


一、项目整体目标

1.1 一句话定位

从速卖通 / Aliyun 等平台 + 多邮箱历史邮件里,把 5000+ B 端客户沉淀到自有私域;用米思米模式(标准化产品 + 一站式购买 + 多运输渠道 + 本币收款)的产品站把客户从平台迁出;用 AI-Native 地基让运营团队能主动触达客户。

1.2 业务关键数字

维度 数据
业务 CYS Bearing(轴承 / 导轨 / 丝杆 / 铝型材 工贸一体)
创始人 2009 年至今 17 年
历史客户 ~5000 个独立海外 B 端客户
历史订单 10万+ 行
历史邮件 10万+ 封
客单价 $7 - $276(小额,靠量)
地区 美/欧/南美为主,60+ 国家
商业模式 工厂直供 + 本币收款 0-1% + DDP 一口价
痛点 平台抽成 5-15% + 客户归平台 + 政策风险

1.3 项目的 6 大终极目标(按重要性)

  1. 客户沉淀:5000 客户 → 自有 D1 主档(ed = 1/5000,目前 customers 表 1 行)
  2. 产品自动化承载:~1万 SKU 的米思米模式产品站 + DDP 配送 + 本币收款(ed = 31/10000,D1 31 行 + 陶瓷 25 SKU 待入库)
  3. AI 主动获客:邮件真实性验证(POC1 启动)+ AI 写初稿(未开始)
  4. GEO / SEO 优化:AI 搜索能引用(部分完成:product.html + materials/ceramic.html 有 schema.org)
  5. 运营自动化:客户提交询盘 → 自动发邮件 → 自动生成 PI/PO/CI/Invoice(客户发票系统表已建,无数据)
  6. 零抽成:从平台抽 5-15% → 自有渠道 0% 成本(架构已就位,等待客户迁入)

1.4 项目 4 个阶段

阶段 内容 状态 备注
Phase 1 v3 网站搭建 + 部署(13 HTML + 12 JSON + 13 JS + Cloudflare Pages) ✅ 完成 2026-09-10 完成
Phase 2 邮件系统(Cloudflare Worker + Resend + 13 个 API + D1 迁移) ✅ 完成 2026-09-11 完成
Phase 3 D1 完整迁移(shipping_rates / customers / invoices / customer_groups / industries / product_tags 等)+ Worker ensureSchema 自动建表 ✅ 部分完成 数据层完整,代码层部分
Phase 4 客户发票系统 + 询盘提交 + PDF 附件 + AI 触达(远期 3-6 月) ❌ 未开始 表已建(customers/invoices/invoice_items),前端未对接

1.5 当前在哪个阶段

Phase 3 收尾 + Phase 4 启动前的过渡期: - ✅ Phase 3 数据层完整(D1 23 个表) - ⚠️ Phase 3 代码层:B2c(联系方式数据驱动)昨晚完成;其他模块待续 - ❌ Phase 4(客户发票 + 询盘)未启动


二、当前状态(按模块)

2.1 网站 v3 前端(Cloudflare Pages)

部署:

项 值
Pages project cysbearing
最新 deployment 80c61e47-3908-4b2e-991f-8730bffcc31d(active production / main branch)
PRE_ID(active 前) 1d887757-c2d6-4074-85a4-1a7f70ff8007
Custom domain cysbearing.com

文件结构:

/workspace/site_final/v3/
├── index.html / catalog.html / product.html / scene.html / cart.html / invoice.html
├── checkout.html / login.html / my_account.html
├── shipping.html / payment_guide.html / privacy.html / returns.html
├── about.html / customer.html / customers.html / industries.html / industry.html
├── admin.html / admin-login.html
├── materials/ceramic.html       # 轻量材质详情页(/materials/ceramic 301 redirect)
├── css/ (15 个 CSS)
├── js/ (26 个 JS 模块)
├── functions/ (_middleware.js, sitemap.xml.js)
├── migrations/ (4 个 SQL)
├── config/ (8 个 JSON + 2 个 .bak)
├── docs/ (19 个 .md + CSV 模板)
└── _redirects / wrangler.toml / robots.txt / sitemap.xml / llms.txt

模块化原则(已实施): - ✅ 数据驱动架构:所有客户可见数据 → D1(不是 JSON 文件) - ✅ 单文件真相原则:价格 / 银行 / 政策 / 运费 / 国家 都集中在 1 个 D1 表 - ✅ 缓存破坏:?v=20260926 强制刷新

已完成项: - ✅ Phase 1(v3 网站搭建 + 部署) - ✅ Phase 2(13 个 Worker API + D1 迁移) - ✅ B2c 批 1(D1 备份 + ALTER + UPDATE):shipping_methods 加 icon 列 + shipping_info.metadata 删除 methods 字段 + 3 张备份表 - ✅ B2c 批 2(后端 /api/shipping-methods):Worker NEW_ID afd68093-d4dc-4c3b-b32b-7381974bb549 - ✅ B2c 批 3(前端 5 文件改动):policy.js + data.js + 3 HTML placeholder,Pages NEW_ID 80c61e47-3908-4b2e-991f-8730bffcc31d

2.2 Worker 后端(Cloudflare Worker cys-email)

部署:

项 值
Worker cys-email
默认 URL https://cys-email.tuoxiaomachine.workers.dev
Custom domain email.cysbearing.com
最新 deployment afd68093-d4dc-4c3b-b32b-7381974bb549(含 /api/shipping-methods)
PRE_ID 6175c287-50ed-49c9-96a3-6aa9881923b6(title_en fix)

API 端点(24 个 + B2c 新加 1 个 = 25 个):

类别 端点 用途
邮件 POST /send 给客户发订单确认
POST /notify 给 admin 发新订单通知
POST /admin/request-link admin 登录链接请求
POST /admin/verify admin token 验证
公共数据 GET /api/products / /api/products/slug/:s / /api/products/:sku 产品
GET /api/faqs FAQ
GET /api/categories 分类
GET /api/countries 国家
GET /api/banks 银行账户
GET /api/shipping 国家×运输方式(含 shipping_methods + shipping_rates JOIN)
GET /api/shipping-methods (B2c 新加) 全局运输方式(archived_at IS NULL + enabled=1)
GET /api/scenes 应用场景
GET /api/hot-products 热卖产品
GET /api/type-templates 类型模板
GET /api/policies 政策文案
GET /api/settings 全局设置(邮箱/电话/WhatsApp/invoice prefix)
GET /api/customer-groups / /api/customer-groups/:id 客户分组
GET /api/industries / /api/industries/:id 行业
报价单 POST /api/quotations 创建报价
POST /api/quotations/:token/accept 接受报价
POST /api/quotations/:token/reject 拒绝报价
GET /api/quotations/:token 查看报价
POST /api/display-spec display spec 计算
Admin /api/admin/products POST/PUT/DELETE 产品 CRUD
/api/admin/faqs POST FAQ 创建
/api/admin/banks POST/PUT 银行 CRUD
/api/admin/shipping-methods GET/PUT shipping_methods 编辑
Cron 0 * * * * 清理 used_tokens > 24h

lib/ 模块: - banks.js / countries.js / invoice-no.js / totals.js / display-spec.js / pricing-engine.js / weight-engine.js / email-builders.mjs / generate-pdf.js

已完成项: - ✅ 13 个公共 API + Cron Trigger + email-builder + PDF 生成 - ✅ ensureSchema 自动建 customer_groups / industries / product_tags - ✅ B2c Step 6 /api/shipping-methods

2.3 D1 数据库(cys-bearing-db)

规模:23 个表(4 个用户系统 + 1 个发票系统 + 1 个运费细化 + 12 个产品业务 + 5 个辅助 + 3 张 B2c 备份)

核心表 + 实测行数(2026-09-18 22:09 实测):

表 行数 用途 阶段
客户发票系统
customers 1 客户主档(email 主键,含 wechat/whatsapp/consent) Phase 4
invoices 0 发票(含 type: quotation/proforma/commercial/invoice + status 状态机 + 银行快照) Phase 4
invoice_items 0 发票行项 Phase 4
invoice_status_log 0 发票状态变更日志 Phase 4
运费细化
shipping_rates 20 国家×运输方式×重量档(cost_cny + margin_pct + sale_price_usd) Phase 3
shipping_rate_changes 0 运费变更审计日志 Phase 3
shipping_methods 4 (active 3) 全局运输方式定义(air_parcel / sea_freight / express_dhl + small_packet archived) ✅
shipping 1 老表(legacy fallback,仅 US) legacy
产品业务
products 31 产品主表(含 weight_g 100% 填充,charge_type=‘per_pc’ 全部) ✅
categories 18 双层分类树(B/B-BB/B01 等) ✅
countries 12 国家列表(US/MX/CA/BR/DE/FR/IT/ES/NL/PL/GB/AU) ✅
banks 1 银行账户(保留 usd-worldfirst-chase,其他 4 个软删) ✅
scenes 8 应用场景(3D打印/CNC/自动化等) ✅
faqs 19 FAQ ✅
hot_products 1 热卖产品配置(5 SKU) ✅
type_templates 2 类型模板(B01 + B10) ✅
policy_texts 8 政策文案(payment_rules / home_highlights / payment_guide_intro / shipping_info / payment_guide / privacy / returns / stock_lead_time) ✅
客户运营
customer_groups 5 客户分组(cg-maintenance / cg-oem / cg-integrator / cg-diy / cg-quote) Phase 3
industries 9 行业 Phase 3
product_tags 239 产品×标签 many-to-many(产品分类标签 + 行业标签) Phase 3
辅助 + B2c 备份
settings 12 全局设置(support_email/phone/whatsapp + invoice_prefix_*) ✅
used_tokens 0 admin 一次性 token ✅
_cf_KV - Cloudflare KV ✅
shipping_methods_backup_20260918 4 B2c 备份 temp
policy_texts_backup_20260918 8 B2c 备份 temp
settings_backup_20260918 12 B2c 备份 temp

已完成项: - ✅ Phase 2 迁移:products / faqs / categories / countries / banks / shipping - ✅ Phase 2 迁移:scenes / hot_products / type_templates / policy_texts - ✅ B2a 9 settings(support_email/phone/whatsapp + invoice_prefix_default/po/quotation/pi/ci + quote_required_above_mm) - ✅ B2 3 policy(payment_rules / home_highlights / payment_guide_intro) - ✅ 4 banks 软删 + small_packet 软删 - ✅ shipping_rates 17 列 schema + 20 行数据(独立于 shipping_methods) - ✅ customers / invoices / invoice_items / invoice_status_log schema(决策 3 + 决策 6) - ✅ customer_groups / industries / product_tags schema(Phase 3 客户运营)

未完成项: - ❌ invoices 无数据(无前端创建流程) - ❌ shipping_rates 前端未消费(handleApiShipping 已 JOIN,但 cart / invoice.js 不读它) - ❌ customers 表只有 1 行测试数据 - ❌ used_tokens = 0(admin 链接请求流程未实测)

2.4 文档体系

/workspace/site_final/v3/docs/(19 个 .md + CSV 模板):

文档 大小 用途
MASTER_DOCUMENT.md v4.0 项目理论 + 使用手册 + 目的(主文档)
TECHNICAL_MANUAL.md - 核心函数 + 修复记录 + 待办决策
OPERATIONS_HANDBOOK.md - 操作员手册
ARCHITECTURE.md - 项目结构 + 设计决策
DECISIONS_LOG.md 决策 1-38 所有关键决策(运费 / 报价单 / 软删 / 模块化 / 发票 / B2a / B2c / B2b / 6 规则 / 25-26 token)
ISSUES.md 14 问题 + 收工总结 现场问题 + 修复
FINAL_DELIVERY.md - Phase 1+2 整合
PHASE2_OPERATIONS.md - 邮件系统运维
PRODUCT_UPLOAD_SOP.md - 产品上传 SOP(含 image/name 字段缺失警告)
PRODUCT_DATA_TEMPLATE.md / products-import-template.csv / products-import-example.csv - 产品批量导入模板
PRODUCT_BULLETS_GUIDE.md - 8 Key Features SEO 长尾词
PRODUCT_SEO_GEO_GUIDE.md - 产品页 SEO/GEO 优化
PASSTHROUGH_TEMPLATES.md - 用户粘贴 AI 输出的标准格式
CROSS_AI_COLLAB_SOP.md - 多 AI 协作流程
CHAT_RECORD.md - 9-10 到 9-14 完整聊天记录
DOCS_INDEX.md / README.md - 文档索引

/workspace/(项目文档):

文档 用途
PROJECT_MASTER_PLAN.md v1.10 项目主纲领
PROJECT_DERIVATION.md 项目推导史(5 层 L1-L5)
customer_system_v1_design.md 客户系统设计 v1.0
START_HERE.md / INDEX.md / TEST_CHECKLIST.md 新人必读
PRODUCT_STRATEGY.md / CATEGORY_STRUCTURE.md / CATEGORY_STRATEGY_PHASED.md 产品策略
OPERATIONS_MANUAL.md 业务操作手册
E2E_TEST_PLAN.md 11 脚本端到端测试
BULK_UPLOAD_PLAN.md Excel 批量导入方案
PRICE_CONSOLIDATION.md 价格统一工作流
SHIPPING_CONFIG_GUIDE.md 运费配置
POC1_EMAIL_VERIFICATION.md 邮箱真实性验证
MARKETING_STRATEGY.md / OUTREACH_STRATEGY.md 营销 + 主动触达
WEBSITE_DESIGN.md 网站设计推导
EXTENSIBILITY.md 框架扩展地图
CERAMIC_6200_BATCH_PLAN.md 25 SKU 陶瓷 6200 入库计划

三、目标还缺什么

3.1 P0(必须做,阻塞业务)

缺口 现状 影响 状态
客户迁入(主流程) customers 表只有 1 行测试 整个私域目标无法启动 ❌ 未开始
invoices 创建流程 invoices 0 行,前端无创建按钮 Phase 4 阻塞 ❌ 未开始
PDF 附件 lib/generate-pdf.js 已写但沙箱自检未确认 客户拿不到附件 ⚠️ 待用户验证
询盘提交到 D1 workers/quote-submit.js 已写但未部署 询盘进 D1 而不是邮件 ❌ 未开始

3.2 P1(应该做,影响进度)

缺口 现状 影响 状态
B2b-1b-ii(8 footer 数据驱动) customer / customers / industries / industry / login / my_account / returns(page body)/ invoice footer 仍硬编码 全站联系方式不彻底 ❌ 未开始
B2b-1b-iii(about.html Contact 卡 + 5 处特殊) about.html 98-102 + invoice.html 57 + 3 D1 settings + renderContactCard 卡片硬编码 ❌ 未开始
B2b-2(21 处 JS fallback) admin.js / cart-page.js / cart.js / catalog.js / display-spec.js / home.js / invoice.js / main.js 等都有 || 'Contact: sales@cysbearing.com' 改邮箱不会自动同步 ❌ 未开始
shipping_rates 前端消费 handleApiShipping 已 JOIN,但 cart/invoice.js 不读 tier 详细 价格细化表白建 ⚠️
3 icon = NULL air_parcel / sea_freight / express_dhl 都没图标 视觉降级(📦 fallback) ⏳ 等用户提供
about.html 卡片文案 4 文案还含 “rail / small_packet” 旧数据 显示过时运输方式 ⚠️

3.3 P2(可以做,优先级低)

缺口 现状 优先级
D1 备份表清理 3 张 _backup_20260918 表稳定后可 DROP 低
B2b-2(materialBadgeHtml 4 MAP key 移到 D1) 内部硬编码 低
B2b-2(email 模板 30+ 硬编码字符串 → policy_texts.email_templates) 内部硬编码 低
B2b-2(material bullets / FAQ 4 材料 × 4 文案) 内部硬编码 低
icon 数据 3 行 icon = NULL 等用户提供
Admin “政策管理” tab policy_texts CRUD UI 中
lib/freight-engine.js 迁移 运费细化引擎 中
Module 2 engine(per_meter / quote_only) schema 已预留 中

3.4 需要用户拍板

决策点 选项 影响
B2b-1b-ii 8 footer 是否继续 a) 接受 / b) 调整范围 决定下一步执行
B2b-1b-iii 是否继续 a) 接受 / b) 调整 决定 about.html 卡片 + 3 settings + renderContactCard 范围
icon 数据 a) 等用户提供 / b) 我用默认 emoji 决定 shipping_methods icon 列填充
about.html 卡片文案 a) 等用户提供 / b) 我用现有 3 模式 决定卡片展示内容
Phase 4 优先级 a) 现在启动 / b) 等 Phase 3 全部完成 决定 invoices + 询盘 + PDF 启动时机
WeChat 裸号处理 a) 加 +86 前缀 / b) 整段删除 / c) 不动 决定 about.html + invoice.html 等的 WeChat 字段
25 SKU 陶瓷 6200 入库 a) 一次性 INSERT 25 行 / b) 分批 / c) 等用户 Excel 决定批量导入时机

3.5 可以直接干(不需要拍板)


四、上下文衔接问题

4.1 问题描述

用户指出:之前的话题被切成”B2c 网站”和”CYS 工具箱”两条线,导致上下衔接不一致。

实际上这两条线始终是同一个项目:

CYS Bearing 项目
├── 网站层(cysbearing.com,Cloudflare Pages)
│   ├── Phase 1: v3 网站搭建(HTML/CSS/JS)
│   ├── Phase 2: 邮件系统(Worker + Resend)
│   ├── Phase 3 数据层: D1 完整迁移
│   ├── Phase 3 代码层: B2c(联系方式数据驱动)★ 昨晚完成的
│   └── Phase 4: 客户发票 + 询盘 + PDF(远期)
│
└── "CYS 工具箱"(实际就是 Phase 3 + Phase 4 数据层 + 部分代码层)
    ├── shipping_rates 新表(20 行数据)
    ├── customers / invoices / invoice_items(schema 已建,无数据)
    ├── customer_groups / industries / product_tags(已自动建表)
    ├── quote-submit.js(询盘提交 worker,未部署)
    └── ensureSchema 自动建表(Worker 启动时跑)

4.2 之前被判成”不属于当前话题”但实际同项目的内容

内容 之前分类 实际归属 依赖关系
shipping_rates 表 + 数据 “工具箱”独立话题 Phase 3 数据层 handleApiShipping 已 JOIN,但 cart/invoice.js 不读 → B2c 完成后即可消费
customers / invoices / invoice_items schema “工具箱”独立话题 Phase 4 客户发票 表已建,决策 3 + 决策 6 已设计状态机;前端未对接 → Phase 4 启动时使用
customer_groups / industries / product_tags “工具箱”独立话题 Phase 3 客户运营 Worker ensureSchema 自动建表,data.js 未消费 → 待前端 product.html / catalog.html 接入
quote-submit.js(workers/quote-submit.js) “工具箱”独立话题 Phase 4 询盘提交 与 emailsunnyxv@aliyun.com 配合,邮件触发 → 需 admin 验证 → 部署
lib/invoice-no.js(统一发票编号) “工具箱”独立话题 B2a 9 settings 的发票前缀 + Phase 4 发票生成 已部署;invoice.html 用 INV-20260918-XXXX 格式 ✅
lib/email-builders.mjs / generate-pdf.js “工具箱”独立话题 Phase 2 邮件 + Phase 4 PDF 已部署;PDF 待沙箱验证
used_tokens 表 + Cron 清理 “工具箱”独立话题 admin 登录 + Cron Cron 触发器已部署,used_tokens=0 → 待 admin 验证
客户分组 industries / customer_groups 自动 seed “工具箱”独立话题 Phase 3 客户运营 src/index.js ensureSchema 自动建 + seed 5+9 行 ✅

4.3 它们和当前主线的依赖关系

B2c(联系方式数据驱动)        ← 昨晚完成
    ↓
B2b-1b-ii / -iii / -2         ← 待执行(接续 B2c)
    ↓
模块化 + 数据驱动基础就位
    ↓
shipping_rates 消费            ← 待 cart/invoice.js 接入
customer_groups 消费            ← 待 catalog/product.html 接入
invoices 前端创建流程           ← Phase 4 启动
quote-submit Worker 部署         ← Phase 4 启动
PDF 生成用户验证                ← Phase 4 启动前确认
    ↓
客户迁入 + 业务运营

五、明天开始做什么(按优先级)

5.1 明天第一件:用户浏览器验证 B2c(4 URL)

目的:确认 B2c 部署后用户真实看到效果。

# URL 期望结果
1 https://cysbearing.com/privacy.html Contact 行显示 sales@cysbearing.com(不是 support@)
2 https://cysbearing.com/payment_guide.html flow list 末尾显示 sales@
3 https://cysbearing.com/returns.html 显示 sales@ + WhatsApp 链接
4 https://cysbearing.com/shipping.html 显示 3 个运输方式 + 📦 fallback icon

前置条件: - ✅ Pages 部署成功(NEW_ID 80c61e47-3908-4b2e-991f-8730bffcc31d) - ✅ Worker 部署成功(NEW_ID afd68093-d4dc-4c3b-b32b-7381974bb549) - ✅ 自检全通过(curl + sandbox 验证)

用户拍板:a) 接受浏览器验证 / b) 调整范围

目的:让 customer / customers / industries / industry / login / my_account / returns(page body)/ invoice(footer 主体)8 文件 footer 数据驱动。

前置条件: - ✅ B2c 模板(footer-contact div + site-settings.js script) - ✅ B2c 9 settings(support_email/phone/whatsapp)

用户拍板:a) 接受 / b) 调整范围

5.3 明天第三件:B2b-1b-iii about.html Contact 卡片

目的:让 about.html Contact 卡 5 字段(Email/WhatsApp/Phone/WeChat/Web)数据驱动。

前置条件: - ⚠️ D1 settings 加 3 字段:support_wechat / company_web / company_web_url - ⚠️ SiteSettings 加 renderContactCard() 函数 - ⚠️ 旧文案 “rail / small_packet” 删除或改

用户拍板:a) 接受 / b) 调整

5.4 明天第四件:D1 备份表清理(可与第二/三件并行)

SQL:

DROP TABLE shipping_methods_backup_20260918;
DROP TABLE policy_texts_backup_20260918;
DROP TABLE settings_backup_20260918;

前置条件:B2c 至少稳定 1 周,确认无回滚需求

5.5 Phase 4 启动前清单(如果决定现在启动)

# 工作量 依赖
1. cart.html “Generate Invoice” 流程接通 customers + invoices 大 决策 3 + 决策 6 已有设计
2. invoice.html 状态机(draft → sent → paid) 中 invoice_status_log 已建
3. workers/quote-submit.js 部署(替换邮件触发) 中 quote-submit.js 已写
4. PDF 附件沙箱验证(用户 163 邮箱收到 PDF) 小 lib/generate-pdf.js 已部署
5. Admin “询盘管理” tab(看 D1 quotes) 中 schema.sql 老表(不一定是当前 customers)

5.6 需要用户先拍板的事

# 拍板内容 选项
1 B2c 浏览器验证 a) 接受 / b) 调整
2 B2b-1b-ii 8 footer a) 接受 / b) 调整
3 B2b-1b-iii about.html 卡片 + 3 D1 settings a) 接受 / b) 调整
4 icon 数据 a) 等用户提供 / b) 默认 emoji
5 about.html 旧文案处理 a) 等用户提供 / b) 现有 3 模式套
6 WeChat 裸号处理 a) 加 +86 / b) 删 / c) 不动
7 25 SKU 陶瓷 6200 入库 a) 一次性 / b) 分批 / c) 等 Excel
8 Phase 4 启动时机 a) 现在 / b) 等 Phase 3 全部完成
9 备份表清理时机 a) 1 周后 / b) 现在 / c) 1 月后

附录 A:D1 完整现状速查

总表数: 23
总行数(含备份): ~470
核心表:
- products: 31
- policy_texts: 8
- settings: 12
- shipping_methods: 4 (active 3)
- shipping_rates: 20
- customer_groups: 5
- industries: 9
- product_tags: 239
- customers: 1 (测试)
- invoices: 0
- invoice_items: 0
- invoice_status_log: 0
- used_tokens: 0

附录 B:部署 ID 速查

Worker cys-email:
- PRE_ID: 6175c287-50ed-49c9-96a3-6aa9881923b6 (title_en fix)
- NEW_ID: afd68093-d4dc-4c3b-b32b-7381974bb549 (Step 6 /api/shipping-methods)

Pages cysbearing:
- PRE_ID: 96c7f3a3-7b8d-4af1-8259-09a6bc45dcd6
- NEW_ID (B2c 第一次): 1d887757-c2d6-4074-85a4-1a7f70ff8007
- NEW_ID (active): 80c61e47-3908-4b2e-991f-8730bffcc31d
- Environment: Production / Branch: main

附录 C:永久规则(来自 memory 25-26 + 项目规则)

25. Cloudflare API token 可能失效。新会话第一件事 wrangler whoami 验证。
26. Token 用过即清(rm -f /tmp/.cf_token),不在 memory 写真值,用 <CF_TOKEN> 占位符。
- DDL / DML 前必查证(PRAGMA + COUNT + SELECT)
- ALTER 前确认列不存在(避免 duplicate column)
- 部署前确认 PRE_ID,部署后确认 NEW_ID
- wrangler rollback 用 PRE_ID(不是 NEW_ID)
- 修改后本地 Node 跑所有函数分支(US / 非 US / 空 / 边界)全通过再部署
- 不写编造数据写入生产环境
- 字段 / 表名 / 状态值要可扩展(用 string,不用 enum)
- 每条 wrangler 命令必须贴原始 stdout(含 Executed / results / meta)

附录 D:关键文件位置

项目主文档:
- /workspace/PROJECT_MASTER_PLAN.md (v1.10)
- /workspace/PROJECT_DERIVATION.md
- /workspace/customer_system_v1_design.md
- /workspace/site_final/v3/docs/MASTER_DOCUMENT.md (v4.0)
- /workspace/site_final/v3/docs/TECHNICAL_MANUAL.md
- /workspace/site_final/v3/docs/DECISIONS_LOG.md (决策 1-38)
- /workspace/site_final/v3/docs/ISSUES.md (14 问题)

网站代码:
- /workspace/site_final/v3/*.html (14 页面 + 4 admin)
- /workspace/site_final/v3/js/*.js (26 模块)
- /workspace/site_final/v3/css/*.css (15 模块)
- /workspace/site_final/v3/config/ (8 JSON + 2 bak)
- /workspace/site_final/v3/migrations/ (4 SQL)

Worker 代码:
- /workspace/cys-email/src/index.js (2485 行, 25 个 handler)
- /workspace/cys-email/lib/ (9 模块: banks / countries / invoice-no / totals / display-spec / pricing-engine / weight-engine / email-builders / generate-pdf)
- /workspace/cys-email/wrangler.toml (Worker config + D1 binding + Cron)
- /workspace/site_final/workers/quote-submit.js (询盘 Worker,未部署)

迁移 SQL:
- /workspace/site_final/v3/migrations/config-migration.sql (categories / countries / banks / shipping)
- /workspace/site_final/v3/migrations/extras-migration.sql (scenes / hot_products / type_templates / policy_texts)
- /workspace/site_final/v3/migrations/import_data.sql
- /workspace/site_final/v3/migrations/products-import-2026-09-11T03-02-04.sql (31 产品)

文档结束。最后更新:2026-09-19 06:30(早晨用户开题时)