Files
QiufengandClaude Opus 4.8 5e51dc3f56 SNAPSHOT W7 已部署稳定态 — 凯迪ERP+OA一体化平台 (MET 73.3%)
恢复点(restore point)。别人改崩后可 git reset --hard 回到此提交。

== 此快照内容 ==
- 后端 oa-backend: 734 控制器 / 711 实体 (Spring Boot 3.2.5 + SQLite, 端口8091)
- 前端 modern-ui/app: Vue3+Vite, 约700页 (构建产物已在 oa-backend/src/main/resources/static)
- 数据库 oa-backend/data/oa.db: 含全部演示数据 (强制入库, 6.6MB)
- 交接文档 go.md + go-code-reference/endpoints/entities/database.md
- 多代理建设脚本 .claude/wf-*.js

== 状态 ==
- 对 凯迪科技ERP_20260507.xlsx 合规 MET ~73.3% (PARTIAL 75: 34可建+6种子/bug+35外部硬天花板)
- 安全: 5轮红队+5轮复检, default-deny分级鉴权, 连续零可利用
- W3~W7 累计补完436缺口; W8末轮(40缺口)为半成品(源码树可编译但未集成)
- 运行: cd oa-backend; java -jar build/libs/oa-backend-0.1.0.jar --server.port=8091; admin/123456

== 排除(gitignore, 可再生) ==
node_modules / oa-backend/build / .jdks / *.log / Backup-ERP-* / 弃用的OFBiz核心(只保留modern-ui)
完整文件夹备份见同目录 Backup-ERP-20260615-191517/ (含上述全部, 仅缺 node_modules)

时间戳: 20260615-191517

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 19:19:15 +08:00

7.3 KiB

OFBiz Modern UI Migration Status

Last refreshed: 2026-06-09

Current Gate

The modern frontend has structural route/page/action/form/table coverage for the scanned legacy OFBiz view surface. The business parity gate is still pending. Do not claim full parity.

coverageStatus=structural-passed-business-incomplete
frontendRewriteGate=passed
businessParityGate=pending
missingRoutes=0
missingActions=0
missingPageDefinitions=0
legacyViewRoutes=1772
routeManifest=1772
uniquePageDefinitions=1767
splitPageDefinitionFiles=1767
duplicateLegacyRouteAliases=5
requestActions=4099
actionDefinitions=7934
serviceDefinitions=3848
renderablePages=1767
structuredPages=1250
adapterCoveredPages=465
customParityPages=465
customVuePages=0
verifiedBusinessParityPages=46
pendingBusinessE2ePages=1721
highRiskPendingPages=876
runtimeSmokePagesInCurrentParityArtifact=4
runtimeSmokePassed=4
runtimeSmokeDomains=1
runtimeSmokeFlows=1
verificationScreenshotsPresent=112
unsupportedBlockTypeCount=0
browserRuntimeFallback=Chrome/CDP
browserRuntimeStatus=passed
browserRuntimeScreenshot=plugins/modern-ui/verification/browser-runtime-admin.png
browserPluginIabStatus=unavailable

What Is Implemented

Every generated page can enter this structural path:

legacy controller/widget/template metadata
  -> PageDefinition JSON
  -> /api/v1/pages/:pageId
  -> BusinessPageView
  -> ErpPageRenderer / ErpAdapterBlock
  -> Element Plus ERP wrappers/adapters

Implemented evidence from the current artifacts:

  • 1772 legacy view routes map to 1767 unique PageDefinitions.
  • 1767 split PageDefinition JSON files exist under webapp/modern/app/generated/pages.
  • The lightweight inventory index exposes counts, coverage, parity manifest, route manifest, and pageDefinitionUrl; full page payloads are fetched per page.
  • 7934 action definitions exist for 4099 scanned legacy request actions.
  • 1409 form blocks have explicit contracts.
  • 553 table blocks have data-source contracts: 505 entity-backed and 48 derived/report/history.
  • 1870 select/radio/drop-down fields have option contracts.
  • The renderer has no unsupported block type in the current parity artifact.

What Is Structurally Covered By Metadata Renderer

The generated renderer covers these block families by metadata and wrappers/adapters:

section: 2630
legacy-screen: 1767
actions: 1704
form: 1409
client-behavior: 1034
commerce-surface: 749
table: 553
permission: 234
links: 218
catalog-workspace: 191
finance-workspace: 173
menu: 163
communication-workspace: 115
report: 107
marketing-workspace: 84
manufacturing-workspace: 66
pos-workspace: 53
route-workspace: 51
search-workspace: 49
order-workspace: 34
profile-workspace: 32
entity-editor: 26
shipment-workspace: 26
tree-workspace: 25
order-entry-workspace: 20
entity-admin-workspace: 19
inventory-workspace: 18
cart-workspace: 17
calendar: 15
media-workspace: 14
lookup-workspace: 13
product-workspace: 10
chart-workspace: 9
survey-workspace: 8
quote-workspace: 8
request-workspace: 7

This is structural coverage. It means pages can be represented and rendered with a modern UI contract. It does not prove that every legacy side effect, report output, permission branch, or JavaScript behavior is business-equivalent.

What Is Custom Rebuilt

The production SPA includes custom Vue admin/workspace surfaces for the main administrator experience and high-use domains, including dashboard, login, module workspaces, domain admin pages, order, party, product/catalog, accounting, inventory/facility, manufacturing, human resources, sales, procurement, scrum, operations, content, marketing, commerce, POS, marketplace, analytics, system security/operations, and extensions.

These custom surfaces are developer-maintained Vue components under plugins/modern-ui/app/src/views and plugins/modern-ui/app/src/components/erp. They complement the generated PageDefinition renderer. The generated inventory still reports customVuePages=0 because generated PageDefinitions themselves do not point at per-page custom Vue components; adapterCoveredPages/customParityPages=465 marks generated pages whose old template/workspace behavior needs parity attention.

Current Runtime And Screenshot Evidence

Current visible evidence in this repo:

  • coverage-verification.json: generated 2026-06-09T06:25:25.455Z.
  • parity-verification.json: generated 2026-06-08T01:55:10.521Z.
  • Runtime smoke in the current parity artifact covers 4 Accounting pages and passes all 4.
  • Screenshot directory currently contains 112 PNG files. This is useful visual evidence, but not all 1767 generated pages.
  • Browser runtime verification currently passes through local Google Chrome + CDP against http://127.0.0.1:8080/modern/app/; report path is plugins/modern-ui/verification/browser-runtime-report.json and screenshot path is plugins/modern-ui/verification/browser-runtime-admin.png.
  • The Codex in-app browser path is currently unavailable: agent.browsers.get('iab') -> Browser is not available: iab. Treat that as a tooling limitation, not as evidence that Modern UI failed. Use Chrome/CDP and fail fast on concrete Chrome/base URL errors instead of retrying iab.

The earlier claim of a 64-page runtime smoke sample is not supported by the current parity-verification.json artifact in this checkout. Treat the 4-page smoke numbers above as the current reproducible artifact state until npm run verify:parity is rerun and the JSON is updated.

Remaining Work Before Functional Equivalence

pendingBusinessE2ePages=1721 is the completion blocker. The remaining pages need old-vs-new business E2E, especially the 876 high-risk pages involving payment, POS/cart, upload/import/export/PDF/print, finance state, shipment, return, report output, permission/session handling, or legacy JavaScript behavior.

Largest pending domains by page count:

Product / Catalog: 346
Accounting: 257
Order: 197
Party: 145
Content: 137
Ecommerce: 96
Human Resources: 87
WebTools: 79
Marketing: 74
Work Effort: 68
Scrum: 56
Project: 38

Verification Source Of Truth

Use these files for current claims:

plugins/modern-ui/verification/coverage-verification.json
plugins/modern-ui/verification/coverage-verification.md
plugins/modern-ui/verification/parity-verification.json
plugins/modern-ui/verification/parity-verification.md
plugins/modern-ui/webapp/modern/app/generated/ui-inventory.json
plugins/modern-ui/webapp/modern/app/generated/pages/*.json

Useful commands from plugins/modern-ui/app when code or generated assets change:

npm run build
npm run verify:coverage
npm run verify:preview
npm run verify:parity
npm run verify:browser-runtime

Do not rewrite these commands' meaning in delivery notes: coverage proves structural coverage, preview/browser checks prove representative runtime health, and parity remains pending until page-level business E2E is complete.

Acceptance gate to move businessParityGate from pending to passed:

pendingBusinessE2ePages=0
highRiskPendingPages=0
verifiedBusinessParityPages=1767
runtime smoke expanded beyond the current 4 Accounting pages across domains and scenario flows
old-vs-new authenticated E2E covers mutation, report/export/PDF/print, upload/import, POS/cart/payment, permission/session, validation, and state-transition behavior
Chrome/CDP browser-runtime report passes with screenshot evidence