MCP for CRM — 数据表结构与种子数据说明文档
数据库:PostgreSQL 15+,库 smart_quotation_auto(与 ERP 服务共库不同表)
建表/种子脚本:sql/init.sql(v3,幂等可重跑);执行入口:cd src && python3 seed.py
版本:v1.0(2026-08-09)
1 概览
| # |
表名 |
用途 |
主键 |
种子行数 |
| 1 |
customer |
客户主数据(信用/折扣/账期) |
customer_code |
20 |
| 2 |
inquiry |
询价单 |
inquiry_id |
9 |
| 3 |
inquiry_item |
询价明细行(多零件) |
id(SERIAL) |
9 |
| 4 |
quotation |
报价单(多版本链) |
quotation_id |
7 |
| 5 |
quotation_cost_detail |
报价成本明细 |
id(SERIAL) |
7 |
| 6 |
opportunity |
商机 |
opportunity_id |
8 |
| 7 |
quotation_mock |
报价写入 CRM 模拟(独立 mock 表) |
quotation_id |
0(运行时写入) |
表关系:
外键:inquiry/inquiry_item/quotation/opportunity 均外键指向 customer.customer_code;inquiry_item → inquiry;quotation → inquiry(可空);quotation_cost_detail → quotation。quotation_mock 无任何外键,为独立模拟表。
2 表结构详解
2.1 customer — 客户
| 列 |
类型 |
约束/默认 |
说明 |
customer_code |
VARCHAR(50) |
PRIMARY KEY |
客户编码,如 OEM-2024-003 |
name |
VARCHAR(200) |
NOT NULL |
客户名称 |
oem_tier |
VARCHAR(20) |
NOT NULL |
OEM / Tier1 / Tier2 |
credit_level |
VARCHAR(5) |
DEFAULT 'B' |
信用等级:A/B/C/D/无评级 |
discount_rate |
DECIMAL(4,3) |
DEFAULT 0 |
折扣率(0.040 = 4%) |
payment_days |
INTEGER |
DEFAULT 30 |
账期天数(0 = 货到付款/预付) |
contact_person / phone / email |
VARCHAR |
— |
联系人信息 |
industry / region |
VARCHAR(50) |
— |
行业 / 区域 |
total_orders |
INTEGER |
DEFAULT 0 |
历史订单数 |
total_amount |
DECIMAL(14,2) |
DEFAULT 0 |
历史订单总额 |
notes |
TEXT |
— |
备注(风险提示等) |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
建档时间 |
2.2 inquiry — 询价单
| 列 |
类型 |
约束/默认 |
说明 |
inquiry_id |
VARCHAR(50) |
PRIMARY KEY |
询价单号 INQ-YYYY-NNNN |
customer_code |
VARCHAR(50) |
NOT NULL,FK |
客户编码 |
inquiry_date |
DATE |
NOT NULL DEFAULT CURRENT_DATE |
询价日期 |
drawing_number |
VARCHAR(100) |
— |
图纸号 |
part_number |
VARCHAR(100) |
— |
零件号 |
annual_volume |
INTEGER |
— |
年用量(件/年) |
target_price |
DECIMAL(10,2) |
— |
客户目标价 ¥ |
status |
VARCHAR(20) |
DEFAULT 'pending' |
pending / quoted(首报自动推进);种子含历史态 completed/processing/lost |
notes |
TEXT |
— |
备注 |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
2.3 inquiry_item — 询价明细行
| 列 |
类型 |
约束/默认 |
说明 |
id |
SERIAL |
PRIMARY KEY |
自增主键 |
inquiry_id |
VARCHAR(50) |
NOT NULL,FK |
所属询价单 |
line_no |
INTEGER |
NOT NULL |
行号;UNIQUE(inquiry_id, line_no) |
part_name |
VARCHAR(200) |
— |
零件名称 |
part_number |
VARCHAR(100) |
— |
零件号 |
material_grade |
VARCHAR(50) |
— |
客户材质牌号 |
volume_cc |
DECIMAL(10,2) |
— |
体积 cm³ |
annual_qty |
INTEGER |
— |
该行年用量 |
unit |
VARCHAR(10) |
DEFAULT '件' |
单位 |
remarks |
TEXT |
— |
备注 |
2.4 quotation — 报价单(多版本核心表)
| 列 |
类型 |
约束/默认 |
说明 |
quotation_id |
VARCHAR(50) |
PRIMARY KEY |
报价单号 QUO-YYYY-NNNN |
inquiry_id |
VARCHAR(50) |
FK(可空) |
所属询价单;索引 idx_quotation_inquiry |
customer_code |
VARCHAR(50) |
NOT NULL,FK |
客户编码 |
quotation_date |
DATE |
NOT NULL DEFAULT CURRENT_DATE |
报价日期 |
valid_until |
DATE |
— |
有效期至 |
version |
INTEGER |
DEFAULT 1 |
版本号;UNIQUE(inquiry_id, version)(并发防重) |
status |
VARCHAR(20) |
DEFAULT 'draft' |
draft/sent/approved/superseded/won/lost |
mold_cost |
DECIMAL(12,2) |
DEFAULT 0 |
模具费(一次性) |
unit_price |
DECIMAL(10,2) |
— |
单价 ¥ |
annual_volume |
INTEGER |
— |
年用量 |
total_annual |
DECIMAL(14,2) |
— |
年总额 = 单价×年用量 |
subtotal |
DECIMAL(14,2) |
— |
小计 |
tax_rate |
DECIMAL(4,3) |
DEFAULT 0.130 |
税率 |
tax_amount |
DECIMAL(14,2) |
— |
税额 |
total_amount |
DECIMAL(14,2) |
— |
含税总额 |
currency |
VARCHAR(10) |
DEFAULT 'CNY' |
币种 |
payment_terms |
VARCHAR(200) |
DEFAULT '月结30天' |
付款条款 |
delivery_terms |
VARCHAR(200) |
DEFAULT '含税含运' |
交付条款 |
created_by |
VARCHAR(50) |
DEFAULT 'AI智能报价' |
创建者 |
approved_by |
VARCHAR(50) |
— |
审核人(人工审核后填写) |
remarks |
TEXT |
— |
备注(测试数据防护标记写入处) |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
版本链规则:save_quotation 事务内 version = MAX(version)+1(不限次数);旧版非终态批量置 superseded;won/lost 终态保留不覆盖。
2.5 quotation_cost_detail — 报价成本明细
| 列 |
类型 |
约束/默认 |
说明 |
id |
SERIAL |
PRIMARY KEY |
自增主键 |
quotation_id |
VARCHAR(50) |
NOT NULL,FK,UNIQUE(uq_quotation_cost) |
报价单号(1:1) |
material_cost |
DECIMAL(10,4) |
— |
材料成本 ¥/件 |
casting_cost |
DECIMAL(10,4) |
— |
压铸成本 ¥/件 |
machining_cost |
DECIMAL(10,4) |
— |
机加工成本 ¥/件 |
post_process_cost |
DECIMAL(10,4) |
— |
后处理成本 ¥/件 |
overhead_rate |
DECIMAL(4,3) |
— |
管理费率 |
profit_rate |
DECIMAL(4,3) |
— |
利润率 |
total_cost |
DECIMAL(10,4) |
— |
四项成本小计 |
unit_price |
DECIMAL(10,4) |
— |
单价(冗余留痕,与主表对账) |
2.6 opportunity — 商机
| 列 |
类型 |
约束/默认 |
说明 |
opportunity_id |
VARCHAR(50) |
PRIMARY KEY |
商机号 OPP-YYYY-NNNN |
customer_code |
VARCHAR(50) |
NOT NULL,FK |
客户编码 |
title |
VARCHAR(200) |
NOT NULL |
商机标题(测试数据防护标记写入处) |
stage |
VARCHAR(20) |
DEFAULT 'lead' |
lead/qualified/proposal/negotiation/quoted/won/lost |
expected_amount |
DECIMAL(14,2) |
DEFAULT 0 |
预期金额 ¥ |
probability |
INTEGER |
DEFAULT 20 |
成交概率 % |
oem_program |
VARCHAR(200) |
— |
OEM 项目/平台 |
expected_close_date |
DATE |
— |
预期关单日期 |
source |
VARCHAR(100) |
— |
来源(智能报价自动生成/客户主动询价/展会获客等) |
created_by |
VARCHAR(50) |
— |
创建者 |
created_at / updated_at |
DATE |
DEFAULT CURRENT_DATE |
创建/更新日期 |
2.7 quotation_mock — 报价写入 CRM 模拟表(独立,无外键)
| 字段 |
类型 |
说明 |
| quotation_id |
VARCHAR(50) PK |
模拟报价单号,QUO-MOCK-#### 自增 |
| customer_name |
VARCHAR(200) |
客户名称(自由文本,不校验) |
| part_name |
VARCHAR(200) |
零件名称 |
| part_number |
VARCHAR(50) |
零件号 |
| material_grade |
VARCHAR(50) |
材质牌号 |
| mold_cost |
DECIMAL(12,2) |
模具费,默认 0 |
| unit_price |
DECIMAL(10,2) |
报价单价 |
| annual_volume |
INTEGER |
年用量 |
| total_annual |
DECIMAL(14,2) |
年总额(unit_price × annual_volume) |
| currency |
VARCHAR(10) |
币种,默认 CNY |
| quotation_date |
DATE |
报价日期,默认当天 |
| status |
VARCHAR(20) |
状态,固定 draft |
| remarks |
TEXT |
备注 |
| created_at |
TIMESTAMP |
创建时间 |
由工具 save_quotation_mock 单独写入,与正式报价链路(inquiry/quotation/opportunity)完全隔离,用于模拟「报价写入 CRM」场景。
3 种子数据详解
3.1 customer — 20 家客户
覆盖设计:
- 层级:OEM×7 / Tier1×7 / Tier2×6
- 信用梯度:A×8 / B×6 / C×2 / D×1 / 无评级×3
- 特殊样本:零历史新客户×3(T2-2025-002、T2-2026-001、T2-2026-002,用于信用评审场景);长账期 90 天(OEM-2025-001);货到付款 C/D 级(T2-2025-001/003/004)
| 编码 |
名称 |
层级 |
信用 |
折扣率 |
账期 |
区域 |
特征 |
| OEM-2024-001 |
某日系主机厂 |
OEM |
A |
5.0% |
60 |
上海 |
长期合作,铝合金阀体壳 |
| OEM-2024-002 |
某德系主机厂 |
OEM |
A |
3.0% |
45 |
北京 |
质量要求高,偏好铸铁件 |
| OEM-2024-003 |
某新能源主机厂 |
OEM |
A |
4.0% |
60 |
合肥 |
三电配套,增长快 |
| OEM-2024-004 |
某美系主机厂 |
OEM |
A |
3.0% |
45 |
武汉 |
混动变速箱项目 |
| OEM-2025-001 |
某商用车主机厂 |
OEM |
B |
2.0% |
90 |
长春 |
长账期,注意现金流 |
| OEM-2025-002 |
某乘商两用主机厂 |
OEM |
B |
2.5% |
60 |
柳州 |
乘商双线采购 |
| OEM-2026-001 |
某智能电动新势力 |
OEM |
A |
5.0% |
45 |
上海 |
高折扣,战略培育 |
| T1-2025-001 |
某博世供应商 |
Tier1 |
B |
2.0% |
30 |
江苏苏州 |
变速箱配套 |
| T1-2025-002 |
某大陆供应商 |
Tier1 |
B |
0 |
30 |
广东广州 |
制动配套,新开发 |
| T1-2025-003 |
某采埃孚供应商 |
Tier1 |
A |
2.0% |
45 |
上海 |
ZF 悬架配套 |
| T1-2025-004 |
某电装系供应商 |
Tier1 |
A |
2.5% |
45 |
广州 |
日系热管理 |
| T1-2025-005 |
某日立安斯泰莫供应商 |
Tier1 |
A |
2.0% |
45 |
大连 |
日系制动/转向 |
| T1-2026-001 |
某制动系统供应商 |
Tier1 |
B |
1.5% |
30 |
重庆 |
国产线控制动 |
| T1-2026-002 |
某液压系统供应商 |
Tier1 |
B |
1.0% |
60 |
长沙 |
液压阀体,账期长 |
| T2-2025-001 |
某售后市场贸易商 |
Tier2 |
C |
0 |
0 |
杭州 |
货到付款,注意风险 |
| T2-2025-002 |
某智能底盘初创公司 |
Tier2 |
无评级 |
0 |
30 |
苏州 |
零订单新客户 |
| T2-2025-003 |
某非道路机械贸易商 |
Tier2 |
D |
0 |
0 |
济宁 |
仅接受预付款 |
| T2-2025-004 |
某改装件连锁商 |
Tier2 |
C |
0 |
0 |
成都 |
改装连锁,货到付款 |
| T2-2026-001 |
某机器人关节初创公司 |
Tier2 |
无评级 |
0 |
30 |
深圳 |
人形机器人关节部件 |
| T2-2026-002 |
某低空经济无人机公司 |
Tier2 |
无评级 |
0 |
30 |
深圳 |
eVTOL 液压部件 |
3.2 inquiry + inquiry_item — 9 单询价(含明细行)
覆盖设计:2024~2025 历史闭环(completed/lost)+ 2026 在途(pending/processing);单零件行,多零件场景由运行时写入。
| 询价单 |
客户 |
日期 |
零件 |
年用量 |
目标价 |
状态 |
| INQ-2024-9005 |
OEM-2024-001 |
2024-10-20 |
发动机油路阀体壳(EN AC-4600,555.56cc) |
200,000 |
55.00 |
completed |
| INQ-2025-9001 |
OEM-2024-001 |
2025-09-25 |
变速箱阀体外壳(ADC12,444.44cc) |
300,000 |
96.00 |
completed |
| INQ-2025-9002 |
OEM-2024-002 |
2025-08-10 |
制动阀体壳(HT250,388.89cc) |
150,000 |
155.00 |
completed |
| INQ-2025-9003 |
T1-2025-001 |
2025-05-28 |
转向器阀体壳(A356-T6,296.30cc) |
150,000 |
25.00 |
lost |
| INQ-2025-9006 |
OEM-2024-002 |
2025-11-05 |
变速箱阀体外壳(ADC12,小批量) |
100,000 |
100.00 |
completed |
| INQ-2026-0001 |
OEM-2024-001 |
2026-08-01 |
变速箱阀体外壳(ADC12,444.44cc) |
300,000 |
95.00 |
processing |
| INQ-2026-0002 |
T1-2025-001 |
2026-08-03 |
转向器阀体壳(A356-T6,296.30cc) |
150,000 |
55.00 |
pending |
| INQ-2026-0006 |
OEM-2024-004 |
2026-08-05 |
涡轮增压控制阀体壳(ADC12,320cc) |
120,000 |
48.00 |
pending |
| INQ-2026-0007 |
OEM-2025-001 |
2026-08-06 |
重卡制动阀体壳(HT300,850cc,1000T) |
60,000 |
260.00 |
processing |
3.3 quotation + quotation_cost_detail — 7 张报价
覆盖设计:状态谱系 approved/won/lost/sent + 一条两版议价链(INQ-2025-9001:v1→v2,一致性校验基准)+ 跨客户价差样本。
| 报价单 |
询价单 |
客户 |
版本 |
状态 |
模具费 |
单价 |
年用量 |
含税总额 |
备注 |
| QUO-2024-9005 |
INQ-2024-9005 |
OEM-2024-001 |
1 |
approved |
180,000 |
52.30 |
200,000 |
11,819,800 |
2024 基线价 |
| QUO-2025-9001 |
INQ-2025-9001 |
OEM-2024-001 |
1 |
approved |
0 |
42.50 |
300,000 |
14,407,500 |
模具费已摊销 |
| QUO-2025-9002 |
INQ-2025-9001 |
OEM-2024-001 |
2 |
approved |
0 |
41.90 |
300,000 |
14,204,100 |
第二轮降价 |
| QUO-2025-9003 |
INQ-2025-9002 |
OEM-2024-002 |
1 |
won |
250,000 |
46.80 |
150,000 |
7,932,600 |
已中标(终态保护样本) |
| QUO-2025-9004 |
INQ-2025-9003 |
T1-2025-001 |
1 |
lost |
120,000 |
28.40 |
150,000 |
4,813,800 |
报价偏高丢单(利润率 28% 样本) |
| QUO-2025-9006 |
INQ-2025-9006 |
OEM-2024-002 |
1 |
sent |
0 |
43.20 |
100,000 |
4,881,600 |
跨客户价差校验 |
| QUO-2026-0001 |
INQ-2026-0001 |
OEM-2024-001 |
1 |
sent |
180,000 |
92.50 |
300,000 |
31,357,500 |
老客户优惠,含模具费 |
成本明细与报价 1:1(四项成本 + 12% 管理费 + 15% 利润,仅 QUO-2025-9004 为 28% 利润)。
3.4 opportunity — 8 条商机
覆盖设计:阶段全谱系 lead/qualified/proposal/negotiation/won/lost;金额 450 万~2775 万;AI 与销售团队双来源。
| 商机号 |
客户 |
阶段 |
金额¥ |
概率 |
关单日期 |
OEM 项目 |
| OPP-2025-0005 |
OEM-2024-002 |
won |
8,200,000 |
100% |
2025-09-30 |
德系新制动平台 |
| OPP-2025-0006 |
T1-2025-001 |
lost |
4,500,000 |
0% |
2025-07-31 |
EPS 转向系统 |
| OPP-2026-0001 |
OEM-2024-001 |
proposal |
27,750,000 |
60% |
2026-10-31 |
日系新车型 CVT |
| OPP-2026-0002 |
T1-2025-001 |
lead |
8,250,000 |
30% |
2026-12-31 |
EPS 转向配套 |
| OPP-2026-0003 |
T1-2025-003 |
lead |
5,000,000 |
20% |
2026-12-31 |
主动悬架配套 |
| OPP-2026-0004 |
OEM-2024-003 |
negotiation |
9,000,000 |
60% |
2026-11-30 |
纯电平台热管理+制动 |
| OPP-2026-0005 |
OEM-2024-004 |
qualified |
12,000,000 |
40% |
2027-03-31 |
下一代混动变速箱 |
| OPP-2026-0006 |
OEM-2025-001 |
lead |
6,000,000 |
15% |
2026-12-31 |
重卡制动升级 |
4 运行时数据(种子之外,真实运行留痕)
以下数据由智能体真实运行产生,不属于 init.sql,作为演示/生产留痕保留:
- 版本链演示:INQ-2026-0019 三版议价(v1→v2→v3,旧版 superseded,带 price_change_pct)。
- 生产报价留痕:INQ-2026-0020
0027、QUO-2026-00190027、OPP-2026-0012~0018(含 TC-01/02/05 生产运行,如 QUO-2026-0027 单价 ¥8.06)。
- 数据库现状(2026-08-09):customer 20 / inquiry 24 / quotation 27 / opportunity 18;inquiry_item 与成本明细随行数联动。
- 回归测试数据:TC-03 写入带「TC-03回归测试」标记,跑完经
purge_test_records 自清理,不累积。
5 幂等性与重跑机制
init.sql 整体可重复执行,无副作用(NF-3):
- 建表:
CREATE TABLE IF NOT EXISTS。
- 历史去重:inquiry_item 按 (inquiry_id, line_no)、quotation_cost_detail 按 quotation_id 删重(保留最小 id),随后幂等补唯一约束。
- 版本号规范化:对存量 quotation 按 (inquiry_id, created_at, quotation_id) 重写 version 为 1..n(幂等,已规范的行不变)。
- 并发防重:
UNIQUE(inquiry_id, version) + 索引 idx_quotation_inquiry。
- 种子写入:全部
ON CONFLICT (...) DO NOTHING,重跑不产生重复客户/询价/报价/商机。
6 数据维护约定
| 场景 |
操作 |
说明 |
| 新客户建档 |
直接 SQL 或后续扩展工具 |
customer_code 规则:OEM/T1/T2-年份-序号 |
| 报价审核 |
UPDATE quotation SET status/approved_by |
当前无 MCP 写工具,人工线下完成 |
| 测试数据清理 |
仅经 MCP purge_test_records |
禁止直连 DELETE;非 TC-03 标记数据受防护 |
| 生产数据 |
不得清理 |
演示/运行留痕作为验收基线 |