156 lines
6.8 KiB
Markdown
156 lines
6.8 KiB
Markdown
# 审计记录:管理后台全量实现 + DB Schema 迁移 + 审计产物重组
|
||
|
||
- 日期:2026-02-15(Asia/Shanghai)
|
||
- Prompt-ID:P20260215-232501(及前序 ~50 个 prompt 的累积变更)
|
||
- 类型:多主题大型变更(新功能 + 数据库迁移 + 仓库治理)
|
||
- 风险等级:高
|
||
|
||
## 变更概述
|
||
|
||
本次未提交变更涵盖三大主题,共 241 个文件(+2713/-8186 行):
|
||
|
||
1. **admin-web-console spec 全量实现**:FastAPI 后端 API + React 前端管理后台
|
||
2. **DB Schema 引用迁移**:全项目 450+ 处旧 schema 名替换 + 数据迁移到新库
|
||
3. **审计产物重组 + .kiro 清理**:审计落地点统一到 `docs/audit/`,清理旧 specs/脚本
|
||
|
||
---
|
||
|
||
## 主题 1:admin-web-console(新功能,高风险)
|
||
|
||
### 后端 API(apps/backend/app/)
|
||
|
||
| 文件/目录 | 变更类型 | 说明 |
|
||
|-----------|----------|------|
|
||
| `app/main.py` | 修改 | 注册所有路由、CORS、WebSocket |
|
||
| `app/config.py` | 修改 | 数据库连接配置更新 |
|
||
| `app/database.py` | 修改 | 连接池管理 |
|
||
| `app/auth/` | 新建 | JWT 鉴权模块(依赖项、JWT 工具) |
|
||
| `app/routers/auth.py` | 新建 | 登录/注册/刷新 token |
|
||
| `app/routers/tasks.py` | 新建 | 任务配置 CRUD |
|
||
| `app/routers/execution.py` | 新建 | 任务执行(CLI 构建 + 子进程) |
|
||
| `app/routers/schedules.py` | 新建 | 调度管理 |
|
||
| `app/routers/env_config.py` | 新建 | 环境变量配置 |
|
||
| `app/routers/db_viewer.py` | 新建 | 数据库查看器 |
|
||
| `app/routers/etl_status.py` | 新建 | ETL 运行状态 |
|
||
| `app/schemas/` | 新建 | Pydantic 请求/响应模型(6 个文件) |
|
||
| `app/services/` | 新建 | 业务逻辑层 |
|
||
| `app/ws/` | 新建 | WebSocket 日志推送 |
|
||
| `pyproject.toml` | 修改 | 补全 fastapi/uvicorn 等运行依赖 |
|
||
| `tests/` | 新建 | 20+ 测试文件(含 hypothesis 属性测试) |
|
||
|
||
**风险点**:
|
||
- 鉴权模块(JWT)为新建,需验证 token 过期/刷新/权限隔离逻辑
|
||
- 任务执行路由直接调用子进程运行 CLI,需关注命令注入防护
|
||
- DB 查看器允许执行 SQL 查询,需确认只读权限约束
|
||
|
||
### 前端(apps/admin-web/)
|
||
|
||
| 文件/目录 | 变更类型 | 说明 |
|
||
|-----------|----------|------|
|
||
| `index.html` | 新建 | Vite 入口 |
|
||
| `package.json` | 新建 | React + Vite + TypeScript |
|
||
| `src/` | 新建 | 6 个页面(TaskConfig/TaskManager/EnvConfig/DBViewer/ETLStatus/LogViewer)+ 组件 + API 客户端 + 路由 |
|
||
| `vite.config.ts` | 新建 | Vite 配置(代理后端 API) |
|
||
|
||
---
|
||
|
||
## 主题 2:DB Schema 引用迁移(高风险)
|
||
|
||
### 迁移规则
|
||
- `billiards_ods` → `ods`
|
||
- `billiards_dwd` → `dwd`
|
||
- `billiards_dws` → `dws`
|
||
- `etl_admin` → `meta`
|
||
- 数据库名:`LLZQ-test` → `etl_feiqiu` / `zqyy_app`
|
||
|
||
### 受影响的高风险路径
|
||
|
||
| 路径 | 变更数 | 说明 |
|
||
|------|--------|------|
|
||
| `apps/etl/pipelines/feiqiu/tasks/` | ~30 文件 | ODS/DWD/DWS/utility/verification 任务中的 SQL schema 前缀 |
|
||
| `apps/etl/pipelines/feiqiu/orchestration/` | 6 文件 | cursor_manager/pipeline_runner/run_tracker/scheduler/task_executor/task_registry |
|
||
| `apps/etl/pipelines/feiqiu/quality/` | 1 文件 | integrity_checker SQL |
|
||
| `apps/etl/pipelines/feiqiu/config/` | 1 文件 | defaults.py schema 配置 |
|
||
| `apps/etl/pipelines/feiqiu/cli/` | 1 文件 | main.py |
|
||
| `apps/etl/pipelines/feiqiu/utils/` | 1 文件 | reporting.py |
|
||
| `apps/etl/pipelines/feiqiu/scripts/` | ~15 文件 | 各类运维/检查/导出脚本 |
|
||
| `gui/` | ~10 文件 | 桌面 GUI 中的 SQL 查询和 schema 引用 |
|
||
| `db/` | 8 文件 | DDL/种子/FDW 配置 |
|
||
| `apps/backend/` | 2 文件 | .env.local + etl_status 路由 |
|
||
|
||
### DB 结构变更
|
||
|
||
| 文件 | 变更类型 | 说明 |
|
||
|------|----------|------|
|
||
| `db/etl_feiqiu/schemas/app.sql` | 修改 | app schema DDL 更新 |
|
||
| `db/etl_feiqiu/seeds/seed_dws_config.sql` | 修改 | schema 引用更新 |
|
||
| `db/etl_feiqiu/seeds/seed_index_parameters.sql` | 修改 | schema 引用更新 |
|
||
| `db/etl_feiqiu/seeds/seed_ods_tasks.sql` | 修改 | schema 引用更新 |
|
||
| `db/etl_feiqiu/seeds/seed_scheduler_tasks.sql` | 修改 | schema 引用更新 |
|
||
| `db/fdw/setup_fdw.sql` | 修改 | FDW 映射配置更新 |
|
||
| `db/fdw/setup_fdw_test.sql` | 新建 | 测试环境 FDW 配置 |
|
||
| `db/zqyy_app/schemas/init.sql` | 修改 | 业务库 schema 更新 |
|
||
| `db/zqyy_app/migrations/20250715_create_admin_web_tables.sql` | 新建 | 管理后台所需表 |
|
||
| `db/zqyy_app/seeds/admin_web_seed.sql` | 新建 | 管理后台种子数据 |
|
||
|
||
**风险点**:
|
||
- 450+ 处 schema 名替换,任何遗漏都会导致运行时 SQL 错误
|
||
- 数据已从旧库迁移到新库,需确认行数一致性
|
||
- FDW 映射需在两个库都正确配置
|
||
|
||
---
|
||
|
||
## 主题 3:审计产物重组 + .kiro 清理
|
||
|
||
### 审计产物迁移
|
||
- 从 `apps/etl/pipelines/feiqiu/docs/audit/` 删除全部旧审计记录(27 条 changes + 40+ prompt_logs + dashboard)
|
||
- 在 `docs/audit/` 重建(已有 29 条 changes + 68 条 prompt_logs)
|
||
- `scripts/audit/gen_audit_dashboard.py` 新建(项目级审计一览表生成器)
|
||
|
||
### .kiro 清理
|
||
- 删除 6 个旧 specs(bd-manual-docs-consolidation/docs-optimization/etl-task-documentation/monorepo-migration/repo-audit/scheduler-refactor)
|
||
- 删除 3 个 PowerShell 脚本(audit_flagger.ps1/audit_reminder.ps1/prompt_audit_log.ps1),替换为 Python 版本
|
||
- 删除 2 个旧 hooks(change-impact-review/db-schema-doc-enforcer)
|
||
- 新增 admin-web-console spec
|
||
- 新增 MCP 配置(.kiro/settings/mcp.json)
|
||
|
||
### 根目录散文件
|
||
- `.env.template`:大幅扩展(+266 行),覆盖后端/管理后台配置
|
||
- `.gitignore`:更新排除规则
|
||
- `NeoZQYY.code-workspace`:更新工作区配置
|
||
- `README.md`:更新项目说明
|
||
- `uv.lock`:依赖锁文件更新(+1090 行)
|
||
|
||
---
|
||
|
||
## 回滚要点
|
||
|
||
1. **后端 API**:删除 `apps/backend/app/auth/`、`app/routers/`、`app/schemas/`、`app/services/`、`app/ws/`,恢复 main.py/config.py/database.py
|
||
2. **前端**:删除 `apps/admin-web/` 全部新建文件
|
||
3. **Schema 迁移**:使用 `git checkout HEAD -- <file>` 恢复所有 450+ 处替换;数据库层面需手动回滚(数据已在新库)
|
||
4. **DB 新表**:回滚 `db/zqyy_app/migrations/20250715_create_admin_web_tables.sql`
|
||
|
||
## 验证建议
|
||
|
||
```bash
|
||
# 后端测试
|
||
cd apps/backend && uv run python -m pytest tests/ -v
|
||
|
||
# ETL 单元测试(验证 schema 迁移无回归)
|
||
cd apps/etl/pipelines/feiqiu && pytest tests/unit
|
||
|
||
# 前端测试
|
||
cd apps/admin-web && pnpm exec vitest run
|
||
|
||
# 前端类型检查
|
||
cd apps/admin-web && pnpm exec tsc --noEmit
|
||
|
||
# 属性测试
|
||
cd C:\NeoZQYY && pytest tests/ -v
|
||
```
|
||
|
||
## 内联注释决策
|
||
|
||
- AI_CHANGELOG:不添加。变更文件数量过多(241 个),逐文件添加会产生大量噪音。本审计记录已按主题分类覆盖全部高风险路径。
|
||
- CHANGE 注释:不添加。Schema 迁移为机械替换(无业务逻辑变更);后端/前端为全新代码(无"修改"语义)。
|