3.4 KiB
3.4 KiB
数据源标识系统更新总结
✅ 已完成的更新
1. 数据源配置增强
为三个接口添加了完整的标识配置:
| 接口 | 标识码 | 描述 | 颜色标签 |
|---|---|---|---|
DEFAULT |
YUNNAN_STEEL_ASSOC |
云南钢协指导价(API) | 🔴 #FF6B6B |
BACKUP |
MY_STEEL |
我的钢铁网价格(API) | 🔵 #4ECDC4 |
EXTENDED |
DE_STEEL_FACTORY |
德钢钢厂指导价(API) | 🟢 #95E1D3 |
2. 数据库字段新增
在 prices 表中添加了 3 个新字段:
price_source_code VARCHAR(32) -- 数据源代码(唯一标识)
price_source_desc VARCHAR(64) -- 数据源描述
data_origin VARCHAR(32) -- 数据来源标识(LOCAL_FILE 或 API:ENDPOINT)
3. 导入脚本更新
transformData函数现在添加标识字段- 导入时显示数据源信息(标识码、描述、颜色标签)
- 支持从 API 和本地文件导入时自动添加标识
4. 数据库迁移
- 创建迁移脚本
migrate-add-source-fields.js - 支持重复执行(幂等性)
- 添加索引优化查询性能
🚀 使用方法
1. 执行数据库迁移
npm run db:migrate
2. 从 API 导入数据(带标识)
# 导入所有 API 数据
npm run db:import:api
# 导入单个接口数据
node scripts/import-data.js single-api DEFAULT
node scripts/import-data.js single-api BACKUP
node scripts/import-data.js single-api EXTENDED
3. 从本地文件导入数据(带标识)
npm run db:import:local
4. 测试数据源标识
node scripts/test-data-source-identification.js
📊 数据查询示例
查询所有数据源统计
SELECT
price_source_code AS '数据源代码',
price_source_desc AS '数据源描述',
data_origin AS '数据来源',
COUNT(*) AS '记录数',
AVG(hang_price) AS '平均价格'
FROM prices
GROUP BY price_source_code, price_source_desc, data_origin;
按数据源筛选
-- 云南钢协数据
SELECT * FROM prices WHERE price_source_code = 'YUNNAN_STEEL_ASSOC';
-- API 导入的数据
SELECT * FROM prices WHERE data_origin LIKE 'API:%';
-- DEFAULT 接口数据
SELECT * FROM prices WHERE data_origin = 'API:DEFAULT';
🔧 修改的文件
| 文件 | 修改内容 |
|---|---|
scripts/import-data.js |
添加数据源配置、更新 transformData 函数 |
src/models/Price.js |
更新表结构、添加迁移函数、更新插入函数 |
package.json |
添加新的 npm 脚本命令 |
scripts/migrate-add-source-fields.js |
新增迁移脚本 |
scripts/test-data-source-identification.js |
新增测试脚本 |
docs/DATA_SOURCE_IDENTIFICATION.md |
新增完整文档 |
📝 注意事项
- 迁移安全性: 迁移脚本可重复执行,已存在的字段/索引会自动跳过
- 向后兼容: 保留了原有的
price_source字段 - 性能优化: 为新字段添加了索引,查询性能更好
- 唯一 ID: price_id 的生成现在包含
price_source_code
🎨 颜色标签
这些颜色标签可以在前端界面中使用:
const SOURCE_COLORS = {
YUNNAN_STEEL_ASSOC: '#FF6B6B', // 🔴 红色
MY_STEEL: '#4ECDC4', // 🔵 蓝绿色
DE_STEEL_FACTORY: '#95E1D3' // 🟢 绿色
};