# 数据源标识系统更新总结 ## ✅ 已完成的更新 ### 1. 数据源配置增强 为三个接口添加了完整的标识配置: | 接口 | 标识码 | 描述 | 颜色标签 | |-----|--------|------|---------| | `DEFAULT` | `YUNNAN_STEEL_ASSOC` | 云南钢协指导价(API) | 🔴 #FF6B6B | | `BACKUP` | `MY_STEEL` | 我的钢铁网价格(API) | 🔵 #4ECDC4 | | `EXTENDED` | `DE_STEEL_FACTORY` | 德钢钢厂指导价(API) | 🟢 #95E1D3 | ### 2. 数据库字段新增 在 `prices` 表中添加了 3 个新字段: ```sql price_source_code VARCHAR(32) -- 数据源代码(唯一标识) price_source_desc VARCHAR(64) -- 数据源描述 data_origin VARCHAR(32) -- 数据来源标识(LOCAL_FILE 或 API:ENDPOINT) ``` ### 3. 导入脚本更新 - [x] `transformData` 函数现在添加标识字段 - [x] 导入时显示数据源信息(标识码、描述、颜色标签) - [x] 支持从 API 和本地文件导入时自动添加标识 ### 4. 数据库迁移 - [x] 创建迁移脚本 `migrate-add-source-fields.js` - [x] 支持重复执行(幂等性) - [x] 添加索引优化查询性能 ## 🚀 使用方法 ### 1. 执行数据库迁移 ```bash npm run db:migrate ``` ### 2. 从 API 导入数据(带标识) ```bash # 导入所有 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. 从本地文件导入数据(带标识) ```bash npm run db:import:local ``` ### 4. 测试数据源标识 ```bash node scripts/test-data-source-identification.js ``` ## 📊 数据查询示例 ### 查询所有数据源统计 ```sql 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; ``` ### 按数据源筛选 ```sql -- 云南钢协数据 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` | 新增完整文档 | ## 📝 注意事项 1. **迁移安全性**: 迁移脚本可重复执行,已存在的字段/索引会自动跳过 2. **向后兼容**: 保留了原有的 `price_source` 字段 3. **性能优化**: 为新字段添加了索引,查询性能更好 4. **唯一 ID**: price_id 的生成现在包含 `price_source_code` ## 🎨 颜色标签 这些颜色标签可以在前端界面中使用: ```javascript const SOURCE_COLORS = { YUNNAN_STEEL_ASSOC: '#FF6B6B', // 🔴 红色 MY_STEEL: '#4ECDC4', // 🔵 蓝绿色 DE_STEEL_FACTORY: '#95E1D3' // 🟢 绿色 }; ``` ## 📚 相关文档 - [详细使用说明](./DATA_SOURCE_IDENTIFICATION.md) - [导入脚本使用说明](../scripts/README-IMPORT.md)