在前后端开发联调前 的提交20260223

This commit is contained in:
Neo
2026-02-23 23:02:20 +08:00
parent 254ccb1e77
commit fafc95e64c
1142 changed files with 10366960 additions and 36957 deletions

View File

@@ -0,0 +1,195 @@
- [P20260219-092706] 2026-02-19 09:27:06 +0800
- summary: CONTEXT TRANSFER: We are continuing a conversation that had gotten too long. Here is a summary: --- ## TASK 1: Admin-web…
- prompt:
```text
CONTEXT TRANSFER: We are continuing a conversation that had gotten too long. Here is a summary:
---
## TASK 1: Admin-web 同步检查与 Bug 修复ETL 重构后)
- **STATUS**: done
- **USER QUERIES**: 1 (from earlier context transfer)
- **DETAILS**: 在大量 ETL 重构后,全面检查并修复了 admin-web 前端与后端的同步问题。共 12 处修复,构建验证通过。
- **FILEPATHS**: `apps/backend/app/config.py`, `apps/backend/app/services/cli_builder.py`, `apps/backend/app/schemas/tasks.py`, `apps/admin-web/src/api/tasks.ts`, `apps/admin-web/src/pages/LogViewer.tsx`, `apps/admin-web/src/pages/TaskConfig.tsx`, `apps/admin-web/src/types/index.ts`, `apps/admin-web/src/components/ScheduleTab.tsx`, `apps/admin-web/src/store/authStore.ts`, `apps/admin-web/vite.config.ts`
## TASK 2: ETL 执行深度分析 + Bug 修复
- **STATUS**: done
- **USER QUERIES**: 2-6 (from earlier context transfer)
- **DETAILS**: 用户从 admin-web 执行 api_full 任务16.8 秒就"完成",用户质疑。深度分析发现 5 个关键问题并全部修复。
- **FILEPATHS**: `apps/etl/connectors/feiqiu/tasks/ods/ods_json_archive_task.py`, `apps/etl/connectors/feiqiu/tasks/verification/base_verifier.py`, `apps/admin-web/src/pages/LogViewer.tsx`, `scripts/ops/fix_admin_site_id.py`
## TASK 3: Admin-web 全面 UI 优化4 项重大改造)
- **STATUS**: in-progress
- **USER QUERIES**: 7-12 (across context transfers), plus current conversation
- **DETAILS**: 用户要求 4 项重大改造。代码已全部写入磁盘,`pnpm run build` 构建通过TypeScript 诊断无错误。但通过 Playwright 浏览器验证发现:**页面仍然渲染旧版 TaskSelector**——缺少"全选常用"/"清空"按钮、缺少层级 Tag 标签ODS/DWD/DWS、缺少同步检查按钮、缺少 DWD 表过滤区块。
### 已完成的代码改动文件已写入磁盘build 通过):
**A. TaskSelector 按业务域全链路展示(核心改造)** — `TaskSelector.tsx` 已完全重写:
- 每个业务域一个 Collapse 面板内部按层ODS → DWD → DWS → INDEX分组每层有彩色 Tag 标签
- DWD 表过滤自然嵌入对应域的 DWD 层下方(绿色背景区块,含维度标签)
- `buildDomainGroups()` 函数按 `layer` 字段分组,`LAYER_ORDER`/`LAYER_LABELS`/`LAYER_COLORS`/`DOMAIN_ORDER` 常量控制排序和显示
**B. 同步检查 UI** — 已实现:
- 工具栏右侧显示同步状态(`SyncOutlined`/`CheckCircleOutlined`/`WarningOutlined` 按钮)
- 首次加载自动调用 `checkTaskSync()`
- 有差异时点击打开 Modal 展示 backend_only / etl_only 列表
**C. 全选常用 / 清空按钮** — 已实现:
- 工具栏:全选常用 → 全选 → 反选 → 清空4 个按钮)
- `allCommonCodes` 计算 `is_common=true` 的任务
**D. Flow 定义从 API 动态加载** — 已实现:
- `TaskConfig.tsx` 中 `FLOW_DEFINITIONS` 改为 `FALLBACK_FLOWS``PROCESSING_MODES` 改为 `FALLBACK_PROCESSING_MODES`
- 组件内 `useEffect` 调用 `fetchFlows()` 加载API 不可用时使用 fallback
- `layers` 派生改为 `flowDefs[flow]?.layers ?? []`
- Flow Card title 加载中显示 `<Spin size="small" />`
- 处理模式已验证从 API 加载成功(页面显示"仅增量处理"而非 fallback 的"仅增量"
**E. 类型定义更新** — 已完成:
- `types/index.ts` 中 `TaskDefinition` 添加 `layer: string` 字段
- `types/index.ts` 中新增 `DwdTableItem` 接口
- `api/tasks.ts` 中新增 `fetchDwdTablesRich()`, `fetchFlows()`, `checkTaskSync()` 及类型 `DwdTableItem`, `FlowDef`, `ProcessingModeDef`, `SyncCheckResult`
### 当前问题(需要排查):
**Vite 渲染的仍是旧版 TaskSelector**。已尝试:
1. 清除 `.vite` 缓存目录并重启 dev server
2. 重启后页面仍然只显示"全选"和"反选"(没有"全选常用"和"清空"),没有层级 Tag没有同步检查按钮
可能原因:
- git 显示 `TaskSelector.tsx` 的 hash 与 HEAD commit 一致(`924d2a67...`),说明磁盘文件和 HEAD commit 内容相同
- HEAD commit `4eac07d`"在准备环境前提交次全部更改")是用户在上一轮对话结束时做的全量 commit
- **关键发现**`git show HEAD:apps/admin-web/src/components/TaskSelector.tsx` 输出的中文是乱码PowerShell 编码问题),无法确认 HEAD 中的版本是新版还是旧版
- 但 `git hash-object` 和 `git ls-tree` 显示磁盘文件 hash 与 HEAD 一致,说明 `fsWrite` 写入的内容可能和 HEAD 中的旧版本完全一样——即 **fsWrite 可能没有成功覆盖文件**,或者上一轮对话中已经写入了新版本并被 commit
**需要验证**:用 `readFile` 读取 `TaskSelector.tsx` 的完整内容,确认磁盘上是否真的是新版(含 `handleSelectCommon`、`LAYER_ORDER`、`checkTaskSync` 等)。如果磁盘上确实是新版但 Vite 不渲染,可能是 TypeScript 编译缓存问题,需要清除 `tsconfig.tsbuildinfo` 后重新 build。
- **NEXT STEPS**:
1. 读取 `TaskSelector.tsx` 完整内容,确认是否包含新版代码(`handleSelectCommon`、`LAYER_LABELS`、`renderDwdTableFilter`、`handleSyncCheck`
2. 如果文件是新版但 Vite 不渲染:删除 `apps/admin-web/node_modules/.vite` 和 `apps/admin-web/tsconfig.tsbuildinfo`,重启 dev server
3. 如果文件是旧版:需要重新写入 TaskSelector.tsx新版代码在本 summary 的 TASK 3 描述中有完整设计)
4. 用 Playwright 浏览器验证:登录后检查任务选择区域是否有"全选常用"/"清空"按钮、层级 Tag、同步检查按钮
5. 验证 DWD 表过滤:选中 `DWD_LOAD_FROM_ODS` 后,各域下应出现绿色 DWD 表过滤区块
- **FILEPATHS**:
- `apps/admin-web/src/components/TaskSelector.tsx` — 核心文件,需要验证/重写
- `apps/admin-web/src/pages/TaskConfig.tsx` — 已改动Flow 动态加载)
- `apps/admin-web/src/api/tasks.ts` — 已改动(新增 API 函数)
- `apps/admin-web/src/types/index.ts` — 已改动(新增 layer 字段和 DwdTableItem
- `apps/backend/app/routers/tasks.py` — 已改动(新增 sync-check 端点)
- `apps/backend/app/services/task_registry.py` — 参考数据任务定义、DWD 表定义、domain/layer 字段)
---
## USER CORRECTIONS AND INSTRUCTIONS:
- 所有说明性文字使用简体中文
- 后端用 `uv run` 启动(不是直接 `python`
- 前端用 `pnpm` 管理
- 后端进程运行在端口 8000`uv run uvicorn app.main:app --reload --port 8000`cwd: `apps/backend`
- 前端进程运行在端口 5174`pnpm run dev`cwd: `apps/admin-web`
- ETL 项目实际路径是 `apps/etl/connectors/feiqiu/`
- 脚本执行规范:优先编写 Python 脚本再执行,避免 PowerShell 复杂逻辑
- pnpm build 命令:`Set-Location apps\admin-web; pnpm run build 2>&1`
- 已有测试 bug`test_cli_args.py::TestBuildCliOverrides::test_data_source_online_sets_run_key` 失败(`force_full` 属性缺失),非本次修改引起
- `--overlap-seconds` 默认值不一致CLI 3600 vs 前端 600是有意的保持现状
- DWS/INDEX 层校验被跳过是设计如此verifier 未实现),业务任务正常执行
- 业务域全链路交互:每个域(如助教)应包含 ODS → DWD 表 → DWS/INDEX 的完整路径
- 用户要求用 MCP Playwright 工具来验证页面效果
- Vite 缓存清除:需要删除 `apps/admin-web/node_modules/.vite` 目录
---
## Files to read
- `apps/admin-web/src/components/TaskSelector.tsx`
- `apps/admin-web/src/pages/TaskConfig.tsx`
- `apps/admin-web/src/api/tasks.ts`
- `apps/admin-web/src/types/index.ts`
- `apps/backend/app/services/task_registry.py`
USER QUERIES(most recent first):
1. 加载需要时间,现在看看
2. Output:
Command executed successfully with no output.
Exit Code: 0
3. Output:
Command executed successfully with no output.
Exit Code: 0
4. 加载需要时间,现在看看
5. Output:
Command executed successfully with no output.
Exit Code: 0
6. Output:
Command executed successfully with no output.
Exit Code: 0
7. 使用MCP
8. Output:
Command executed successfully with no output.
Exit Code: 0
9. Output:
Command executed successfully with no output.
Exit Code: 0
10. 你自己检查下...
11. Output:
Command executed successfully with no output.
Exit Code: 0
12. Output:
Command executed successfully with no output.
Exit Code: 0
13. Output:
Command executed successfully with no output.
Exit Code: 0
14. 我并没有发现有改变啊?没有编译么?
15. Output:
Hook execution failed with exit code 1.
Error output:
[AUDIT REMINDER] Pending audit detected (dir:admin-web, dir:backend). Run /audit (Manual: Run /audit hook) to sync docs & write audit artifacts. (rate limit: 15min)
Exit Code: 1
16. Output:
Command executed successfully with no output.
Exit Code: 0
17. Output:
Command executed successfully with no output.
Exit Code: 0
18. 继续
19. Output:
Hook execution failed with exit code 1.
Error output:
[AUDIT REMINDER] Pending audit detected (dir:admin-web, dir:backend). Run /audit (Manual: Run /audit hook) to sync docs & write audit artifacts. (rate limit: 15min)
Exit Code: 1
20. Output:
Command executed successfully with no output.
Exit Code: 0
21. Output:
Command executed successfully with no output.
Exit Code: 0
---
METADATA:
The previous conversation had 12 messages.
INSTRUCTIONS:
Continue working until the user query has been fully addressed. Do not ask for clarification - proceed with the work based on the context provided.