pipeline-app/docs/ownership-migration-audit-20260910.md

101 lines
6.6 KiB
Markdown
Raw 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.

# 三张跨产线表迁归属审计报告(第2~5轮)
日期:2026-09-10
范围:sd_projects / sd_project_role_models / pipeline_deliverables 三表自 pipeline-sdlc 迁入 pipeline-core,
配套路径切换、RBAC 重注册、坏下拉修复、表治理清单。全部变更已部署测试机并实测验证。
## 一、迁归属(第2轮)
### 提交链(四仓)
| 仓 | 提交 | 内容 |
|---|---|---|
| pipeline-core | 4b2fd4c | 迁入 3 models JSON + 2 CRUD json + 15 api dspy + 手写角色模型页整目录 + 4 组字典入 init/data.json |
| pipeline-sdlc | 0a339a2 | 源侧全删不留副本(42 文件 -1443 行);清两处死双源:wwwroot/json/ 整目录(零消费方)、sd_project_list/index.ui 死占位页(零菜单引用) |
| pipeline-app | b2e1017 | build.sh created_by 修补路径改 /pipeline_core/(sd_iterations 分支保留);load_path.py 删 2 条旧注册 + 补 3 条新注册 |
| pipeline-service | 92cdafd | 项目/模型配置弹窗 URL 改 /pipeline_core/** |
### 交接清单之外补全的 4 处隐性依赖(不改必炸)
1. **15 个 api dspy 必须随页面迁**:页面用 `entire_url('../api/...')` 相对解析,
页面挪到 /pipeline_core/ 后相对路径指向 core 的 api 目录,API 不迁则全部 404。
2. **sdlc 留存页面(迭代/部署/特性)对 get_project_options.dspy 的引用改绝对路径**
`/pipeline_core/api/**`;反向 core 的 sd_project_list subtables(迭代/仓库子表)改绝对路径
`/pipeline-sdlc/**`。跨模块引用一律绝对路径,杜绝再次迁移时连锁断链。
3. **cockpit_cards.dspy**(sdlc 驾驶舱卡片)项目管理弹窗 URL 同步改 /pipeline_core/。
4. **全平台旧路径残留扫描 = 0**(含单双引号/Jinja 各种形态,实测)。
## 二、路径切换 + RBAC(第3轮)
- 新注册 3 条:/pipeline_core/sd_projects/**、/pipeline_core/sd_project_role_models/**、
/pipeline_core/pipeline_deliverables/**(另有 /pipeline_core/** logined 通配兜底,实测挂
logined + owner.superuser)。
- 旧权限行清理:精确清单 20 条删除(连带 rolepermission 22 条);另揪出 3 条历史变体
(末尾斜杠 / `**` 通配形态)一并删除。**保留 perm_sd_project_repos**——指向未迁移的
仓库列表页,误删=403。
- 备份:测试机与本地 /tmp/old_perms_backup.json(20 条被删权限全量)。
- redis FLUSHDB -n 0(清 RBAC 双层缓存 TTL600s)+ restart-pipeline.sh 重启,进程存活确认。
- import_init 幂等重跑:4 组字典(sd_project_status=5 / sd_project_type=8 /
deliverable_type=4 / review_status=3)落库实测。
### 登录态 HTTP 冒烟(重启后实测,全绿)
| 组 | 路径 | 期望 | 实测 |
|---|---|---|---|
| 新 | /pipeline_core/sd_projects/index.ui | 200 | 200 (12483B) |
| 新 | /pipeline_core/sd_project_role_models/index.ui | 200 | 200 (5900B) |
| 新 | /pipeline_core/pipeline_deliverables/index.ui | 200 | 200 (10507B) |
| 新 | /pipeline_core/api/get_{project,role,model}_options.dspy | 200 | 200 |
| 旧 | /pipeline-sdlc/sd_projects/index.ui 等 4 条 | 不可达 | 500 invalid path(文件已删,非权限层) |
| 回归 | /pipeline-sdlc/sd_iteration_list、sd_iterations、sd_deploy_env_list、index.ui、/pipeline_ops/index.ui | 200 | 全 200 |
注:冒烟登录路径是 /rbac/user/up_login.dspy(conf/rp.json any 白名单带 /rbac 前缀,
直连 /user/up_login.dspy 会 401——不是 bug)。旧路径 500 语义 = url2file 找不到文件的
"invalid path" 异常,等效不可达。
## 三、坏下拉修复(第4轮)
pipeline-core 提交 889b450:
| 坏点 | 根因 | 修复 |
|---|---|---|
| role 下拉 | models codes 指 appcodes_kv parentid='sd_role',但该字典组全平台不存在 | init/data.json 补 sd_role 字典组 8 项(与 get_role_options.dspy 硬编码 8 角色逐项对齐:agent.pm/requirement/design/develop/deploy_test/test/deploy_prod/qc) |
| model_name 下拉 | codes 指旧 llm 表(8 行残留数据,已停用) | 改指 llm_model,cond="status='active'"(active=15 / disabled=5,停用模型不再出现) |
同时 model_name 字段 title 由 "llm.name" 改 "llm_model.name"。
事实澄清:线上手写页(wwwroot/sd_project_role_models/index.ui,git 跟踪)下拉走
get_role_options.dspy / get_model_options.dspy(API 动态),本来就是好的;坏的是
models JSON 的 codes 段——影响 xls2ui 生成链与工具链一致性,且 role codes 指向不存在
的字典组属于潜伏缺陷。修复后双轨一致。
实测(登录态):get_role_options 返回 8 角色;get_model_options 返回缺省项 + 15 个
active 模型(t2t/i2t/m2t 会话能力过滤生效)。sd_role 字典 8 项落库确认。
## 四、表治理清单(第5轮,记入 core README)
| 表 | 状态 | 证据 | 待办 |
|---|---|---|---|
| pipeline_conversations | **孤儿表**:有真实读写但无 models 定义 | 395 行,最新写入 2026-09-10 14:11(agent_loop_v2 sor.C 落盘);驾驶舱 v2 历史加载 SELECT;全平台 0 个 models JSON | 补 models 定义(归属 pipeline-service 或 core 待定);新库部署会缺表 |
| sd_conversations | **死表**:有 models 定义但零写 | 32 行,全部停在 2026-08-01(驾驶舱 v2 上线前);现存引用仅 SELECT/DELETE/孤儿巡检 | 待删除决议(DROP + 删 models + 清 project_capability 引用) |
## 五、README / 技能同步(第5轮)
- pipeline-core/README.md:数据表补 3 行迁入表;新增"跨产线共享资源"与"表治理清单"章节。
- pipeline-sdlc/README.md:数据表移除 sd_projects;补迁出说明与绝对路径消费约定。
- module-migration 技能:已含本轮全部新经验(相对路径跟随页面迁移、权限变体 LIKE 扫、
codes/手写页下拉双轨、import_init 吞错验证、aiomysql LIKE %% 转义、FLUSHDB+重启、
/rbac 前缀登录冒烟法)。
## 六、遗留观察(非阻塞)
1. 生产部署须走 Nuitka 编译二进制门禁(铁律),本次仅测试机。
2. pipeline-core 仓有一处未提交改动:skills_library/pipelines/platform_general/common/
model-onboarding/SKILL.md(M 状态,非本任务产物,属并行工作,未动)。
3. pipeline-app 有未跟踪文件 deploy/migrations/m0021_llm_usage_drop_token_cols.json
(并行会话产物,未动)。
4. 旧 llm 表(8 行残留)与 sd_project_repos 未迁移页面:属后续批次。
5. 生产上线顺序:四仓 push(已完成)→ 生产 git pull + pip install(pipeline-service
非 editable 必须 install)→ xls2ui 重跑 → import_init → 权限切换(备份→删旧→注册新)
→ FLUSHDB -n 0 → 重启 → 同款冒烟。