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

131 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据源标识系统更新总结
## ✅ 已完成的更新
### 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)