# 数据管理门户（📤 Tab · 2026-08-07）

Admin 用户专属 Tab，提供拖拽上传+质检+一键处理全流程。

## 架构

```
浏览器(admin) → drag/drop → POST /api/upload → 数据/上传/
               → 点击 ⚡处理 → POST /api/upload/process → 质检 → 更新JSON → merge → 部署 → 归档
```

## API 端点

| 端点 | 方法 | 功能 |
|------|:---:|------|
| `/api/upload` | POST | multipart 文件上传，自动类型识别 |
| `/api/uploads` | GET | 上传记录列表 |
| `/api/upload/process` | POST | `{file: "saved_name"}` → 质检+处理+归档 |

## 质检规则

- **ERP 销售订单**：含"单据编号"+"价税合计" → 按销售员汇总 → kpi_progress.json
- **飞书活动导出**：含"活动"/"创建者" → 已识别（待完善自动解析）
- 质检通过才执行处理，处理成功才归档；失败文件保留在原上传目录

## 前后端改动

| 文件 | 改动 |
|------|------|
| `脚本/销售工作台服务.py` | 新增 `run_quality_check()`、`process_uploaded_file()`、3个API端点 |
| `工具/index.html` | 新增 `dataMgmt` Tab（adminOnly）、renderDataMgmt、uploadFiles、processUpload |

## 前端关键函数

- `renderDataMgmt(main)` — 渲染上传区域+记录列表
- `uploadFiles(fileList)` — FormData + XHR POST /api/upload
- `processUpload(filename, btn)` — JSON POST /api/upload/process
- `loadUploadLog()` — XHR GET /api/uploads，列表含⚡处理按钮（仅ERP/飞书导出类型）
- `showToast(msg)` — 底部 Toast 提示（3秒自动消失）
- `adminOnly` 过滤：`renderNav()` 中 `if (t.adminOnly && u.role !== 'admin') return false`

## 服务端关键函数

- `run_quality_check(filepath, ext)` — 检测文件类型+列名校验
- `process_uploaded_file(filepath, ftype, saved_name)` — CSV/XLSX 解析→按销售员汇总→写入kpi_progress.json→merge→deploy
- 归档逻辑：仅处理成功时移至 `数据/上传/_已处理归档/`
