在前后端开发联调前 的提交20260223
This commit is contained in:
186
docs/audit/prompt_logs/prompt_log_20260219_084845.md
Normal file
186
docs/audit/prompt_logs/prompt_log_20260219_084845.md
Normal file
@@ -0,0 +1,186 @@
|
||||
- [P20260219-084845] 2026-02-19 08:48:45 +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 优化
|
||||
|
||||
- **STATUS**: in-progress
|
||||
- **USER QUERIES**: 7-12 (across context transfers), plus current conversation queries
|
||||
- **DETAILS**: 用户要求全面优化 admin-web 所有页面。大部分页面已完成优化。当前正在进行 TaskSelector 的重大重构。
|
||||
|
||||
### 已完成的子任务:
|
||||
1. **skip-quality 移除** — 从 `TaskConfig.tsx` 移除了 `skipQuality` state、Checkbox UI、useEffect 依赖
|
||||
2. **is_common 字段全链路** — 后端 `TaskDefinition` dataclass 添加 `is_common: bool = True`,`TaskItem` 响应模型、API 序列化、前端类型、TaskSelector 排序+标签显示全部打通
|
||||
3. **后端任务注册表同步** — `DWS_RETENTION_CLEANUP` / `DWS_MV_REFRESH_FINANCE_DAILY` / `DWS_MV_REFRESH_ASSISTANT_DAILY` 已替换为 `DWS_MAINTENANCE`;不常用任务标记为 `is_common=False`(DWD_QUALITY_CHECK, DWS_ML_MANUAL_IMPORT, DWS_MAINTENANCE, 全部 UTILITY 任务)
|
||||
4. **fetch_before_verify 范围修正** — 前端限制为仅 `verify_only` 模式显示
|
||||
5. **ods_use_local_json CLI 映射** — `cli_builder.py` 添加 `--data-source offline` 生成逻辑
|
||||
6. **DWD 表选择移入 TaskSelector** — 从独立 DwdTableSelector Card 移入 TaskSelector 内部,作为 DWD_LOAD_FROM_ODS 的子选项
|
||||
7. **dwd_only_tables 生效** — `task_executor._run_subprocess` 新增 `extra_env` 参数,注入 `DWD_ONLY_TABLES` 环境变量
|
||||
8. **后端 sync-check 端点** — 新增 `GET /api/tasks/sync-check`,通过子进程调用 ETL 获取真实任务列表并对比差异
|
||||
9. **前端 API 层更新** — `tasks.ts` 已重写,新增 `fetchFlows()`, `checkTaskSync()`, `fetchDwdTablesRich()`, 以及类型定义 `FlowDef`, `ProcessingModeDef`, `SyncCheckResult`, `DwdTableItem`
|
||||
|
||||
### 当前正在进行的重构(被截断):
|
||||
|
||||
用户要求 4 项重大改造:
|
||||
|
||||
**A. TaskSelector 按业务域全链路展示(最重要,核心改造)**
|
||||
- 当前问题:DWD 层只有 `DWD_LOAD_FROM_ODS` 一个通用任务,导致业务域下 ODS → DWD 断层
|
||||
- 目标交互:每个业务域(如"助教")下展示完整链路:ODS 任务 → DWD 表(该域的) → DWS/INDEX 任务
|
||||
- DWD 表作为该域的"中间环节"自然嵌入,选中 DWD 表 = 过滤 DWD_LOAD_FROM_ODS 的装载范围
|
||||
- 后端数据已就绪:`TaskDefinition` 有 `domain` 和 `layer` 字段,`DwdTableDefinition` 也有 `domain` 字段,两者的 domain 值一致(助教、结算、台桌、会员、商品、团购、库存、财务、指数、工具、通用)
|
||||
- **尚未实现**——`TaskSelector.tsx` 需要完全重写
|
||||
|
||||
**B. 同步检查 UI**
|
||||
- 后端端点已完成(`/api/tasks/sync-check`)
|
||||
- 前端 API 调用已完成(`checkTaskSync()`)
|
||||
- **尚未实现**——需要在任务选择 Card 的 title 旁边加同步状态指示器,有差异时显示警告 Badge,点击打开 Modal/新页面展示差异详情
|
||||
|
||||
**C. 任务选择按钮优化**
|
||||
- **尚未实现**——需要在"全选"前加"全选常用"按钮(只选 `is_common=true` 的任务),"反选"后加"清空"按钮
|
||||
|
||||
**D. Flow 定义从 API 动态加载**
|
||||
- 后端端点已存在(`GET /api/tasks/flows`)
|
||||
- 前端 API 调用已完成(`fetchFlows()`)
|
||||
- **尚未实现**——`TaskConfig.tsx` 中的 `FLOW_DEFINITIONS` 和 `PROCESSING_MODES` 需要改为从 API 加载,本地定义作 fallback
|
||||
|
||||
- **NEXT STEPS**:
|
||||
* 重写 `apps/admin-web/src/components/TaskSelector.tsx`:按业务域全链路展示(ODS 任务 → DWD 表 → DWS/INDEX 任务),每个域一个 Collapse 面板,内部按层分组显示
|
||||
* 在 TaskSelector 中集成同步检查:title 旁加 Badge,点击展示差异 Modal
|
||||
* 在 TaskSelector 中添加"全选常用"和"清空"按钮
|
||||
* 修改 `apps/admin-web/src/pages/TaskConfig.tsx`:将 `FLOW_DEFINITIONS` 和 `PROCESSING_MODES` 改为从 `fetchFlows()` API 动态加载,本地定义作 fallback;确保 TaskSelector 的 props 传递正确
|
||||
* 构建验证:`pnpm run build`(cwd: `apps/admin-web`)
|
||||
|
||||
- **FILEPATHS**:
|
||||
- `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/routers/tasks.py`(已完成 sync-check 端点)
|
||||
- `apps/backend/app/services/task_registry.py`(已完成 is_common + DWS_MAINTENANCE)
|
||||
- `apps/backend/app/services/cli_builder.py`(已完成 ods_use_local_json 映射)
|
||||
- `apps/backend/app/services/task_executor.py`(已完成 extra_env 注入)
|
||||
|
||||
---
|
||||
|
||||
## 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 复杂逻辑
|
||||
- `skip-quality` 参数在 ETL CLI 中不存在,已从前端移除
|
||||
- 连接器和 Store ID 的交互是 TreeSelect 树形多选(已实现)
|
||||
- pnpm build 需要 `Set-Location apps\admin-web; pnpm run build 2>&1`(cwd 参数在此环境中不可靠)
|
||||
- 已有测试 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 的完整路径,DWD 表作为中间环节嵌入
|
||||
|
||||
---
|
||||
|
||||
## 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`
|
||||
- `apps/backend/app/routers/tasks.py`
|
||||
|
||||
USER QUERIES(most recent first):
|
||||
1. - 加一个自动化检查脚本(比如 CI 中对比两边的任务列表),避免手动同步遗漏。这个好,加入这个功能,放在 任务选择 title 旁边,若有差异则提醒。点击后打开新页面展示差异。- 任务选择 全选之前加入按钮:全选常用任务。反选后面加入按钮 清空。- 把前端的 FLOW_DEFINITIONS 改为从 API 动态加载,本地定义仅作 fallback。- 现在的交互还是不对:如果按照现在的方案,以业务场景分类,则每一层都应包含 ODS - DWD - DWS(index)全路径。比如助教类,就会有从ODS一直到DWS和index的全部相关任务。所以,DWD方面还要优化,这样的交互应该是合理的吧?
|
||||
2. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
3. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
4. - 加一个自动化检查脚本(比如 CI 中对比两边的任务列表),避免手动同步遗漏。这个好,加入这个功能,放在 任务选择 title 旁边,若有差异则提醒。点击后打开新页面展示差异。- 任务选择 全选之前加入按钮:全选常用任务。反选后面加入按钮 清空。- 把前端的 FLOW_DEFINITIONS 改为从 API 动态加载,本地定义仅作 fallback。- 现在的交互还是不对:如果按照现在的方案,以业务场景分类,则每一层都应包含 ODS - DWD - DWS(index)全路径。比如助教类,就会有从ODS一直到DWS和index的全部相关任务。所以,DWD方面还要优化,这样的交互应该是合理的吧?
|
||||
5. Output:
|
||||
Hook execution failed with exit code 1.
|
||||
|
||||
Error output:
|
||||
[AUDIT REMINDER] Pending audit detected (root-file, dir:admin-web, dir:backend, dir:etl, dir:miniprogram, dir:db, db-schema-change). Run /audit (Manual: Run /audit hook) to sync docs & write audit artifacts. (rate limit: 15min)
|
||||
|
||||
|
||||
|
||||
Exit Code: 1
|
||||
6. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
7. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
8. 把"DWD 表选择"从独立的 DwdTableSelector 改为 DWD 任务卡片内的"表过滤"子选项,并且真正让它生效。这个方案OK。并在修改后,再思考下,页面如何优化布局。其他的这些问题,分别给出你的参考意见。
|
||||
9. Output:
|
||||
Hook execution failed with exit code 1.
|
||||
|
||||
Error output:
|
||||
[AUDIT REMINDER] Pending audit detected (root-file, dir:admin-web, dir:backend, dir:etl, dir:miniprogram, dir:db, db-schema-change). Run /audit (Manual: Run /audit hook) to sync docs & write audit artifacts. (rate limit: 15min)
|
||||
|
||||
|
||||
|
||||
Exit Code: 1
|
||||
10. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
11. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
12. 任务选择 和 DWD 表选择 从功能的表达上看,是不是有点问题?如果有DWD表选择,也应该有ODS表选择。但表选择和DWD的任务是不是又有些冲突?另外,之前调试是否忽略了一些问题,回忆一下?
|
||||
13. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
14. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
15. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
16. 还有哪些内容不存在(任务、参数、配置)?都帮我检查下。
|
||||
17. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
18. Output:
|
||||
Command executed successfully with no output.
|
||||
|
||||
Exit Code: 0
|
||||
---
|
||||
|
||||
METADATA:
|
||||
The previous conversation had 10 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.
|
||||
Reference in New Issue
Block a user