Files
steel_prices_service/docs/DATA_SOURCE_UPDATE_SUMMARY.md
2026-01-06 18:00:43 +08:00

3.4 KiB
Raw Blame History

数据源标识系统更新总结

已完成的更新

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 新增完整文档

📝 注意事项

  1. 迁移安全性: 迁移脚本可重复执行,已存在的字段/索引会自动跳过
  2. 向后兼容: 保留了原有的 price_source 字段
  3. 性能优化: 为新字段添加了索引,查询性能更好
  4. 唯一 ID: price_id 的生成现在包含 price_source_code

🎨 颜色标签

这些颜色标签可以在前端界面中使用:

const SOURCE_COLORS = {
  YUNNAN_STEEL_ASSOC: '#FF6B6B',  // 🔴 红色
  MY_STEEL: '#4ECDC4',            // 🔵 蓝绿色
  DE_STEEL_FACTORY: '#95E1D3'     // 🟢 绿色
};

📚 相关文档