Skip to content

旧模型删除清单

状态:Complete -- todo.mdA-002H-001~H-005 已全部完成并验收,本清单不再是待执行任务依据,转为历史记录 + 防回流索引。发现旧模型回流时,先在本清单登记条目,再引用 guard 项创建最小修复任务。

使用规则

  • 「已删除」表示物理删除 + guard 防回流同时成立。
  • 新增发现的旧模型残留,必须先登记进本清单再删除,不得绕过清单直接删。
  • 生产部署执行 CleanupAllLegacy 前,须按 H-005 约定取得单独明确确认并完成备份校验(见 internal/model/migration_legacy_cleanup.goLegacyCleanupReport dry-run)。

状态约定

  • 已删除:代码库中已物理移除,且有 guard 条目防回流。
  • 待复核:代码库中已无定义,但生产环境/历史数据中可能仍存在,需 H-005 阶段核查。

防回流证据来源

  • scripts/dashboard_vnext_guard.sh(下称 vNext guard):CI lint job 调用,守护 PageSpec 唯一模型。
  • .github/scripts/dashboard_guard.sh(下称 model guard):ci-dashboard.yml 调用,removed_paths 数组与符号扫描防止旧路径回流。

H-001 Formily 与 form-render 清理

删除任务:H-001;Depends: A-001, E-001。整体 E2E 前置:E-001 SchemaFormRenderer 表单链路浏览器 E2E 通过,web build 通过。

| # | 清单项 | 类型 | 状态 | 替代任务 | Owner | 删除前置条件(E2E) | 删除任务 | 防回流证据 | | ------- | --------------------------------------------------------- | ------ | ------ | -------- | ----- | --------------------------------------- | -------- | --------------------------------------------------------- | ----------- | ------------------ | ------------------- | --------------- | --------------- | ------------------------ | | H-001-1 | web/package.json@formily/* 依赖 | 依赖 | 已删除 | E-001 | H-001 | SchemaFormRenderer(@rjsf) 表单 E2E 通过 | H-001 | vNext guard「Formily runtime dependency absent」 | | H-001-2 | web/package.jsonform-render 依赖 | 依赖 | 已删除 | E-001 | H-001 | 同上 | H-001 | vNext guard「legacy Formily/FunctionForm runtime absent」 | | H-001-3 | web/pnpm-lock.yaml 中 formily/form-render lockfile 条目 | 依赖 | 已删除 | E-001 | H-001 | 同上 | H-001 | lockfile 零命中(A-002 勘察记录) | | H-001-4 | web/src/components/formily/ | 源文件 | 已删除 | E-001 | H-001 | 同上 | H-001 | vNext guard assert_file_absent | | H-001-5 | web/src/components/FormilyPageRenderer/ | 源文件 | 已删除 | E-001 | H-001 | 同上 | H-001 | vNext guard assert_file_absent | | H-001-6 | web/src/components/FunctionFormManager/ | 源文件 | 已删除 | E-001 | H-001 | 同上 | H-001 | vNext guard assert_file_absent | | H-001-7 | web/src 内 Formily/form-render 符号与文案 | 引用 | 已删除 | E-001 | H-001 | 同上 | H-001 | vNext guard rg 扫描 @formily/ | form-render | components/formily | FunctionFormManager | generateFormily | validateFormily | BuildFallbackFormSchema |

H-002 旧 Page renderer 与旧运行 registry

删除任务:H-002;Depends: A-002, E-002~E-007。整体 E2E 前置:全量浏览器 E2E(I-* 验收矩阵)通过,且 vNext guard 通过;Console 仅使用 vNext PageRenderer,无 fallback renderer 或 feature flag 双路径。

#清单项类型状态替代任务Owner删除前置条件(E2E)删除任务防回流证据
H-002-1web/src/components/PageGenerator/源文件已删除E-002~E-007H-002全量浏览器 E2E 通过H-002model guard removed_paths + 符号扫描
H-002-2web/src/components/WorkspaceRenderer/源文件已删除E-002~E-007H-002同上H-002model guard removed_paths + 符号扫描
H-002-3web/src/components/XUISchema.tsx源文件已删除E-002~E-007H-002同上H-002model guard removed_paths
H-002-4web/src/components/FunctionUIManager/源文件已删除E-005H-002同上H-002model guard removed_paths + 符号扫描
H-002-5web/src/components/FunctionFormRenderer/源文件已删除E-001H-002同上H-002model guard removed_paths + 符号扫描
H-002-6web/src/pages/WorkspaceEditor/源文件已删除D-002H-002同上H-002model guard removed_paths + web/docs 扫描
H-002-7web/src/pages/Workspaces/源文件已删除E-002H-002同上H-002model guard removed_paths
H-002-8web/src/pages/Entities/源文件已删除E-002H-002同上H-002model guard removed_paths
H-002-9web/src/services/workspaceConfig.ts源文件已删除D-001H-002同上H-002model guard removed_paths + 符号扫描
H-002-10web/src/types/workspace.ts源文件已删除D-001H-002同上H-002model guard removed_paths
H-002-11web/tests/workspace/测试已删除I-*H-002同上H-002model guard removed_paths
H-002-12旧前端路由(Workspace/Entities 等旧工作台入口)路由已删除D-003H-002同上H-002web/config/routes.ts 仅注册 /console/:categoryKey/:pageKey 等 vNext 路由(vNext guard assert_contains
H-002-13objectKey 运行时引用引用已删除D-003H-002同上H-002model guard「objectKey must not be used in Page/Console runtime」
H-002-14Console 直接 /functions/:id/invoke 调用API 调用已删除E-005H-002同上H-002model guard「console runtime must execute page bindings」
H-002-15web/docs/ 下 8 个旧 workspace 文档(DEMO/WORKSPACE_* 等)文档已删除G-*H-002同上H-002model guard removed_paths + web/docs 符号扫描

H-003 旧 Page schema validator/editor

删除任务:H-003;Depends: A-002, D-002, F-004。整体 E2E 前置:浏览器 E2E 编辑/发布链路(PageStudio 强类型 DTO + 语义面板)通过;rg 无旧 editor/validator 引用。

#清单项类型状态替代任务Owner删除前置条件(E2E)删除任务防回流证据
H-003-1web/src/pages/PageStudioV2/源文件已删除D-002H-003编辑/发布浏览器 E2E 通过H-003vNext guard assert_file_absent + 符号扫描 PageStudioV2
H-003-2web/src/pages/PageStudio/PageSchemaEditor.tsx源文件已删除D-002H-003同上H-003vNext guard assert_file_absent + 符号扫描 PageSchemaEditor
H-003-3web/src/types/dashboard-vnext.ts源文件已删除D-001H-003同上H-003vNext guard assert_file_absent + 符号扫描 dashboard-vnext
H-003-4web/src/services/dashboard-vnext.ts源文件已删除D-001H-003同上H-003vNext guard assert_file_absent
H-003-5internal/dashboard/generator/generator_v2.go源文件已删除C-011H-003同上H-003vNext guard assert_file_absent + 符号扫描 PageSpecV2
H-003-6internal/dashboard/descriptors/ 请求时 descriptor 收集器源文件已删除C-002H-003同上H-003vNext guard assert_dir_has_no_files + descriptors.Collect 扫描
H-003-7internal/validation/entity.goentity_test.goentity_extra_test.go源文件已删除B-006H-003同上H-003model guard removed_paths + validator 符号扫描
H-003-8internal/function/converter/pack.go源文件已删除B-006H-003同上H-003model guard removed_paths + PackConverter 符号扫描
H-003-9internal/function/uicontract/源文件已删除B-001H-003同上H-003model guard removed_paths + uicontract 符号扫描
H-003-10internal/logic/function/function_u_i_*(history/rollback/update/v2/versioning 共 6 个文件及测试)源文件已删除D-004H-003同上H-003model guard removed_paths(逐项登记)
H-003-11internal/logic/function/ui_resolver.goui_resolver_test.go源文件已删除C-011H-003同上H-003model guard removed_paths
H-003-12旧 validator 符号(PackConverter/PackManifest/PackEntity/PackEntityOperation/ValidateEntityDefinition/validateUIConfig/validateOperations符号已删除B-006H-003同上H-003model guard 符号扫描

H-004 旧注册 UI 扩展、页面 API 与 DTO

删除任务:H-004;Depends: B-001, H-002, H-003。整体 E2E 前置:guard 通过;SDK parity、服务集成与浏览器 E2E 不依赖旧接口;注册与运行路径只剩 FunctionContract、CapabilitySemantics、Proposal、PublishedPageSpec。

#清单项类型状态替代任务Owner删除前置条件(E2E)删除任务防回流证据
H-004-1proto/SDK 注册侧 UI 字段(category_displayentity_displayoperation_displayoperation_kindpage_hintx-labelsproto/SDK 字段已删除B-001H-004注册边界目标测试:携带任一 UI 字段返回结构化错误H-004vNext guard + model guard 双重扫描;internal/function/registrationguard/reject.go 拒绝逻辑
H-004-2functions 旧页面路由(:id 下的 uiui/historyui/rollback 子路径)API 路由已删除D-004H-004SDK parity + 服务集成 + 浏览器 E2E 不依赖旧接口H-004model guard「function form API must use /form routes」
H-004-3internal/api/functionFunctionUI* DTO/handlerDTO已删除D-004H-004同上H-004model guard「function API layer must expose FunctionForm types」
H-004-4旧 workspaces 配置后端路由(v1 API 下 workspaces 前缀)API 路由已删除D-003H-004同上H-004model guard「legacy workspace routes must not be referenced」
H-004-5/metadata/functions/import/openapi 快捷导入API 路由已删除C-007H-004同上H-004model guard「OpenAPI uploads must use OpenAPI Source APIs」
H-004-6web/src/services/api/users.tsweb/src/services/api/roles.ts前端 service已删除D-005H-004同上H-004model guard removed_paths + import 扫描
H-004-7provider /entities 旧 API(ProvidersEntities/openAPIDocEntities/aggregateEntities/x-entitiesAPI/DTO已删除C-002H-004同上H-004model guard「provider API must expose resources」
H-004-8C++ SDK VirtualObject/Component 注册 APISDK API已删除B-003H-004同上H-004model guard C++ SDK 符号扫描
H-004-9旧后端 FunctionForm API(BuildFallbackFormSchema/generateFormily/validateFormilyAPI已删除E-001H-004同上H-004vNext guard「legacy backend FunctionForm APIs absent」

H-005 旧页面表/列与历史数据

删除任务:H-005;Depends: H-004。整体前置:备份校验记录、迁移测试、全量 E2E、deployment dry-run,以及单独明确的生产数据删除确认。只能使用版本化清理函数通过 db.Migrator().DropColumn/DropTable 删除,禁止 AutoMigrate/raw SQL。

A-002 勘察结论:internal/model 当前仅保留 vNext 页面表 page_specspublished_page_specspage_versionsinternal/model/page_spec.go);database/schema.sql 中无 function_ui*workspace*page_schema* 遗留表定义。以下条目为 H-005 阶段的复核对象:

#清单项类型状态替代任务Owner删除前置条件(E2E)删除任务防回流证据
H-005-1生产库中可能残留的历史页面表(如旧 function_ui* 版本表)已删除D-001~D-006H-005备份校验 + 迁移测试 + 全量 E2E + deployment dry-run + 单独明确确认H-005CleanupLegacyPageTables 启动时自动清理
H-005-2现有表上的旧列(注册侧 UI 字段对应存储列,若存在)已删除B-001H-005同上H-005CleanupLegacyUIColumns 启动时自动清理
H-005-3旧页面/旧 UI 历史数据行数据已删除D-006H-005同上(生产数据删除必须单独确认)H-005DropTable 自动清除关联数据

Verify

本清单的 Verify(对应 todo.md A-002):

bash
# 1. 逐项自查:每项均有替代任务、owner、E2E 前置条件、删除任务(本文表格列)
# 2. guard 通过
bash scripts/dashboard_vnext_guard.sh