Files
Neo 6f8f12314f feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:03:48 +08:00

100 lines
5.3 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.
# P10-NS4-03数据导出功能的规范
## 简要结论
- 状态:❌ 未解决
- 租户管理后台tenant-admin无任何业务数据导出功能。后端无导出端点前端无导出按钮数据库无导出日志表。现有的"下载"功能仅限 Excel 空白模板下载和系统管理后台的环境配置导出,均与业务数据导出无关。
## 详细审查
### 数据库端
搜索范围:`db/zqyy_app/` 全部 SQL 文件
结果:
- **无导出日志表**`biz` schema 下无 `export_log``download_log` 等导出记录表
- **现有表**`biz.excel_upload_log` 仅记录 Excel **上传**操作upload_type: expense/platform_income/salary_adj/recharge_commission无导出相关字段
- **无导出审计字段**:任何现有表均未包含导出时间、导出人、导出格式等审计字段
### 后端代码
搜索范围:`apps/backend/app/routers/` 全部 tenant_*.py 文件 + 全部路由文件
逐文件审查结果:
| 路由文件 | 导出相关端点 | 说明 |
|----------|-------------|------|
| `tenant_auth.py` | 无 | 仅登录/鉴权 |
| `tenant_users.py` | 无 | 用户审核+管理,无导出 |
| `tenant_excel.py` | `GET /template/{type}` | **模板下载**(空白 Excel 模板),非数据导出 |
| `tenant_clues.py` | 无 | 线索 CRUD无导出 |
| `env_config.py` | `GET /export` | **环境配置导出**admin-web 专用),非业务数据 |
关键发现:
1. `tenant_excel.py` 包含 `download_template()` 函数,使用 `openpyxl` + `StreamingResponse` 生成空白模板文件,仅含表头和格式说明,不含任何业务数据
2. 后端无通用导出工具模块(无 `export_to_excel``export_to_csv` 等工具函数)
3. 全局搜索 `def.*export` 仅命中 `env_config.py``export_env_config()`(系统管理后台功能)
### 前端代码
#### tenant-admin租户管理后台
搜索范围:`apps/tenant-admin/src/` 全部文件
页面清单与导出功能:
| 页面 | 路径 | 导出按钮 | 说明 |
|------|------|---------|------|
| Login | `pages/Login/` | 无 | 登录页 |
| UserApproval | `pages/UserApproval/` | 无 | 用户审核 |
| UserManagement | `pages/UserManagement/` | 无 | 用户管理 |
| ExcelUpload | `pages/ExcelUpload/` | 无 | 仅有模板**下载**按钮(`DownloadOutlined` + `handleDownloadTemplate` |
| RetentionClues | `pages/RetentionClues/` | 无 | 维客线索管理 |
结论5 个页面均无数据导出功能。ExcelUpload 页面的 `DownloadOutlined` 图标用于下载空白模板,非数据导出。
#### admin-web系统管理后台参考
搜索范围:`apps/admin-web/src/` 全部文件
- `EnvConfig.tsx`:有"导出"按钮,调用 `exportEnvConfig()` 导出去敏感值的 `.env` 配置文件 → 运维功能,非业务数据导出
- `OpsPanel.tsx``CloudDownloadOutlined` 用于 Git Pull 操作 → 非数据导出
- **无业务数据导出功能可参考**
### 差距分析
review-report.md 中 P10→NS4 缺失项 #3 指出P10 §数据导出 位置隐含了管理后台应支持数据导出,但 NS4 完全未提及。
作为管理后台,以下场景存在合理的导出需求但均未实现:
| 导出场景 | 数据源 | 潜在用户需求 | 当前状态 |
|----------|--------|-------------|---------|
| 用户列表导出 | `auth.users` | 租户管理员需要离线查看/统计用户信息 | ❌ 无 |
| 审核记录导出 | `auth.user_applications` | 审核工作量统计、合规审计 | ❌ 无 |
| Excel 上传历史导出 | `biz.excel_upload_log` | 上传操作追溯、数据核对 | ❌ 无 |
| 维客线索导出 | `member_retention_clue` | 线索数据离线分析、交接 | ❌ 无 |
| 助教奖罚明细导出 | `biz.salary_adjustments` | 工资核算、财务对账 | ❌ 无 |
补充说明:
- P10 spec 本身也未明确列出"数据导出"功能(无 AC、无任务项但 review-report 将其标记为隐含需求
- P7-NS1-10 审查(绩效明细导出)结论同样为 ❌ 未解决,说明整个项目目前缺乏通用的数据导出基础设施
### 建议
1. **明确需求优先级**:数据导出为隐含需求,建议在 NS4 spec 中明确标注为"后续迭代项"或"MVP 不含",避免歧义
2. **如需实现,建议分两步**
- **Step 1 — 通用导出基础设施**
- 后端新增 `apps/backend/app/utils/export_helper.py`,封装 openpyxl 生成 Excel 的通用逻辑列定义、数据填充、StreamingResponse 包装)
- 新建 `biz.export_log` 表记录导出操作who/when/what/row_count满足审计要求
- **Step 2 — 逐页面接入**
- 用户列表:`GET /api/tenant/users/export?format=xlsx`
- 审核记录:`GET /api/tenant/applications/export?status=&format=xlsx`
- 维客线索:`GET /api/tenant/customers/{member_id}/clues/export`
- 上传历史:`GET /api/tenant/excel/logs/export`
3. **权限控制**:导出操作应复用现有的 `require_tenant_admin()` 鉴权 + `site_id IN (管辖列表)` 数据隔离,确保导出数据不越权
4. **导出格式**:建议统一 `.xlsx`(已有 openpyxl 依赖),暂不支持 CSV避免中文编码问题
5. **NS4 spec 补充建议**:在 NS4 文档"三、功能详细设计"中新增 §3.5 数据导出,定义支持导出的页面清单、导出格式、权限规则、导出日志记录要求