diff --git a/README.md b/README.md
index dc125e8..bdd9417 100644
--- a/README.md
+++ b/README.md
@@ -22,8 +22,7 @@ graph LR
B --> C[FetchPartRatio]
C --> D[SQLAgent
LLM分析]
D --> E[AllocateBudget]
- E --> F[GenerateReport
LLM]
- F --> G[SaveResult]
+ E --> G[SaveResult]
```
详细架构图见 [docs/architecture.md](docs/architecture.md)
@@ -36,7 +35,6 @@ graph LR
|------|------|------|
| **SQL Agent** | LLM 分析 | 直接分析 part_ratio 数据生成补货建议 |
| **补货分配** | Replenishment | 转换 LLM 建议为补货明细 |
-| **分析报告** | Report | LLM 生成库存分析报告 |
### 🚧 计划中
@@ -97,8 +95,7 @@ fw-pms-ai/
1. FetchPartRatio - 从 part_ratio 表获取库销比数据
2. SQLAgent - LLM 分析数据,生成补货建议
3. AllocateBudget - 转换建议为补货明细
-4. GenerateReport - LLM 生成分析报告
-5. SaveResult - 写入数据库
+4. SaveResult - 写入数据库
```
### 业务术语
@@ -116,9 +113,8 @@ fw-pms-ai/
| `part_ratio` | 配件库销比数据(来源表) |
| `ai_replenishment_task` | 任务记录 |
| `ai_replenishment_detail` | 配件级别补货建议 |
-| `ai_replenishment_report` | 分析报告 |
+| `ai_replenishment_part_summary` | 配件汇总表 |
| `ai_task_execution_log` | 任务执行日志 |
-| `ai_llm_suggestion_detail` | LLM 建议明细 |
## 快速开始
@@ -143,7 +139,6 @@ cp .env.example .env
```bash
mysql -u root -p fw_pms < sql/init.sql
-mysql -u root -p fw_pms < sql/v2_add_log_tables.sql
```
### 4. 运行
@@ -167,7 +162,6 @@ Prompt 文件存放在 `prompts/` 目录:
|------|------|
| `suggestion.md` | 补货建议生成(含业务术语定义) |
| `analyze_inventory.md` | 库存分析 |
-| `generate_report.md` | 报告生成 |
## 开发
diff --git a/sql/final_schema.sql b/sql/final_schema.sql
deleted file mode 100644
index b202c3e..0000000
--- a/sql/final_schema.sql
+++ /dev/null
@@ -1,151 +0,0 @@
--- ============================================================================
--- AI 补货建议系统 - 表结构
--- ============================================================================
--- 版本: 1.0.0
--- 更新日期: 2026-01-31
--- ============================================================================
-
--- 1. AI补货任务表
-DROP TABLE IF EXISTS ai_replenishment_task;
-CREATE TABLE ai_replenishment_task (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL UNIQUE COMMENT '任务编号(AI-开头)',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- brand_grouping_id BIGINT COMMENT '品牌组合ID',
- plan_amount DECIMAL(14,2) DEFAULT 0 COMMENT '计划采购金额(预算)',
- actual_amount DECIMAL(14,2) DEFAULT 0 COMMENT '实际分配金额',
- part_count INT DEFAULT 0 COMMENT '分配配件数量',
- base_ratio DECIMAL(10,4) COMMENT '基准库销比',
- status TINYINT DEFAULT 0 COMMENT '状态: 0-运行中 1-成功 2-失败',
- error_message TEXT COMMENT '错误信息',
- llm_provider VARCHAR(32) COMMENT 'LLM提供商',
- llm_model VARCHAR(64) COMMENT 'LLM模型名称',
- llm_total_tokens INT DEFAULT 0 COMMENT 'LLM总Token数',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- start_time DATETIME COMMENT '任务开始时间',
- end_time DATETIME COMMENT '任务结束时间',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_group_date (group_id, statistics_date),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货任务表-记录每次补货建议任务执行';
-
--- 2. AI补货建议明细表
-DROP TABLE IF EXISTS ai_replenishment_detail;
-CREATE TABLE ai_replenishment_detail (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- brand_grouping_id BIGINT COMMENT '品牌组合ID',
- shop_id BIGINT NOT NULL COMMENT '库房ID',
- shop_name VARCHAR(128) COMMENT '库房名称',
- part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
- part_name VARCHAR(256) COMMENT '配件名称',
- unit VARCHAR(32) COMMENT '单位',
- cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价',
- current_ratio DECIMAL(10,4) COMMENT '当前库销比',
- base_ratio DECIMAL(10,4) COMMENT '基准库销比',
- post_plan_ratio DECIMAL(10,4) COMMENT '计划后预计库销比',
- valid_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '有效库存数量',
- avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)',
- suggest_cnt INT DEFAULT 0 COMMENT '建议采购数量',
- suggest_amount DECIMAL(14,2) DEFAULT 0 COMMENT '建议采购金额',
- suggestion_reason TEXT COMMENT '补货建议理由',
- priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1-高, 2-中, 3-低',
- llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_shop_part (shop_id, part_code)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议明细表-存储每次任务的配件分配结果';
-
--- 3. AI补货分析报告表
-DROP TABLE IF EXISTS ai_replenishment_report;
-CREATE TABLE ai_replenishment_report (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- total_storage_amount DECIMAL(16,2) COMMENT '总库存金额',
- total_sales_amount DECIMAL(16,2) COMMENT '总销售金额(90天)',
- overall_ratio DECIMAL(10,4) COMMENT '整体库销比',
- target_ratio DECIMAL(10,4) COMMENT '目标库销比',
- total_part_count INT DEFAULT 0 COMMENT '配件总数',
- shortage_part_count INT DEFAULT 0 COMMENT '缺货配件数',
- overstock_part_count INT DEFAULT 0 COMMENT '超标配件数',
- normal_part_count INT DEFAULT 0 COMMENT '正常配件数',
- stagnant_part_count INT DEFAULT 0 COMMENT '呆滞配件数',
- suggest_total_amount DECIMAL(14,2) COMMENT '建议采购总金额',
- suggest_part_count INT DEFAULT 0 COMMENT '建议采购配件数',
- top_priority_parts TEXT COMMENT '重点关注配件(JSON数组)',
- report_content JSON COMMENT '结构化报告内容(JSON)',
- llm_provider VARCHAR(32) COMMENT 'LLM提供商',
- llm_model VARCHAR(64) COMMENT 'LLM模型',
- generation_tokens INT DEFAULT 0 COMMENT '生成Token数',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货分析报告表-存储LLM生成的分析报告';
-
--- 4. AI任务执行日志表
-DROP TABLE IF EXISTS ai_task_execution_log;
-CREATE TABLE ai_task_execution_log (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- brand_grouping_id BIGINT COMMENT '品牌组合ID',
- brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- step_name VARCHAR(64) NOT NULL COMMENT '步骤名称',
- step_order INT DEFAULT 0 COMMENT '步骤顺序',
- status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过',
- input_data TEXT COMMENT '输入数据(JSON)',
- output_data TEXT COMMENT '输出数据(JSON)',
- error_message TEXT COMMENT '错误信息',
- retry_count INT DEFAULT 0 COMMENT '重试次数',
- sql_query TEXT COMMENT 'SQL查询语句(如有)',
- llm_prompt TEXT COMMENT 'LLM提示词(如有)',
- llm_response TEXT COMMENT 'LLM响应(如有)',
- llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗',
- execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)',
- start_time DATETIME COMMENT '开始时间',
- end_time DATETIME COMMENT '结束时间',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_group_date (group_id, create_time),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情';
-
--- 5. AI补货配件汇总表
-DROP TABLE IF EXISTS ai_replenishment_part_summary;
-CREATE TABLE ai_replenishment_part_summary (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
- part_name VARCHAR(256) COMMENT '配件名称',
- unit VARCHAR(32) COMMENT '单位',
- cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价',
- total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量',
- total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量',
- group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比',
- total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量',
- total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额',
- shop_count INT DEFAULT 0 COMMENT '涉及门店数',
- need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数',
- part_decision_reason TEXT COMMENT '配件级补货决策理由',
- priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低',
- llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_part_code (part_code),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表';
-
diff --git a/sql/init.sql b/sql/init.sql
index c6427c8..3940902 100644
--- a/sql/init.sql
+++ b/sql/init.sql
@@ -1,43 +1,11 @@
--- AI 补货建议系统表结构
--- 版本: 2.0
--- 更新: 2026-01-27
+-- ============================================================================
+-- AI 补货建议系统 - 表结构
+-- ============================================================================
+-- 版本: 1.0.0
+-- 更新日期: 2026-01-31
+-- ============================================================================
--- 1. AI预计划明细表
-DROP TABLE IF EXISTS ai_pre_plan_detail;
-CREATE TABLE ai_pre_plan_detail (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- brand_grouping_id BIGINT COMMENT '品牌组合ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- dealer_id BIGINT COMMENT '商家ID',
- dealer_name VARCHAR(128) COMMENT '商家名称',
- area_id BIGINT COMMENT '区域ID',
- area_name VARCHAR(128) COMMENT '区域名称',
- shop_id BIGINT NOT NULL COMMENT '库房ID',
- shop_name VARCHAR(128) COMMENT '库房名称',
- part_id BIGINT COMMENT '配件ID',
- part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
- part_name VARCHAR(256) COMMENT '配件名称',
- unit VARCHAR(32) COMMENT '单位',
- cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价',
- base_ratio DECIMAL(10,4) COMMENT '基准库销比',
- current_ratio DECIMAL(10,4) COMMENT '当前库销比',
- valid_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '有效库存数量(在库未锁+在途+计划数+调拨在途)',
- avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)',
- target_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '目标库存数量',
- plan_cnt INT DEFAULT 0 COMMENT '建议计划数量',
- plan_amount DECIMAL(14,2) DEFAULT 0 COMMENT '建议计划金额',
- part_biz_type TINYINT DEFAULT 1 COMMENT '配件业务类型: 1-配件 2-装饰',
- statistics_date VARCHAR(16) NOT NULL COMMENT '统计日期(yyyy-MM-dd)',
- yn TINYINT DEFAULT 1 COMMENT '是否有效: 1-是 0-否',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_group_date (group_id, statistics_date),
- INDEX idx_dealer_grouping (dealer_grouping_id),
- INDEX idx_shop (shop_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI预计划明细表-存储每日计算的配件补货建议';
-
--- 2. AI补货任务表
+-- 1. AI补货任务表
DROP TABLE IF EXISTS ai_replenishment_task;
CREATE TABLE ai_replenishment_task (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
@@ -63,7 +31,7 @@ CREATE TABLE ai_replenishment_task (
INDEX idx_dealer_grouping (dealer_grouping_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货任务表-记录每次补货建议任务执行';
--- 3. AI补货建议明细表
+-- 2. AI补货建议明细表
DROP TABLE IF EXISTS ai_replenishment_detail;
CREATE TABLE ai_replenishment_detail (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
@@ -93,38 +61,61 @@ CREATE TABLE ai_replenishment_detail (
INDEX idx_shop_part (shop_id, part_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议明细表-存储每次任务的配件分配结果';
--- 4. AI补货报告表
-DROP TABLE IF EXISTS ai_replenishment_report;
-CREATE TABLE ai_replenishment_report (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- total_storage_amount DECIMAL(16,2) COMMENT '总库存金额',
- total_sales_amount DECIMAL(16,2) COMMENT '总销售金额(90天)',
- overall_ratio DECIMAL(10,4) COMMENT '整体库销比',
- target_ratio DECIMAL(10,4) COMMENT '目标库销比',
- total_part_count INT DEFAULT 0 COMMENT '配件总数',
- shortage_part_count INT DEFAULT 0 COMMENT '缺货配件数',
- overstock_part_count INT DEFAULT 0 COMMENT '超标配件数',
- normal_part_count INT DEFAULT 0 COMMENT '正常配件数',
- stagnant_part_count INT DEFAULT 0 COMMENT '呆滞配件数',
- suggest_total_amount DECIMAL(14,2) COMMENT '建议采购总金额',
- suggest_part_count INT DEFAULT 0 COMMENT '建议采购配件数',
- top_priority_parts TEXT COMMENT '重点关注配件(JSON数组)',
- report_title VARCHAR(256) COMMENT '报告标题',
- executive_summary TEXT COMMENT '执行摘要',
- inventory_analysis TEXT COMMENT '库存分析',
- risk_assessment TEXT COMMENT '风险评估',
- purchase_recommendations TEXT COMMENT '采购建议',
- optimization_suggestions TEXT COMMENT '优化建议',
- full_report_markdown LONGTEXT COMMENT '完整报告(Markdown)',
- llm_provider VARCHAR(32) COMMENT 'LLM提供商',
- llm_model VARCHAR(64) COMMENT 'LLM模型',
- generation_tokens INT DEFAULT 0 COMMENT '生成Token数',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+-- 3. AI任务执行日志表
+DROP TABLE IF EXISTS ai_task_execution_log;
+CREATE TABLE ai_task_execution_log (
+ id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
+ task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
+ group_id BIGINT NOT NULL COMMENT '集团ID',
+ brand_grouping_id BIGINT COMMENT '品牌组合ID',
+ brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称',
+ dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
+ dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
+ step_name VARCHAR(64) NOT NULL COMMENT '步骤名称',
+ step_order INT DEFAULT 0 COMMENT '步骤顺序',
+ status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过',
+ input_data TEXT COMMENT '输入数据(JSON)',
+ output_data TEXT COMMENT '输出数据(JSON)',
+ error_message TEXT COMMENT '错误信息',
+ retry_count INT DEFAULT 0 COMMENT '重试次数',
+ sql_query TEXT COMMENT 'SQL查询语句(如有)',
+ llm_prompt TEXT COMMENT 'LLM提示词(如有)',
+ llm_response TEXT COMMENT 'LLM响应(如有)',
+ llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗',
+ execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)',
+ start_time DATETIME COMMENT '开始时间',
+ end_time DATETIME COMMENT '结束时间',
+ create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ INDEX idx_task_no (task_no),
+ INDEX idx_group_date (group_id, create_time),
+ INDEX idx_dealer_grouping (dealer_grouping_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情';
+
+-- 4. AI补货配件汇总表
+DROP TABLE IF EXISTS ai_replenishment_part_summary;
+CREATE TABLE ai_replenishment_part_summary (
+ id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
+ task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
+ group_id BIGINT NOT NULL COMMENT '集团ID',
+ dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
+ part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
+ part_name VARCHAR(256) COMMENT '配件名称',
+ unit VARCHAR(32) COMMENT '单位',
+ cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价',
+ total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量',
+ total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量',
+ group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比',
+ total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量',
+ total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额',
+ shop_count INT DEFAULT 0 COMMENT '涉及门店数',
+ need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数',
+ part_decision_reason TEXT COMMENT '配件级补货决策理由',
+ priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低',
+ llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度',
+ statistics_date VARCHAR(16) COMMENT '统计日期',
+ create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_task_no (task_no),
+ INDEX idx_part_code (part_code),
INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货分析报告表-存储LLM生成的分析报告';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表';
+
diff --git a/sql/v2_add_log_tables.sql b/sql/v2_add_log_tables.sql
deleted file mode 100644
index 1b22616..0000000
--- a/sql/v2_add_log_tables.sql
+++ /dev/null
@@ -1,60 +0,0 @@
--- AI 任务执行日志表
--- 版本: 1.0
--- 创建日期: 2026-01-28
-
--- 任务执行日志表
-CREATE TABLE IF NOT EXISTS ai_task_execution_log (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- brand_grouping_id BIGINT COMMENT '品牌组合ID',
- brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- step_name VARCHAR(64) NOT NULL COMMENT '步骤名称',
- step_order INT DEFAULT 0 COMMENT '步骤顺序',
- status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过',
- input_data TEXT COMMENT '输入数据(JSON)',
- output_data TEXT COMMENT '输出数据(JSON)',
- error_message TEXT COMMENT '错误信息',
- retry_count INT DEFAULT 0 COMMENT '重试次数',
- sql_query TEXT COMMENT 'SQL查询语句(如有)',
- llm_prompt TEXT COMMENT 'LLM提示词(如有)',
- llm_response TEXT COMMENT 'LLM响应(如有)',
- llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗',
- execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)',
- start_time DATETIME COMMENT '开始时间',
- end_time DATETIME COMMENT '结束时间',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_group_date (group_id, create_time),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情';
-
--- LLM补货建议明细表(商家组合维度)
-CREATE TABLE IF NOT EXISTS ai_llm_suggestion_detail (
- id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称',
- shop_id BIGINT NOT NULL COMMENT '库房ID',
- shop_name VARCHAR(128) COMMENT '库房名称',
- part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
- part_name VARCHAR(256) COMMENT '配件名称',
- unit VARCHAR(32) COMMENT '单位',
- cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价',
- current_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '当前库存数量',
- avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)',
- current_ratio DECIMAL(10,4) COMMENT '当前库销比',
- suggest_cnt INT DEFAULT 0 COMMENT 'LLM建议采购数量',
- suggest_amount DECIMAL(14,2) DEFAULT 0 COMMENT 'LLM建议采购金额',
- suggestion_reason TEXT COMMENT 'LLM建议依据/理由',
- priority INT DEFAULT 0 COMMENT '优先级(1-高 2-中 3-低)',
- llm_confidence DECIMAL(5,2) COMMENT 'LLM置信度(0-1)',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- INDEX idx_task_no (task_no),
- INDEX idx_dealer_grouping (dealer_grouping_id),
- INDEX idx_shop_part (shop_id, part_code)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LLM补货建议明细表-存储LLM生成的商家组合维度配件补货建议及依据';
diff --git a/sql/v3_add_suggestion_reason.sql b/sql/v3_add_suggestion_reason.sql
deleted file mode 100644
index b9677d7..0000000
--- a/sql/v3_add_suggestion_reason.sql
+++ /dev/null
@@ -1,6 +0,0 @@
--- AI补货建议明细表 - 添加建议理由字段
--- 版本: 3.0
--- 创建日期: 2026-01-29
-
-ALTER TABLE ai_replenishment_detail
-ADD COLUMN suggestion_reason TEXT COMMENT 'LLM建议理由' AFTER suggest_amount;
diff --git a/sql/v4_cleanup_unused_tables.sql b/sql/v4_cleanup_unused_tables.sql
deleted file mode 100644
index 61b1606..0000000
--- a/sql/v4_cleanup_unused_tables.sql
+++ /dev/null
@@ -1,7 +0,0 @@
--- 清理无效的 AI 业务表
--- 版本: 4.0
--- 创建日期: 2026-01-30
--- 描述: 删除不再使用的 ai_llm_suggestion_detail 和 ai_pre_plan_detail 表
-
-DROP TABLE IF EXISTS ai_llm_suggestion_detail;
-DROP TABLE IF EXISTS ai_pre_plan_detail;
diff --git a/sql/v4_report_json_structure.sql b/sql/v4_report_json_structure.sql
deleted file mode 100644
index 4a3421a..0000000
--- a/sql/v4_report_json_structure.sql
+++ /dev/null
@@ -1,17 +0,0 @@
--- 报告结构化重构 - 将 Markdown 字段改为 JSON
--- 版本: 4.0
--- 日期: 2026-01-30
-
--- 1. 新增 JSON 字段
-ALTER TABLE ai_replenishment_report
-ADD COLUMN report_content JSON COMMENT '结构化报告内容(JSON)' AFTER top_priority_parts;
-
--- 2. 删除旧的 Markdown 字段
-ALTER TABLE ai_replenishment_report
-DROP COLUMN report_title,
-DROP COLUMN executive_summary,
-DROP COLUMN inventory_analysis,
-DROP COLUMN risk_assessment,
-DROP COLUMN purchase_recommendations,
-DROP COLUMN optimization_suggestions,
-DROP COLUMN full_report_markdown;
diff --git a/sql/v5_add_priority_and_confidence.sql b/sql/v5_add_priority_and_confidence.sql
deleted file mode 100644
index aad5366..0000000
--- a/sql/v5_add_priority_and_confidence.sql
+++ /dev/null
@@ -1,6 +0,0 @@
--- 5. 添加优先级和置信度字段
--- 时间: 2026-01-30
-
-ALTER TABLE ai_replenishment_detail
-ADD COLUMN priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1-高, 2-中, 3-低' AFTER suggestion_reason,
-ADD COLUMN llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度' AFTER priority;
diff --git a/sql/v6_add_part_summary.sql b/sql/v6_add_part_summary.sql
deleted file mode 100644
index 6ed4391..0000000
--- a/sql/v6_add_part_summary.sql
+++ /dev/null
@@ -1,37 +0,0 @@
--- v6: 新增配件汇总表
--- 用于存储配件在商家组合维度的汇总补货建议
-
-CREATE TABLE IF NOT EXISTS ai_replenishment_part_summary (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- part_code VARCHAR(64) NOT NULL COMMENT '配件编码',
- part_name VARCHAR(256) COMMENT '配件名称',
- unit VARCHAR(32) COMMENT '单位',
- cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价',
-
- -- 商家组合级别汇总数据
- total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量',
- total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量',
- group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比',
-
- -- 补货建议汇总
- total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量',
- total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额',
- shop_count INT DEFAULT 0 COMMENT '涉及门店数',
- need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数',
-
- -- LLM分析结果
- part_decision_reason TEXT COMMENT '配件级补货决策理由',
- priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低',
- llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度',
-
- -- 元数据
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-
- INDEX idx_task_no (task_no),
- INDEX idx_part_code (part_code),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表';
diff --git a/sql/v7_add_low_frequency_count.sql b/sql/v7_add_low_frequency_count.sql
deleted file mode 100644
index 5c56518..0000000
--- a/sql/v7_add_low_frequency_count.sql
+++ /dev/null
@@ -1,6 +0,0 @@
--- v7: 添加低频件统计字段
--- 用于记录出库次数<3 或 平均出库间隔>=30天的配件数量
-
-ALTER TABLE ai_replenishment_report
-ADD COLUMN low_frequency_part_count INT DEFAULT 0 COMMENT '低频件数量'
-AFTER stagnant_part_count;
diff --git a/sql/v8_analysis_report.sql b/sql/v8_analysis_report.sql
deleted file mode 100644
index 2ed386a..0000000
--- a/sql/v8_analysis_report.sql
+++ /dev/null
@@ -1,44 +0,0 @@
--- v8_analysis_report.sql
--- 分析报告表,支持按品牌组合分组的分析数据持久化
--- 分析内容由 LLM 生成
-
-CREATE TABLE IF NOT EXISTS ai_analysis_report (
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
- task_no VARCHAR(32) NOT NULL COMMENT '任务编号',
- group_id BIGINT NOT NULL COMMENT '集团ID',
- dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID',
- brand_grouping_id BIGINT DEFAULT NULL COMMENT '品牌组合ID,NULL表示全部品牌',
- brand_grouping_name VARCHAR(256) DEFAULT NULL COMMENT '品牌组合名称',
-
- -- 风险管控统计(数量)
- total_count INT DEFAULT 0 COMMENT '配件总数',
- shortage_count INT DEFAULT 0 COMMENT '缺货数量',
- overstock_count INT DEFAULT 0 COMMENT '超标数量',
- normal_count INT DEFAULT 0 COMMENT '正常数量',
- low_frequency_count INT DEFAULT 0 COMMENT '低频数量',
- stagnant_count INT DEFAULT 0 COMMENT '呆滞数量',
-
- -- 风险管控统计(金额)
- total_amount DECIMAL(16,2) DEFAULT 0 COMMENT '总金额',
- shortage_amount DECIMAL(16,2) DEFAULT 0 COMMENT '缺货金额',
- overstock_amount DECIMAL(16,2) DEFAULT 0 COMMENT '超标金额',
- normal_amount DECIMAL(16,2) DEFAULT 0 COMMENT '正常金额',
- low_frequency_amount DECIMAL(16,2) DEFAULT 0 COMMENT '低频金额',
- stagnant_amount DECIMAL(16,2) DEFAULT 0 COMMENT '呆滞金额',
-
- -- LLM 生成的分析内容
- overview_analysis TEXT COMMENT '核心经营综述(LLM生成)',
- risk_analysis TEXT COMMENT '风险管控分析(LLM生成)',
- action_plan TEXT COMMENT '行动计划分析(LLM生成)',
- report_content JSON COMMENT '结构化报告内容',
-
- llm_provider VARCHAR(32) COMMENT 'LLM提供商',
- llm_model VARCHAR(64) COMMENT 'LLM模型名称',
- generation_tokens INT DEFAULT 0 COMMENT '生成token数',
- statistics_date VARCHAR(16) COMMENT '统计日期',
- create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-
- INDEX idx_task_no (task_no),
- INDEX idx_task_brand (task_no, brand_grouping_id),
- INDEX idx_dealer_grouping (dealer_grouping_id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI分析报告表';