📋
系统概述
本系统用于管理 Amphenol AUTO 业务的 RFQ(报价请求)项目成本管控,涵盖从项目创建、BOM 解析、成本计算到 CAS 报价单管理的完整业务流程。
核心能力:
RFQ 文件 AI 智能解析 → BOM 成本自动计算 → CAS 报价单版本管理 → 成本对比分析
🔗
实体关系图 (ER Diagram)
展示系统核心数据实体之间的层级关系和数据流向
↔️
关系说明
| 父实体 | | 子实体 | 关系 | 说明 |
| Channels | → | Projects | 1:N | 一个Channel下有多个RFQ项目 |
| Projects | → | Products | 1:N | 一个项目包含多个产品 |
| Products | → | Shipment_Units | 1:N | 一个产品有多个出货档位(1k/5k/10k) |
| Products | → | Components | 1:N | 一个产品包含多个组件 |
| Products | → | CAS_Versions | 1:N | 一个产品有多个CAS报价版本 |
| Shipment_Units | → | SMT_Processes | 1:N | 一个出货单位对应多个SMT工序 |
| Shipment_Units | → | TLA_Processes | 1:N | 一个出货单位对应多个TLA工序 |
| Components | → | EEBOM | 1:N | 一个组件包含多条电子料记录 |
| Components | → | Structural_Cost | 1:N | 一个组件包含多条结构料记录 |
| CAS_Versions | → | Tooling_Costs | 1:N | 一个CAS版本包含多项治具费用 |
| SMT_Processes | → | SMT_Rates | 1:N | 一个SMT工序关联多条费率 |
| TLA_Processes | → | TLA_Rates | 1:N | 一个TLA工序关联多条费率 |
👥
角色权限设计
第一期仅设3个核心角色,简洁高效
🔧 系统管理员
SYSTEM_ADMIN
全局配置、用户管理、跨Channel访问
💻 成本工程师
COST_ENGINEER
RFQ成本分析、BOM维护、CAS编制、成本计算
📂 RFQ专员
RFQ_SPECIALIST
RFQ项目管理、供应商文件处理
系统配置
✅
—
—
用户管理
✅
—
—
Channel配置(含Rate)
✅
仅查看
—
创建项目
✅
✅
✅
编辑项目
✅
📌本Channel
📌本Channel
查看项目
✅
📌本Channel
📌本Channel
BOM导入/编辑
✅
✅
—
费率配置
✅
仅查看
—
CAS编制
✅
✅
—
触发计算
✅
✅
—
导出报表
✅
📌本Channel
📌本Channel
✅ 完整权限 | 📌本Channel = 仅限本Channel范围 | 仅查看 = 只读 | — = 无权限
📦
核心业务表 (13个)
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| code | VARCHAR(50) | ✓ | UNIQUE | Channel代码 (CHINA, THAILAND) |
| name | VARCHAR(100) | ✓ | | Channel名称 (China Operations) |
| overhead_rate | DECIMAL(5,4) | ✓ | | 间接费率 (如 0.0850 = 8.5%),用于成本计算 |
| currency | VARCHAR(10) | ✓ | | 默认币种 (USD/CNY/THB) |
| exchange_rate_to_usd | DECIMAL(10,6) | ✓ | | 对美元汇率 (如 CNY=0.137800) |
| description | TEXT | ○ | | Channel描述 |
| is_active | TINYINT | ✓ | | 是否启用 (0=禁用 1=启用) |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| channel_id | BIGINT | ✓ | 🔗 FK→channels | 所属Channel |
| project_code | VARCHAR(100) | ✓ | | 项目编号 (如 2159205-10-A) |
| project_name | VARCHAR(200) | ✓ | | 项目名称 |
| customer_name | VARCHAR(200) | ○ | | 客户名称 |
| is_confidential | TINYINT | ✓ | | 是否机密 (0=普通 1=机密如Tesla) |
| rfq_status | TINYINT | ✓ | | RFQ状态 (0=未开始 1=进行中 2=已完成 3=已取消) |
| i_deliver_status | TINYINT | ✓ | | 交付状态 (0=未交付 1=已交付,交付后过滤不提醒) |
| rfq_file_path | VARCHAR(500) | ○ | | RFQ文件存储路径 |
| rfq_file_parsed | TINYINT | ✓ | | RFQ文件是否已解析 (0=未解析 1=已解析) |
| estimated_qty | INT | ○ | | 预估数量 |
| delivery_date | DATE | ○ | | 交付日期 |
| target_price | DECIMAL(18,6) | ○ | | 目标价格 |
| final_price | DECIMAL(18,6) | ○ | | 最终报价 |
| currency | VARCHAR(10) | ✓ | | 币种 (USD/CNY/THB),默认USD |
| remarks | TEXT | ○ | | 备注 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| project_id | BIGINT | ✓ | 🔗 FK→projects | 所属项目 |
| product_code | VARCHAR(100) | ✓ | | 产品代码 (如 M354-04 GNSS-2) |
| product_name | VARCHAR(200) | ○ | | 产品名称 |
| product_type | VARCHAR(50) | ○ | | 产品类型 (如 PCB Assembly) |
| spec_description | TEXT | ○ | | 规格描述 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| product_id | BIGINT | ✓ | 🔗 FK→products | 所属产品 |
| shipment_unit_name | VARCHAR(100) | ✓ | | 出货单位名称 (1k、5k、10k) |
| shipment_qty | INT | ✓ | | 出货数量 (1000/5000/10000) |
| is_active | TINYINT | ✓ | | 是否启用 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| shipment_unit_id | BIGINT | ✓ | 🔗 FK→shipment_units | 所属出货单位 |
| process_name | VARCHAR(100) | ✓ | | 工序名称 (如 Main Board) |
| pcb_size_length | DECIMAL(10,2) | ○ | | PCB长度 (mm) |
| pcb_size_width | DECIMAL(10,2) | ○ | | PCB宽度 (mm) |
| pcb_layers | TINYINT | ○ | | PCB层数 |
| panel_quantity | INT | ○ | | Panel数量 |
| component_count | INT | ○ | | 组件数量 |
| process_type | VARCHAR(50) | ○ | | 工序类型 (Double-sided/Single-sided) |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| shipment_unit_id | BIGINT | ✓ | 🔗 FK→shipment_units | 所属出货单位 |
| process_name | VARCHAR(100) | ✓ | | 工序名称 (如 Assembly 1) |
| process_description | TEXT | ○ | | 工序描述 |
| labor_hours | DECIMAL(10,2) | ○ | | 工时 (小时) |
| equipment_cost | DECIMAL(18,6) | ○ | | 设备费用 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| product_id | BIGINT | ✓ | 🔗 FK→products | 所属产品 |
| component_code | VARCHAR(100) | ✓ | | 组件代码 |
| component_name | VARCHAR(200) | ○ | | 组件名称 |
| component_type | VARCHAR(50) | ✓ | | EEBOM(电子料) / STRUCTURAL(结构料) |
| is_active | TINYINT | ✓ | | 是否启用 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键,自增 |
| component_id | BIGINT | ✓ | 🔗 FK→components | 所属组件 |
| line_number | INT | ✓ | | 行号 |
| part_number | VARCHAR(100) | ✓ | | 料号 |
| part_name | VARCHAR(200) | ○ | | 零件名称 |
| part_description | TEXT | ○ | | 零件描述 |
| manufacturer | VARCHAR(200) | ○ | | 制造商 |
| supplier | VARCHAR(200) | ○ | | 供应商 |
| quantity | DECIMAL(10,4) | ✓ | | 用量 (支持小数如0.5) |
| unit | VARCHAR(20) | ✓ | | 单位 (PCS/M/KG),默认PCS |
| unit_price | DECIMAL(18,6) | ○ | | 单价 |
| currency | VARCHAR(10) | ✓ | | 币种,默认USD |
| exchange_rate | DECIMAL(10,6) | ✓ | | 汇率,默认1.000000 |
| total_cost | DECIMAL(18,6) | ✓ | | 总成本 = qty × price × rate |
| is_alternative | TINYINT | ✓ | | 是否替代料 (0=否 1=是) |
| remarks | TEXT | ○ | | 备注 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| component_id | BIGINT | ✓ | 🔗 FK→components | 所属组件 |
| cost_code | VARCHAR(100) | ✓ | | 成本代码 |
| cost_name | VARCHAR(200) | ○ | | 成本名称 |
| cost_type | VARCHAR(50) | ✓ | | 成本类型 (Housing/Connector/Cable) |
| quantity | DECIMAL(10,4) | ✓ | | 数量 |
| unit | VARCHAR(20) | ✓ | | 单位,默认PCS |
| unit_price | DECIMAL(18,6) | ○ | | 单价 |
| currency | VARCHAR(10) | ✓ | | 币种,默认USD |
| exchange_rate | DECIMAL(10,6) | ✓ | | 汇率 |
| total_cost | DECIMAL(18,6) | ✓ | | 总成本 |
| material_source | VARCHAR(200) | ○ | | 材料来源 |
| remarks | TEXT | ○ | | 备注 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| product_id | BIGINT | ✓ | 🔗 FK→products | 所属产品 |
| version_number | VARCHAR(50) | ✓ | | 版本号 (V1.0、V2.0) |
| version_name | VARCHAR(200) | ○ | | 版本名称 |
| is_active | TINYINT | ✓ | | 是否为当前激活版本 |
| total_eebom_cost | DECIMAL(18,6) | ✓ | | EEBOM总成本 |
| total_structural_cost | DECIMAL(18,6) | ✓ | | 结构料总成本 |
| total_smt_cost | DECIMAL(18,6) | ✓ | | SMT总成本 |
| total_tla_cost | DECIMAL(18,6) | ✓ | | TLA总成本 |
| total_tooling_cost | DECIMAL(18,6) | ✓ | | 治具总成本 |
| total_overhead | DECIMAL(18,6) | ✓ | | 间接费用 = (材料+工序) × Channel.overhead_rate |
| grand_total | DECIMAL(18,6) | ✓ | | 总成本 |
| unit_price | DECIMAL(18,6) | ○ | | 单价 = grand_total / shipment_qty |
| currency | VARCHAR(10) | ✓ | | 币种 |
| remarks | TEXT | ○ | | 备注 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| cas_version_id | BIGINT | ✓ | 🔗 FK→cas_versions | 所属CAS版本 |
| tooling_name | VARCHAR(200) | ✓ | | 治具名称 |
| tooling_type | VARCHAR(50) | ○ | | 治具类型 |
| base_cost | DECIMAL(18,6) | ✓ | | 基础费用 |
| quantity | INT | ✓ | | 数量,默认1 |
| total_cost | DECIMAL(18,6) | ✓ | | 总费用 = base_cost × quantity |
| currency | VARCHAR(10) | ✓ | | 币种 |
| remarks | TEXT | ○ | | 备注 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| smt_process_id | BIGINT | ✓ | 🔗 FK→smt_processes | 关联SMT工序 |
| channel_id | BIGINT | ✓ | 🔗 FK→channels | 所属Channel |
| rate_name | VARCHAR(100) | ✓ | | 费率名称 |
| rate_type | VARCHAR(50) | ✓ | | 费率类型 (Setup Cost/Per Panel/Per Component) |
| base_rate | DECIMAL(18,6) | ✓ | | 基础费率 |
| unit | VARCHAR(20) | ✓ | | 单位 (USD/panel、USD/component) |
| effective_from | DATE | ✓ | | 生效日期 |
| effective_to | DATE | ○ | | 失效日期 (NULL=长期有效) |
| is_active | TINYINT | ✓ | | 是否激活 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| tla_process_id | BIGINT | ✓ | 🔗 FK→tla_processes | 关联TLA工序 |
| channel_id | BIGINT | ✓ | 🔗 FK→channels | 所属Channel |
| rate_name | VARCHAR(100) | ✓ | | 费率名称 |
| rate_type | VARCHAR(50) | ✓ | | 费率类型 (Hourly Rate/Per Unit) |
| base_rate | DECIMAL(18,6) | ✓ | | 基础费率 |
| unit | VARCHAR(20) | ✓ | | 单位 (USD/hour、USD/unit) |
| effective_from | DATE | ✓ | | 生效日期 |
| effective_to | DATE | ○ | | 失效日期 |
| is_active | TINYINT | ✓ | | 是否激活 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
⚙️
系统管理表 (2个)
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| username | VARCHAR(50) | ✓ | UNIQUE | 用户名 |
| email | VARCHAR(100) | ○ | UNIQUE | 邮箱 |
| full_name | VARCHAR(100) | ✓ | | 全名 |
| password_hash | VARCHAR(255) | ✓ | | 密码哈希 |
| role | ENUM | ✓ | | 角色: SYSTEM_ADMIN / COST_ENGINEER / RFQ_SPECIALIST |
| channel_id | BIGINT | ○ | 🔗 FK→channels | 所属Channel (系统管理员为NULL) |
| is_active | TINYINT | ✓ | | 是否激活 |
| last_login_at | DATETIME | ○ | | 最后登录时间 |
| created_at | DATETIME | ✓ | | 创建时间 |
| updated_at | DATETIME | ✓ | | 更新时间 |
| 字段 | 类型 | 必填 | 约束 | 说明 |
| id | BIGINT | ✓ | 🔑 PK | 主键 |
| user_id | BIGINT | ✓ | 🔗 FK→users | 用户ID |
| channel_id | BIGINT | ✓ | 🔗 FK→channels | Channel ID |
| created_at | DATETIME | ✓ | | 分配时间 |
🎨
网站风格设计(欧美风)
提供2套欧美企业级风格方案供确认,推荐方案A
⭐ 推荐
方案A — Modern Corporate
深蓝科技风 · 参考:Notion / Linear / Vercel
深色主题
Glassmorphism
数据仪表盘
暗/亮切换
深蓝色主调,搭配毛玻璃质感和微光效果。适合数据密集型企业应用,视觉层次清晰,长时间使用不疲劳。支持暗色/亮色模式切换。
#0F172A
#1E3A5F
#2563EB
#60A5FA
#34D399
#F8FAFC
TYPOGRAPHY
Inter / 系统字体
清晰的字重层级 — 700 / 500 / 400
正文使用 14px / 1.5 行高,表格数据使用等宽字体
DECIMAL(18,6) — $1,234,567.890000
方案B — Clean Minimal
极简商务风 · 参考:Stripe / Basecamp / Shopify
浅色主题
大留白
高可读性
表格式
纯白底色配合精细边框和微阴影。强调内容本身,减少视觉干扰。适合追求简洁高效的操作体验,类似财务软件的严谨感。仅亮色模式。
#1E293B
#2563EB
#059669
#D97706
#F8FAFC
#FFFFFF
TYPOGRAPHY
SF Pro / Inter
Apple风格的圆角与字间距
正文 15px,表格 13px,紧凑但不拥挤
DECIMAL(18,6) — $1,234,567.890000
| 对比维度 |
⭐ 方案A Modern Corporate |
方案B Clean Minimal |
| 整体印象 | 科技感、专业、数据驱动 | 简洁、商务、工具导向 |
| 暗色模式 | ✅ 支持 | ❌ 不支持 |
| 数据可视化 | ✅ 强,深色背景凸显数据 | 中等,需额外配色 |
| 长时间使用 | ✅ 暗色护眼 | 亮色易疲劳 |
| 开发复杂度 | 中等(需双主题CSS) | ✅ 低,单主题即可 |
| 适合用户群 | 工程师、数据分析师 | 管理层、财务人员 |
| 欧美企业案例 | Linear, Vercel, Notion | Stripe, Shopify, Basecamp |
💡 建议:
推荐方案A Modern Corporate——Amphenol作为欧美制造业企业,成本管控系统需要大量数据展示和分析,深色主题+仪表盘风格更符合工程师日常使用习惯,也更能体现专业感。暗/亮切换功能可在第二期实现,首期先做深色主题。
❓
待确认事项
需要与客户确认后才能最终确定设计的关键问题
必须确认 — 影响核心架构
物理隔离(独立数据库)还是逻辑隔离(同一库+channel_id过滤)?
机密项目数据访问需要什么级别安全措施?是否独立数据库?
RFQ文件AI解析失败时,人工录入还是模板导入?需定义标准模板?
间接费率是固定值还是按时间段配置?修改后对已有CAS版本的影响?
同一工序多个费率同时生效时,取哪个?最新?最高?最低?
建议确认 — 影响功能完整性
V1.0→V2.0 之间是否需要逐项费用差异对比功能?
汇率手动维护还是对接实时汇率API?Channel默认汇率如何设定?
什么场景下需要乘以1.2?是否可配置化?纳入Channel Rate还是独立?
支持哪些格式?Excel? CSV? 有无标准模板要求?
Amphenol 成本管控系统 — 数据库设计说明书 V1.0 | 2026-04-14 | 第一期 | Confidential