数据库架构 (Database Schema)
核心表
主采购订单头信息表。包含来自 Cin7 的列和应用程序拥有的列。
Cin7 同步列 (由每晚 Airflow 任务同步更新):
| 列名 |
类型 |
描述 |
| po_id |
NVARCHAR |
来自 Cin7 的主键 |
| po_ref |
NVARCHAR |
PO 引用编号 (例如, PO-1525) |
| billing_company |
NVARCHAR |
供应商公司名称 |
| xfd |
NVARCHAR |
原始离厂日期 |
| factory |
NVARCHAR |
工厂名称 |
| payment_terms |
NVARCHAR |
付款条件 |
| po_date |
NVARCHAR |
PO 创建日期 |
应用自有列 (由本应用程序管理,Airflow 同步时会排除在 MERGE 之外):
| 列名 |
类型 |
描述 |
| app_po_status_id |
INT |
指向 Ref_PO_Status 的外键 (默认: 100) |
| vendor_reply_xfd |
DATE |
供应商建议的离厂日期 |
| vendor_reply_factory |
NVARCHAR(200) |
供应商建议的工厂 |
| vendor_reply_comment |
NVARCHAR(MAX) |
供应商备注 |
| has_pending_changes |
BIT |
供应商是否有未保存的修改 |
| vendor_confirmed_at |
DATETIME2 |
供应商上次确认/提交的时间 |
| manager_action_at |
DATETIME2 |
经理上次执行操作的时间 |
| manager_rejection_reason |
NVARCHAR(MAX) |
拒绝理由 |
| is_fit_sample_approved |
BIT |
FIT 样品状态 |
| is_cfm_sample_approved |
BIT |
CFM 样品状态 |
| container_number |
NVARCHAR(100) |
集装箱号 |
| tracking_number |
NVARCHAR(200) |
跟踪单号 |
| last_modified_by |
NVARCHAR(200) |
最后修改用户 |
| last_modified_at |
DATETIMEOFFSET |
应用程序内最后修改的时间戳 |
| is_locked |
BIT |
订单是否在大状态 >= 200 时锁定以防止修改 (默认: 0) |
| writeback_synced_at |
DATETIME2 |
预留给未来 Cin7 API 写回同步使用 |
Cin7_PO_Lines
订单项详情表。
| 列名 |
类型 |
描述 |
| po_id |
NVARCHAR |
指向 headers 表的外键 |
| code |
NVARCHAR |
产品 SKU |
| style |
NVARCHAR |
款号 |
| option1 |
NVARCHAR |
颜色 |
| size |
NVARCHAR |
尺码 (例如, 6M, 7M, 8M) |
| qty |
NVARCHAR |
原始数量 (来自 Cin7) |
| unit_price |
NVARCHAR |
原始单价 (来自 Cin7) |
| vendor_reply_qty |
INT |
供应商建议的数量 |
| vendor_reply_unit_price |
DECIMAL(18,4) |
供应商建议的单价 |
| is_modified |
BIT |
该行是否已被供应商修改 |
| row_hash |
NVARCHAR(64) |
用于 API 更新的唯一哈希值 |
引用表 (Reference Tables)
App_Notifications (通知表)
跟踪与 PO 历史记录绑定的系统通知的用户已读回执。
| 列名 |
类型 |
描述 |
| Notification_ID |
INT (主键, 自增) |
主键 |
| User_Email |
NVARCHAR(255) |
接收通知的用户的电子邮件 |
| History_ID |
INT (外键) |
指向 Log_PO_History 的外键 |
| Is_Read |
BIT |
用户是否已读通知 (默认: 0) |
| Created_At |
DATETIME2 |
通知创建的时间戳 |
Ref_PO_Status (状态定义表)
| 列名 |
类型 |
| Status_ID |
INT (主键) |
| Status_Name |
NVARCHAR(50) |
| Status_Label_EN |
NVARCHAR(100) |
| Status_Label_ZH |
NVARCHAR(100) |
| Sort_Order |
INT |
| Is_Terminal |
BIT |
| Color_Hex |
NVARCHAR(7) |
| Is_Active |
BIT |
Ref_PO_Transitions (转换定义表)
| 列名 |
类型 |
| Transition_ID |
INT (主键) |
| From_Status_ID |
INT (外键) |
| To_Status_ID |
INT (外键) |
| Action_Name |
NVARCHAR(50) |
| Allowed_Roles |
NVARCHAR(200) |
| Label_EN |
NVARCHAR(100) |
| Label_ZH |
NVARCHAR(100) |
| Gatekeeper_Check |
NVARCHAR(100) |
| Sort_Order |
INT |
| Is_Active |
BIT |
Log_PO_History (历史日志表)
| 列名 |
类型 |
| Log_ID |
INT (主键, 自增) |
| PO_Ref |
NVARCHAR(50) |
| Old_Status_ID |
INT |
| New_Status_ID |
INT |
| Action_Name |
NVARCHAR(50) |
| Changed_By |
NVARCHAR(200) |
| Changed_At |
DATETIME2 |
| Comment |
NVARCHAR(MAX) |
Ref_Vendors (供应商参考表)
供应商和工厂的参考数据。
| 列名 |
类型 |
描述 |
| Vendor_ID |
INT (PK) |
唯一内部 ID |
| Vendor_Code |
NVARCHAR(50) |
短代码 (如 E1, F2) |
| Vendor_Name |
NVARCHAR(200) |
完整交易名称 |
| Contact_Name |
NVARCHAR(200) |
主要联系人 |
| Contact_Email |
NVARCHAR(200) |
联系电子邮件 (部分日志中已脱敏) |
| Is_Active |
BIT |
激活状态 |
CloudMind 配置与聊天
Config_Registry (配置注册表)
存储 CloudMind 语义层的源配置。
| 列名 |
类型 |
描述 |
| Source_ID |
INT (PK, Identity) |
主键 |
| Source_Name |
NVARCHAR(100) |
配置名称 (如 cin7_po_headers) |
| Source_Type |
NVARCHAR(50) |
类型 (table, view) |
| Config_YAML |
NVARCHAR(MAX) |
完整的 YAML 配置内容 |
| Is_Active |
BIT |
系統是否使用此配置 |
| Status |
NVARCHAR(20) |
生命周期状态 (draft, approved, deprecated) |
Chat_Interactions (聊天交互日志)
记录用户与 AI 数据助手的所有交互。
| 列名 |
类型 |
描述 |
| id |
INT (PK, Identity) |
主键 |
| user_email |
NVARCHAR(255) |
用户电子邮件 |
| user_role |
NVARCHAR(50) |
查询时的角色 |
| vendor_code |
NVARCHAR(50) |
供应商代码 (如果是供应商角色) |
| user_message |
NVARCHAR(MAX) |
用户查询内容 (已脱敏) |
| ai_reply |
NVARCHAR(MAX) |
AI 响应内容 (已脱敏) |
| message_language |
NVARCHAR(10) |
检测到的语言 (en, zh) |
| tools_called |
NVARCHAR(MAX) |
调用的工具名称 JSON 数组 |
| tool_params |
NVARCHAR(MAX) |
第一个工具的参数 JSON 对象 |
| query_row_counts |
NVARCHAR(MAX) |
每个工具返回结果数量的 JSON 映射 |
| response_type |
NVARCHAR(20) |
UI 渲染类型 (text, chart, table) |
| chart_type |
NVARCHAR(20) |
图表类型 (bar, line, donut) |
| guardrail_passed |
BIT |
输出验证是否通过 |
| hallucination_detected |
BIT |
是否怀疑存在幻觉 |
| pii_detected |
BIT |
是否检测到并屏蔽了 PII |
| duration_ms |
INT |
总响应时间 (毫秒) |
| openai_tokens_used |
INT |
交互的 Token 使用量 |
| auto_score |
INT |
自动质量评分 (-3 到 8) |
| needs_improvement |
BIT |
需人工复核标志 |
| is_good_example |
BIT |
Few-shot 学习池标志 |
| created_at |
DATETIME2 |
交互时间戳 |
实体关系图 (ERD)
erDiagram
Cin7_PO_Headers ||--o{ Cin7_PO_Lines : "包含行项目"
Cin7_PO_Headers }o--|| Ref_PO_Status : "拥有状态"
Cin7_PO_Headers }o--|| Ref_Vendors : "属于供应商"
Cin7_PO_Headers ||--o{ Log_PO_History : "拥有历史记录"
Ref_PO_Transitions }o--|| Ref_PO_Status : "起始状态"
Ref_PO_Transitions }o--|| Ref_PO_Status : "目标状态"
Log_PO_History ||--o{ App_Notifications : "触发通知"
Chat_Interactions }o--o{ Config_Registry : "通过以下方式查询"