Files
Neo-ZQYY/docs/prd/Neo_Specs/review-audit/P10-NS4-03.md
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

5.3 KiB
Raw Blame History

P10-NS4-03数据导出功能的规范

简要结论

  • 状态: 未解决
  • 租户管理后台tenant-admin无任何业务数据导出功能。后端无导出端点前端无导出按钮数据库无导出日志表。现有的"下载"功能仅限 Excel 空白模板下载和系统管理后台的环境配置导出,均与业务数据导出无关。

详细审查

数据库端

搜索范围:db/zqyy_app/ 全部 SQL 文件

结果:

  • 无导出日志表biz schema 下无 export_logdownload_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_excelexport_to_csv 等工具函数)
  3. 全局搜索 def.*export 仅命中 env_config.pyexport_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.tsxCloudDownloadOutlined 用于 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 数据导出,定义支持导出的页面清单、导出格式、权限规则、导出日志记录要求