Commit b14e72d368e8685e07ba218c1cff4f62af282d92
1 parent
70aa7f12
chore: 整合 SQL 模式文件并更新 `README.md` 和 `init.sql`。
Showing
11 changed files
with
67 additions
and
416 deletions
README.md
| @@ -22,8 +22,7 @@ graph LR | @@ -22,8 +22,7 @@ graph LR | ||
| 22 | B --> C[FetchPartRatio] | 22 | B --> C[FetchPartRatio] |
| 23 | C --> D[SQLAgent<br/>LLM分析] | 23 | C --> D[SQLAgent<br/>LLM分析] |
| 24 | D --> E[AllocateBudget] | 24 | D --> E[AllocateBudget] |
| 25 | - E --> F[GenerateReport<br/>LLM] | ||
| 26 | - F --> G[SaveResult] | 25 | + E --> G[SaveResult] |
| 27 | ``` | 26 | ``` |
| 28 | 27 | ||
| 29 | 详细架构图见 [docs/architecture.md](docs/architecture.md) | 28 | 详细架构图见 [docs/architecture.md](docs/architecture.md) |
| @@ -36,7 +35,6 @@ graph LR | @@ -36,7 +35,6 @@ graph LR | ||
| 36 | |------|------|------| | 35 | |------|------|------| |
| 37 | | **SQL Agent** | LLM 分析 | 直接分析 part_ratio 数据生成补货建议 | | 36 | | **SQL Agent** | LLM 分析 | 直接分析 part_ratio 数据生成补货建议 | |
| 38 | | **补货分配** | Replenishment | 转换 LLM 建议为补货明细 | | 37 | | **补货分配** | Replenishment | 转换 LLM 建议为补货明细 | |
| 39 | -| **分析报告** | Report | LLM 生成库存分析报告 | | ||
| 40 | 38 | ||
| 41 | ### 🚧 计划中 | 39 | ### 🚧 计划中 |
| 42 | 40 | ||
| @@ -97,8 +95,7 @@ fw-pms-ai/ | @@ -97,8 +95,7 @@ fw-pms-ai/ | ||
| 97 | 1. FetchPartRatio - 从 part_ratio 表获取库销比数据 | 95 | 1. FetchPartRatio - 从 part_ratio 表获取库销比数据 |
| 98 | 2. SQLAgent - LLM 分析数据,生成补货建议 | 96 | 2. SQLAgent - LLM 分析数据,生成补货建议 |
| 99 | 3. AllocateBudget - 转换建议为补货明细 | 97 | 3. AllocateBudget - 转换建议为补货明细 |
| 100 | -4. GenerateReport - LLM 生成分析报告 | ||
| 101 | -5. SaveResult - 写入数据库 | 98 | +4. SaveResult - 写入数据库 |
| 102 | ``` | 99 | ``` |
| 103 | 100 | ||
| 104 | ### 业务术语 | 101 | ### 业务术语 |
| @@ -116,9 +113,8 @@ fw-pms-ai/ | @@ -116,9 +113,8 @@ fw-pms-ai/ | ||
| 116 | | `part_ratio` | 配件库销比数据(来源表) | | 113 | | `part_ratio` | 配件库销比数据(来源表) | |
| 117 | | `ai_replenishment_task` | 任务记录 | | 114 | | `ai_replenishment_task` | 任务记录 | |
| 118 | | `ai_replenishment_detail` | 配件级别补货建议 | | 115 | | `ai_replenishment_detail` | 配件级别补货建议 | |
| 119 | -| `ai_replenishment_report` | 分析报告 | | 116 | +| `ai_replenishment_part_summary` | 配件汇总表 | |
| 120 | | `ai_task_execution_log` | 任务执行日志 | | 117 | | `ai_task_execution_log` | 任务执行日志 | |
| 121 | -| `ai_llm_suggestion_detail` | LLM 建议明细 | | ||
| 122 | 118 | ||
| 123 | ## 快速开始 | 119 | ## 快速开始 |
| 124 | 120 | ||
| @@ -143,7 +139,6 @@ cp .env.example .env | @@ -143,7 +139,6 @@ cp .env.example .env | ||
| 143 | 139 | ||
| 144 | ```bash | 140 | ```bash |
| 145 | mysql -u root -p fw_pms < sql/init.sql | 141 | mysql -u root -p fw_pms < sql/init.sql |
| 146 | -mysql -u root -p fw_pms < sql/v2_add_log_tables.sql | ||
| 147 | ``` | 142 | ``` |
| 148 | 143 | ||
| 149 | ### 4. 运行 | 144 | ### 4. 运行 |
| @@ -167,7 +162,6 @@ Prompt 文件存放在 `prompts/` 目录: | @@ -167,7 +162,6 @@ Prompt 文件存放在 `prompts/` 目录: | ||
| 167 | |------|------| | 162 | |------|------| |
| 168 | | `suggestion.md` | 补货建议生成(含业务术语定义) | | 163 | | `suggestion.md` | 补货建议生成(含业务术语定义) | |
| 169 | | `analyze_inventory.md` | 库存分析 | | 164 | | `analyze_inventory.md` | 库存分析 | |
| 170 | -| `generate_report.md` | 报告生成 | | ||
| 171 | 165 | ||
| 172 | ## 开发 | 166 | ## 开发 |
| 173 | 167 |
sql/final_schema.sql deleted
| 1 | --- ============================================================================ | ||
| 2 | --- AI 补货建议系统 - 表结构 | ||
| 3 | --- ============================================================================ | ||
| 4 | --- 版本: 1.0.0 | ||
| 5 | --- 更新日期: 2026-01-31 | ||
| 6 | --- ============================================================================ | ||
| 7 | - | ||
| 8 | --- 1. AI补货任务表 | ||
| 9 | -DROP TABLE IF EXISTS ai_replenishment_task; | ||
| 10 | -CREATE TABLE ai_replenishment_task ( | ||
| 11 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 12 | - task_no VARCHAR(32) NOT NULL UNIQUE COMMENT '任务编号(AI-开头)', | ||
| 13 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 14 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 15 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 16 | - brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 17 | - plan_amount DECIMAL(14,2) DEFAULT 0 COMMENT '计划采购金额(预算)', | ||
| 18 | - actual_amount DECIMAL(14,2) DEFAULT 0 COMMENT '实际分配金额', | ||
| 19 | - part_count INT DEFAULT 0 COMMENT '分配配件数量', | ||
| 20 | - base_ratio DECIMAL(10,4) COMMENT '基准库销比', | ||
| 21 | - status TINYINT DEFAULT 0 COMMENT '状态: 0-运行中 1-成功 2-失败', | ||
| 22 | - error_message TEXT COMMENT '错误信息', | ||
| 23 | - llm_provider VARCHAR(32) COMMENT 'LLM提供商', | ||
| 24 | - llm_model VARCHAR(64) COMMENT 'LLM模型名称', | ||
| 25 | - llm_total_tokens INT DEFAULT 0 COMMENT 'LLM总Token数', | ||
| 26 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 27 | - start_time DATETIME COMMENT '任务开始时间', | ||
| 28 | - end_time DATETIME COMMENT '任务结束时间', | ||
| 29 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 30 | - INDEX idx_group_date (group_id, statistics_date), | ||
| 31 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 32 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货任务表-记录每次补货建议任务执行'; | ||
| 33 | - | ||
| 34 | --- 2. AI补货建议明细表 | ||
| 35 | -DROP TABLE IF EXISTS ai_replenishment_detail; | ||
| 36 | -CREATE TABLE ai_replenishment_detail ( | ||
| 37 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 38 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 39 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 40 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 41 | - brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 42 | - shop_id BIGINT NOT NULL COMMENT '库房ID', | ||
| 43 | - shop_name VARCHAR(128) COMMENT '库房名称', | ||
| 44 | - part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 45 | - part_name VARCHAR(256) COMMENT '配件名称', | ||
| 46 | - unit VARCHAR(32) COMMENT '单位', | ||
| 47 | - cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价', | ||
| 48 | - current_ratio DECIMAL(10,4) COMMENT '当前库销比', | ||
| 49 | - base_ratio DECIMAL(10,4) COMMENT '基准库销比', | ||
| 50 | - post_plan_ratio DECIMAL(10,4) COMMENT '计划后预计库销比', | ||
| 51 | - valid_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '有效库存数量', | ||
| 52 | - avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)', | ||
| 53 | - suggest_cnt INT DEFAULT 0 COMMENT '建议采购数量', | ||
| 54 | - suggest_amount DECIMAL(14,2) DEFAULT 0 COMMENT '建议采购金额', | ||
| 55 | - suggestion_reason TEXT COMMENT '补货建议理由', | ||
| 56 | - priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1-高, 2-中, 3-低', | ||
| 57 | - llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度', | ||
| 58 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 59 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 60 | - INDEX idx_task_no (task_no), | ||
| 61 | - INDEX idx_shop_part (shop_id, part_code) | ||
| 62 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议明细表-存储每次任务的配件分配结果'; | ||
| 63 | - | ||
| 64 | --- 3. AI补货分析报告表 | ||
| 65 | -DROP TABLE IF EXISTS ai_replenishment_report; | ||
| 66 | -CREATE TABLE ai_replenishment_report ( | ||
| 67 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 68 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 69 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 70 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 71 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 72 | - total_storage_amount DECIMAL(16,2) COMMENT '总库存金额', | ||
| 73 | - total_sales_amount DECIMAL(16,2) COMMENT '总销售金额(90天)', | ||
| 74 | - overall_ratio DECIMAL(10,4) COMMENT '整体库销比', | ||
| 75 | - target_ratio DECIMAL(10,4) COMMENT '目标库销比', | ||
| 76 | - total_part_count INT DEFAULT 0 COMMENT '配件总数', | ||
| 77 | - shortage_part_count INT DEFAULT 0 COMMENT '缺货配件数', | ||
| 78 | - overstock_part_count INT DEFAULT 0 COMMENT '超标配件数', | ||
| 79 | - normal_part_count INT DEFAULT 0 COMMENT '正常配件数', | ||
| 80 | - stagnant_part_count INT DEFAULT 0 COMMENT '呆滞配件数', | ||
| 81 | - suggest_total_amount DECIMAL(14,2) COMMENT '建议采购总金额', | ||
| 82 | - suggest_part_count INT DEFAULT 0 COMMENT '建议采购配件数', | ||
| 83 | - top_priority_parts TEXT COMMENT '重点关注配件(JSON数组)', | ||
| 84 | - report_content JSON COMMENT '结构化报告内容(JSON)', | ||
| 85 | - llm_provider VARCHAR(32) COMMENT 'LLM提供商', | ||
| 86 | - llm_model VARCHAR(64) COMMENT 'LLM模型', | ||
| 87 | - generation_tokens INT DEFAULT 0 COMMENT '生成Token数', | ||
| 88 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 89 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 90 | - INDEX idx_task_no (task_no), | ||
| 91 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 92 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货分析报告表-存储LLM生成的分析报告'; | ||
| 93 | - | ||
| 94 | --- 4. AI任务执行日志表 | ||
| 95 | -DROP TABLE IF EXISTS ai_task_execution_log; | ||
| 96 | -CREATE TABLE ai_task_execution_log ( | ||
| 97 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 98 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 99 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 100 | - brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 101 | - brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称', | ||
| 102 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 103 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 104 | - step_name VARCHAR(64) NOT NULL COMMENT '步骤名称', | ||
| 105 | - step_order INT DEFAULT 0 COMMENT '步骤顺序', | ||
| 106 | - status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过', | ||
| 107 | - input_data TEXT COMMENT '输入数据(JSON)', | ||
| 108 | - output_data TEXT COMMENT '输出数据(JSON)', | ||
| 109 | - error_message TEXT COMMENT '错误信息', | ||
| 110 | - retry_count INT DEFAULT 0 COMMENT '重试次数', | ||
| 111 | - sql_query TEXT COMMENT 'SQL查询语句(如有)', | ||
| 112 | - llm_prompt TEXT COMMENT 'LLM提示词(如有)', | ||
| 113 | - llm_response TEXT COMMENT 'LLM响应(如有)', | ||
| 114 | - llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗', | ||
| 115 | - execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)', | ||
| 116 | - start_time DATETIME COMMENT '开始时间', | ||
| 117 | - end_time DATETIME COMMENT '结束时间', | ||
| 118 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 119 | - INDEX idx_task_no (task_no), | ||
| 120 | - INDEX idx_group_date (group_id, create_time), | ||
| 121 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 122 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情'; | ||
| 123 | - | ||
| 124 | --- 5. AI补货配件汇总表 | ||
| 125 | -DROP TABLE IF EXISTS ai_replenishment_part_summary; | ||
| 126 | -CREATE TABLE ai_replenishment_part_summary ( | ||
| 127 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 128 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 129 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 130 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 131 | - part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 132 | - part_name VARCHAR(256) COMMENT '配件名称', | ||
| 133 | - unit VARCHAR(32) COMMENT '单位', | ||
| 134 | - cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价', | ||
| 135 | - total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量', | ||
| 136 | - total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量', | ||
| 137 | - group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比', | ||
| 138 | - total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量', | ||
| 139 | - total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额', | ||
| 140 | - shop_count INT DEFAULT 0 COMMENT '涉及门店数', | ||
| 141 | - need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数', | ||
| 142 | - part_decision_reason TEXT COMMENT '配件级补货决策理由', | ||
| 143 | - priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低', | ||
| 144 | - llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度', | ||
| 145 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 146 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 147 | - INDEX idx_task_no (task_no), | ||
| 148 | - INDEX idx_part_code (part_code), | ||
| 149 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 150 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表'; | ||
| 151 | - |
sql/init.sql
| 1 | --- AI 补货建议系统表结构 | ||
| 2 | --- 版本: 2.0 | ||
| 3 | --- 更新: 2026-01-27 | 1 | +-- ============================================================================ |
| 2 | +-- AI 补货建议系统 - 表结构 | ||
| 3 | +-- ============================================================================ | ||
| 4 | +-- 版本: 1.0.0 | ||
| 5 | +-- 更新日期: 2026-01-31 | ||
| 6 | +-- ============================================================================ | ||
| 4 | 7 | ||
| 5 | --- 1. AI预计划明细表 | ||
| 6 | -DROP TABLE IF EXISTS ai_pre_plan_detail; | ||
| 7 | -CREATE TABLE ai_pre_plan_detail ( | ||
| 8 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 9 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 10 | - brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 11 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 12 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 13 | - dealer_id BIGINT COMMENT '商家ID', | ||
| 14 | - dealer_name VARCHAR(128) COMMENT '商家名称', | ||
| 15 | - area_id BIGINT COMMENT '区域ID', | ||
| 16 | - area_name VARCHAR(128) COMMENT '区域名称', | ||
| 17 | - shop_id BIGINT NOT NULL COMMENT '库房ID', | ||
| 18 | - shop_name VARCHAR(128) COMMENT '库房名称', | ||
| 19 | - part_id BIGINT COMMENT '配件ID', | ||
| 20 | - part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 21 | - part_name VARCHAR(256) COMMENT '配件名称', | ||
| 22 | - unit VARCHAR(32) COMMENT '单位', | ||
| 23 | - cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价', | ||
| 24 | - base_ratio DECIMAL(10,4) COMMENT '基准库销比', | ||
| 25 | - current_ratio DECIMAL(10,4) COMMENT '当前库销比', | ||
| 26 | - valid_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '有效库存数量(在库未锁+在途+计划数+调拨在途)', | ||
| 27 | - avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)', | ||
| 28 | - target_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '目标库存数量', | ||
| 29 | - plan_cnt INT DEFAULT 0 COMMENT '建议计划数量', | ||
| 30 | - plan_amount DECIMAL(14,2) DEFAULT 0 COMMENT '建议计划金额', | ||
| 31 | - part_biz_type TINYINT DEFAULT 1 COMMENT '配件业务类型: 1-配件 2-装饰', | ||
| 32 | - statistics_date VARCHAR(16) NOT NULL COMMENT '统计日期(yyyy-MM-dd)', | ||
| 33 | - yn TINYINT DEFAULT 1 COMMENT '是否有效: 1-是 0-否', | ||
| 34 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 35 | - INDEX idx_group_date (group_id, statistics_date), | ||
| 36 | - INDEX idx_dealer_grouping (dealer_grouping_id), | ||
| 37 | - INDEX idx_shop (shop_id) | ||
| 38 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI预计划明细表-存储每日计算的配件补货建议'; | ||
| 39 | - | ||
| 40 | --- 2. AI补货任务表 | 8 | +-- 1. AI补货任务表 |
| 41 | DROP TABLE IF EXISTS ai_replenishment_task; | 9 | DROP TABLE IF EXISTS ai_replenishment_task; |
| 42 | CREATE TABLE ai_replenishment_task ( | 10 | CREATE TABLE ai_replenishment_task ( |
| 43 | id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | 11 | id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', |
| @@ -63,7 +31,7 @@ CREATE TABLE ai_replenishment_task ( | @@ -63,7 +31,7 @@ CREATE TABLE ai_replenishment_task ( | ||
| 63 | INDEX idx_dealer_grouping (dealer_grouping_id) | 31 | INDEX idx_dealer_grouping (dealer_grouping_id) |
| 64 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货任务表-记录每次补货建议任务执行'; | 32 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货任务表-记录每次补货建议任务执行'; |
| 65 | 33 | ||
| 66 | --- 3. AI补货建议明细表 | 34 | +-- 2. AI补货建议明细表 |
| 67 | DROP TABLE IF EXISTS ai_replenishment_detail; | 35 | DROP TABLE IF EXISTS ai_replenishment_detail; |
| 68 | CREATE TABLE ai_replenishment_detail ( | 36 | CREATE TABLE ai_replenishment_detail ( |
| 69 | id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | 37 | id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', |
| @@ -93,38 +61,61 @@ CREATE TABLE ai_replenishment_detail ( | @@ -93,38 +61,61 @@ CREATE TABLE ai_replenishment_detail ( | ||
| 93 | INDEX idx_shop_part (shop_id, part_code) | 61 | INDEX idx_shop_part (shop_id, part_code) |
| 94 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议明细表-存储每次任务的配件分配结果'; | 62 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议明细表-存储每次任务的配件分配结果'; |
| 95 | 63 | ||
| 96 | --- 4. AI补货报告表 | ||
| 97 | -DROP TABLE IF EXISTS ai_replenishment_report; | ||
| 98 | -CREATE TABLE ai_replenishment_report ( | ||
| 99 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 100 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 101 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 102 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 103 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 104 | - total_storage_amount DECIMAL(16,2) COMMENT '总库存金额', | ||
| 105 | - total_sales_amount DECIMAL(16,2) COMMENT '总销售金额(90天)', | ||
| 106 | - overall_ratio DECIMAL(10,4) COMMENT '整体库销比', | ||
| 107 | - target_ratio DECIMAL(10,4) COMMENT '目标库销比', | ||
| 108 | - total_part_count INT DEFAULT 0 COMMENT '配件总数', | ||
| 109 | - shortage_part_count INT DEFAULT 0 COMMENT '缺货配件数', | ||
| 110 | - overstock_part_count INT DEFAULT 0 COMMENT '超标配件数', | ||
| 111 | - normal_part_count INT DEFAULT 0 COMMENT '正常配件数', | ||
| 112 | - stagnant_part_count INT DEFAULT 0 COMMENT '呆滞配件数', | ||
| 113 | - suggest_total_amount DECIMAL(14,2) COMMENT '建议采购总金额', | ||
| 114 | - suggest_part_count INT DEFAULT 0 COMMENT '建议采购配件数', | ||
| 115 | - top_priority_parts TEXT COMMENT '重点关注配件(JSON数组)', | ||
| 116 | - report_title VARCHAR(256) COMMENT '报告标题', | ||
| 117 | - executive_summary TEXT COMMENT '执行摘要', | ||
| 118 | - inventory_analysis TEXT COMMENT '库存分析', | ||
| 119 | - risk_assessment TEXT COMMENT '风险评估', | ||
| 120 | - purchase_recommendations TEXT COMMENT '采购建议', | ||
| 121 | - optimization_suggestions TEXT COMMENT '优化建议', | ||
| 122 | - full_report_markdown LONGTEXT COMMENT '完整报告(Markdown)', | ||
| 123 | - llm_provider VARCHAR(32) COMMENT 'LLM提供商', | ||
| 124 | - llm_model VARCHAR(64) COMMENT 'LLM模型', | ||
| 125 | - generation_tokens INT DEFAULT 0 COMMENT '生成Token数', | ||
| 126 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 127 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | 64 | +-- 3. AI任务执行日志表 |
| 65 | +DROP TABLE IF EXISTS ai_task_execution_log; | ||
| 66 | +CREATE TABLE ai_task_execution_log ( | ||
| 67 | + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 68 | + task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 69 | + group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 70 | + brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 71 | + brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称', | ||
| 72 | + dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 73 | + dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 74 | + step_name VARCHAR(64) NOT NULL COMMENT '步骤名称', | ||
| 75 | + step_order INT DEFAULT 0 COMMENT '步骤顺序', | ||
| 76 | + status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过', | ||
| 77 | + input_data TEXT COMMENT '输入数据(JSON)', | ||
| 78 | + output_data TEXT COMMENT '输出数据(JSON)', | ||
| 79 | + error_message TEXT COMMENT '错误信息', | ||
| 80 | + retry_count INT DEFAULT 0 COMMENT '重试次数', | ||
| 81 | + sql_query TEXT COMMENT 'SQL查询语句(如有)', | ||
| 82 | + llm_prompt TEXT COMMENT 'LLM提示词(如有)', | ||
| 83 | + llm_response TEXT COMMENT 'LLM响应(如有)', | ||
| 84 | + llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗', | ||
| 85 | + execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)', | ||
| 86 | + start_time DATETIME COMMENT '开始时间', | ||
| 87 | + end_time DATETIME COMMENT '结束时间', | ||
| 88 | + create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 89 | + INDEX idx_task_no (task_no), | ||
| 90 | + INDEX idx_group_date (group_id, create_time), | ||
| 91 | + INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 92 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情'; | ||
| 93 | + | ||
| 94 | +-- 4. AI补货配件汇总表 | ||
| 95 | +DROP TABLE IF EXISTS ai_replenishment_part_summary; | ||
| 96 | +CREATE TABLE ai_replenishment_part_summary ( | ||
| 97 | + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 98 | + task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 99 | + group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 100 | + dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 101 | + part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 102 | + part_name VARCHAR(256) COMMENT '配件名称', | ||
| 103 | + unit VARCHAR(32) COMMENT '单位', | ||
| 104 | + cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价', | ||
| 105 | + total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量', | ||
| 106 | + total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量', | ||
| 107 | + group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比', | ||
| 108 | + total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量', | ||
| 109 | + total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额', | ||
| 110 | + shop_count INT DEFAULT 0 COMMENT '涉及门店数', | ||
| 111 | + need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数', | ||
| 112 | + part_decision_reason TEXT COMMENT '配件级补货决策理由', | ||
| 113 | + priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低', | ||
| 114 | + llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度', | ||
| 115 | + statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 116 | + create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 128 | INDEX idx_task_no (task_no), | 117 | INDEX idx_task_no (task_no), |
| 118 | + INDEX idx_part_code (part_code), | ||
| 129 | INDEX idx_dealer_grouping (dealer_grouping_id) | 119 | INDEX idx_dealer_grouping (dealer_grouping_id) |
| 130 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货分析报告表-存储LLM生成的分析报告'; | 120 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表'; |
| 121 | + |
sql/v2_add_log_tables.sql deleted
| 1 | --- AI 任务执行日志表 | ||
| 2 | --- 版本: 1.0 | ||
| 3 | --- 创建日期: 2026-01-28 | ||
| 4 | - | ||
| 5 | --- 任务执行日志表 | ||
| 6 | -CREATE TABLE IF NOT EXISTS ai_task_execution_log ( | ||
| 7 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 8 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 9 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 10 | - brand_grouping_id BIGINT COMMENT '品牌组合ID', | ||
| 11 | - brand_grouping_name VARCHAR(128) COMMENT '品牌组合名称', | ||
| 12 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 13 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 14 | - step_name VARCHAR(64) NOT NULL COMMENT '步骤名称', | ||
| 15 | - step_order INT DEFAULT 0 COMMENT '步骤顺序', | ||
| 16 | - status TINYINT DEFAULT 0 COMMENT '状态: 0-进行中 1-成功 2-失败 3-跳过', | ||
| 17 | - input_data TEXT COMMENT '输入数据(JSON)', | ||
| 18 | - output_data TEXT COMMENT '输出数据(JSON)', | ||
| 19 | - error_message TEXT COMMENT '错误信息', | ||
| 20 | - retry_count INT DEFAULT 0 COMMENT '重试次数', | ||
| 21 | - sql_query TEXT COMMENT 'SQL查询语句(如有)', | ||
| 22 | - llm_prompt TEXT COMMENT 'LLM提示词(如有)', | ||
| 23 | - llm_response TEXT COMMENT 'LLM响应(如有)', | ||
| 24 | - llm_tokens INT DEFAULT 0 COMMENT 'LLM Token消耗', | ||
| 25 | - execution_time_ms INT DEFAULT 0 COMMENT '执行耗时(毫秒)', | ||
| 26 | - start_time DATETIME COMMENT '开始时间', | ||
| 27 | - end_time DATETIME COMMENT '结束时间', | ||
| 28 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 29 | - INDEX idx_task_no (task_no), | ||
| 30 | - INDEX idx_group_date (group_id, create_time), | ||
| 31 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 32 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI任务执行日志表-记录每个步骤的执行详情'; | ||
| 33 | - | ||
| 34 | --- LLM补货建议明细表(商家组合维度) | ||
| 35 | -CREATE TABLE IF NOT EXISTS ai_llm_suggestion_detail ( | ||
| 36 | - id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', | ||
| 37 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 38 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 39 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 40 | - dealer_grouping_name VARCHAR(128) COMMENT '商家组合名称', | ||
| 41 | - shop_id BIGINT NOT NULL COMMENT '库房ID', | ||
| 42 | - shop_name VARCHAR(128) COMMENT '库房名称', | ||
| 43 | - part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 44 | - part_name VARCHAR(256) COMMENT '配件名称', | ||
| 45 | - unit VARCHAR(32) COMMENT '单位', | ||
| 46 | - cost_price DECIMAL(14,2) DEFAULT 0 COMMENT '成本价', | ||
| 47 | - current_storage_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '当前库存数量', | ||
| 48 | - avg_sales_cnt DECIMAL(14,2) DEFAULT 0 COMMENT '平均销量(月)', | ||
| 49 | - current_ratio DECIMAL(10,4) COMMENT '当前库销比', | ||
| 50 | - suggest_cnt INT DEFAULT 0 COMMENT 'LLM建议采购数量', | ||
| 51 | - suggest_amount DECIMAL(14,2) DEFAULT 0 COMMENT 'LLM建议采购金额', | ||
| 52 | - suggestion_reason TEXT COMMENT 'LLM建议依据/理由', | ||
| 53 | - priority INT DEFAULT 0 COMMENT '优先级(1-高 2-中 3-低)', | ||
| 54 | - llm_confidence DECIMAL(5,2) COMMENT 'LLM置信度(0-1)', | ||
| 55 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 56 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 57 | - INDEX idx_task_no (task_no), | ||
| 58 | - INDEX idx_dealer_grouping (dealer_grouping_id), | ||
| 59 | - INDEX idx_shop_part (shop_id, part_code) | ||
| 60 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LLM补货建议明细表-存储LLM生成的商家组合维度配件补货建议及依据'; |
sql/v3_add_suggestion_reason.sql deleted
sql/v4_cleanup_unused_tables.sql deleted
sql/v4_report_json_structure.sql deleted
| 1 | --- 报告结构化重构 - 将 Markdown 字段改为 JSON | ||
| 2 | --- 版本: 4.0 | ||
| 3 | --- 日期: 2026-01-30 | ||
| 4 | - | ||
| 5 | --- 1. 新增 JSON 字段 | ||
| 6 | -ALTER TABLE ai_replenishment_report | ||
| 7 | -ADD COLUMN report_content JSON COMMENT '结构化报告内容(JSON)' AFTER top_priority_parts; | ||
| 8 | - | ||
| 9 | --- 2. 删除旧的 Markdown 字段 | ||
| 10 | -ALTER TABLE ai_replenishment_report | ||
| 11 | -DROP COLUMN report_title, | ||
| 12 | -DROP COLUMN executive_summary, | ||
| 13 | -DROP COLUMN inventory_analysis, | ||
| 14 | -DROP COLUMN risk_assessment, | ||
| 15 | -DROP COLUMN purchase_recommendations, | ||
| 16 | -DROP COLUMN optimization_suggestions, | ||
| 17 | -DROP COLUMN full_report_markdown; |
sql/v5_add_priority_and_confidence.sql deleted
sql/v6_add_part_summary.sql deleted
| 1 | --- v6: 新增配件汇总表 | ||
| 2 | --- 用于存储配件在商家组合维度的汇总补货建议 | ||
| 3 | - | ||
| 4 | -CREATE TABLE IF NOT EXISTS ai_replenishment_part_summary ( | ||
| 5 | - id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||
| 6 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 7 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 8 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 9 | - part_code VARCHAR(64) NOT NULL COMMENT '配件编码', | ||
| 10 | - part_name VARCHAR(256) COMMENT '配件名称', | ||
| 11 | - unit VARCHAR(32) COMMENT '单位', | ||
| 12 | - cost_price DECIMAL(14,2) DEFAULT 0.00 COMMENT '成本价', | ||
| 13 | - | ||
| 14 | - -- 商家组合级别汇总数据 | ||
| 15 | - total_storage_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总库存数量', | ||
| 16 | - total_avg_sales_cnt DECIMAL(14,2) DEFAULT 0.00 COMMENT '商家组合内总月均销量', | ||
| 17 | - group_current_ratio DECIMAL(10,4) COMMENT '商家组合级库销比', | ||
| 18 | - | ||
| 19 | - -- 补货建议汇总 | ||
| 20 | - total_suggest_cnt INT DEFAULT 0 COMMENT '总建议数量', | ||
| 21 | - total_suggest_amount DECIMAL(14,2) DEFAULT 0.00 COMMENT '总建议金额', | ||
| 22 | - shop_count INT DEFAULT 0 COMMENT '涉及门店数', | ||
| 23 | - need_replenishment_shop_count INT DEFAULT 0 COMMENT '需要补货的门店数', | ||
| 24 | - | ||
| 25 | - -- LLM分析结果 | ||
| 26 | - part_decision_reason TEXT COMMENT '配件级补货决策理由', | ||
| 27 | - priority INT NOT NULL DEFAULT 2 COMMENT '优先级: 1=高, 2=中, 3=低', | ||
| 28 | - llm_confidence FLOAT DEFAULT 0.8 COMMENT 'LLM置信度', | ||
| 29 | - | ||
| 30 | - -- 元数据 | ||
| 31 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 32 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 33 | - | ||
| 34 | - INDEX idx_task_no (task_no), | ||
| 35 | - INDEX idx_part_code (part_code), | ||
| 36 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 37 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI补货建议-配件汇总表'; |
sql/v7_add_low_frequency_count.sql deleted
sql/v8_analysis_report.sql deleted
| 1 | --- v8_analysis_report.sql | ||
| 2 | --- 分析报告表,支持按品牌组合分组的分析数据持久化 | ||
| 3 | --- 分析内容由 LLM 生成 | ||
| 4 | - | ||
| 5 | -CREATE TABLE IF NOT EXISTS ai_analysis_report ( | ||
| 6 | - id BIGINT AUTO_INCREMENT PRIMARY KEY, | ||
| 7 | - task_no VARCHAR(32) NOT NULL COMMENT '任务编号', | ||
| 8 | - group_id BIGINT NOT NULL COMMENT '集团ID', | ||
| 9 | - dealer_grouping_id BIGINT NOT NULL COMMENT '商家组合ID', | ||
| 10 | - brand_grouping_id BIGINT DEFAULT NULL COMMENT '品牌组合ID,NULL表示全部品牌', | ||
| 11 | - brand_grouping_name VARCHAR(256) DEFAULT NULL COMMENT '品牌组合名称', | ||
| 12 | - | ||
| 13 | - -- 风险管控统计(数量) | ||
| 14 | - total_count INT DEFAULT 0 COMMENT '配件总数', | ||
| 15 | - shortage_count INT DEFAULT 0 COMMENT '缺货数量', | ||
| 16 | - overstock_count INT DEFAULT 0 COMMENT '超标数量', | ||
| 17 | - normal_count INT DEFAULT 0 COMMENT '正常数量', | ||
| 18 | - low_frequency_count INT DEFAULT 0 COMMENT '低频数量', | ||
| 19 | - stagnant_count INT DEFAULT 0 COMMENT '呆滞数量', | ||
| 20 | - | ||
| 21 | - -- 风险管控统计(金额) | ||
| 22 | - total_amount DECIMAL(16,2) DEFAULT 0 COMMENT '总金额', | ||
| 23 | - shortage_amount DECIMAL(16,2) DEFAULT 0 COMMENT '缺货金额', | ||
| 24 | - overstock_amount DECIMAL(16,2) DEFAULT 0 COMMENT '超标金额', | ||
| 25 | - normal_amount DECIMAL(16,2) DEFAULT 0 COMMENT '正常金额', | ||
| 26 | - low_frequency_amount DECIMAL(16,2) DEFAULT 0 COMMENT '低频金额', | ||
| 27 | - stagnant_amount DECIMAL(16,2) DEFAULT 0 COMMENT '呆滞金额', | ||
| 28 | - | ||
| 29 | - -- LLM 生成的分析内容 | ||
| 30 | - overview_analysis TEXT COMMENT '核心经营综述(LLM生成)', | ||
| 31 | - risk_analysis TEXT COMMENT '风险管控分析(LLM生成)', | ||
| 32 | - action_plan TEXT COMMENT '行动计划分析(LLM生成)', | ||
| 33 | - report_content JSON COMMENT '结构化报告内容', | ||
| 34 | - | ||
| 35 | - llm_provider VARCHAR(32) COMMENT 'LLM提供商', | ||
| 36 | - llm_model VARCHAR(64) COMMENT 'LLM模型名称', | ||
| 37 | - generation_tokens INT DEFAULT 0 COMMENT '生成token数', | ||
| 38 | - statistics_date VARCHAR(16) COMMENT '统计日期', | ||
| 39 | - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 40 | - | ||
| 41 | - INDEX idx_task_no (task_no), | ||
| 42 | - INDEX idx_task_brand (task_no, brand_grouping_id), | ||
| 43 | - INDEX idx_dealer_grouping (dealer_grouping_id) | ||
| 44 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI分析报告表'; |