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