6.8 KiB
6.8 KiB
TODO
目前狀態
html-transform scan 已從單純 prototype evidence,推進到可輸出 Page Implementation Contract 的第一版。
已完成:
- 強化 prototype form/table/action 萃取。
- 支援 legacy table-form 的
<th>/<td>欄位 label 推論。 - 欄位輸出包含
label、name、type、required、readonly、maxLength、options、defaultValue、sourceTable、sourceRow。 - action 會輸出
actionType與scope,例如search、save、edit、delete、print、back、formAction、rowAction。 - table 會輸出
role,例如searchTable、resultTable、detailTable、printTable、layoutTable。
- 支援 legacy table-form 的
- 解析
prototype/*.mdguide。- 保留
legacyJsp、legacyPb、targetView、description。 - 解析各 prototype 段落 checklist,寫入 route guide 與 page spec。
- 保留
- 解析 backend API 文件。
- 從
apps/backend/API.md解析 endpoint index。 - 從
apps/backend/API_Manual.md解析 method/path、request/response JSON、field rules、notes、ProblemDetails examples。 - 輸出
.ht/api-catalog.json。
- 從
- 建立 prototype-to-api matching。
- 依 prototype path/module、guide、title/text/actions 與 endpoint path/description tokens 做通用匹配。
- 不針對 Venue 寫死規則;Venue 只是目前驗證案例。
- 產出維護頁
maintenanceContract。- 輸出
pageKind、capabilities、recommendedTemplate、confidence、reasons、warnings、dataModel。 - 可初步分辨
maintenance、query、application、print、chooser、layout-reference。
- 輸出
- 更新
.ui-contract.md。- 加入 page kind、recommended template、capabilities、primary entity、target view、legacy source、prototype checklist、API endpoints。
- 補測試。
- 使用 generic
ordersdomain 測試 API catalog、API matching 與 maintenance template 推論,避免只驗證 Venue。
- 使用 generic
已驗證:
pnpm --filter html-transform test
pnpm --filter html-transform run typecheck
node packages/html-transform/src/cli.js scan
目前 Venue prototype 重新 scan 後的分類:
applications-list.html maintenance single-record
apply-choose.html chooser none
apply-facility.html application master-detail-c
apply-room-print.html print none
apply-room.html application master-detail-c
query-choose.html chooser none
query-facility.html query none
query-room.html query none
目標
讓 html-transform scan 產出的 .ht/ artifact 不只描述 prototype 畫面,也能結合 backend API 文件與維護頁範本規則,形成可穩定交給 LLM 生成 Vue/Vuetify 頁面的實作契約。
核心輸出:
- prototype 提供畫面結構、欄位文案、表格、按鈕與舊流程線索。
- backend API docs 提供 endpoint、request/response DTO、欄位規則、狀態碼與錯誤格式。
- template guide 或 maint README 提供專案層的頁面範本選擇規則。
.ht/app-map.json、.ht/api-catalog.json、.ht/spec/{page}.spec.json、.ht/spec/{page}.ui-contract.md說明頁面型態、資料模型、API 對應、建議範本與信心理由。
待辦
1. Layout Evidence
目前 scan evidence 可以找出頁面結構、labels、inputs、buttons、tables、screenshots 與 app-map hints。GEN-FE-PROMPT.md 的 UI 實作規則要求 feature page 使用現代 Vuetify 承載 prototype 的功能與資訊架構,不逐像素複刻舊 HTML/JSP,但仍要保留資訊密度、區塊順序、欄位行列對齊與主要操作流。
待補強:
- 擷取重要可見元素 bounding boxes:
- headings
- labels
- inputs/selects/textareas
- buttons/links
- tables
- section containers
- 用 bounding boxes 將表單欄位分群成可能的 rows / columns。
- 擷取 first-viewport density:
- visible section count
- visible form field count
- visible table/header count
- approximate occupied content area
- 在
.ht/spec/{page}.spec.json輸出:layoutEvidence.sectionslayoutEvidence.formRowslayoutEvidence.tableslayoutEvidence.primaryActionslayoutEvidence.firstViewport
- 在
.ht/spec/{page}.ui-contract.md呈現 layout hints。
Non-goals:
- 不要求 pixel-perfect HTML/JSP reproduction。
- 不複製 legacy CSS。
- 除非是功能辨識必要,不把精確 colors/fonts 編成硬限制。
2. API Matching 品質
目前 API matching 是通用 token scoring,已可用,但仍偏粗。
待補強:
- 降低同 module 但不同 page 的誤配風險。
- 把 guide 的
targetView、JSP/PB method、prototype path 與 endpoint path 做更細的權重拆分。 - 將 matched endpoints 分成用途:
lookupsearchdetailcreateupdatedeleteprintcustomAction
- 在
apiContract裡輸出 rejected candidates 與 rejection reason,方便檢查錯配。
3. Maintenance Contract 精準度
目前 maintenanceContract 已能初步推薦範本,但仍是 heuristic。
待補強:
- 加入 row action rule:
- 從 prototype checklist、button disabled、API notes 推論
enabledWhen。 - 例如
aprvYn === 'Z'才能 edit/delete。
- 從 prototype checklist、button disabled、API notes 推論
- 更精準拆出:
searchFieldsformFieldstableColumnsdetailCollectionsrowActions
- 將
recommendedTemplate與特定前端專案範本解耦。- 通用輸出保留
single-record、master-detail-c等抽象 template id。 - 專案若有自己的 README 或 guide,再由 prompt 對應到實際檔案。
- 通用輸出保留
- 加 validation warnings:
maintenance頁缺少 search/table/action。- 有
edit/deleteaction 但沒有對應 API endpoint。 - request schema 有欄位但 prototype 找不到對應欄位。
- prototype 有欄位但 API schema 找不到對應欄位。
- row action 有狀態限制但未產出
enabledWhen。
4. Backend Docs 通用性
目前 backend docs 預設讀 ./apps/backend,且 parser 針對 markdown heading、table、code fence 做通用解析。
待補強:
- 允許 config 指定多個 backend docs 來源。
- 支援 OpenAPI JSON/YAML 作為輸入來源。
- 支援沒有
API.mdindex、只有 manual 的情境。 - 支援不同語言的章節標籤,例如
Request body、Response body、Validation。
5. UI Contract Markdown
目前 .ui-contract.md 已加入主要 contract 摘要。
待補強:
- 輸出 field rules 與 schema 摘要。
- 輸出 row action rules。
- 輸出 layout evidence。
- 對
recommendedTemplate: none的頁面明確標示原因,例如 chooser/query/print/layout-reference。
6. 文件與範例
待補強:
- 加一個最小 fixture,示範非 Venue domain 如何產出 api catalog 與 maintenance contract。
- 在 README 補充 config 範例:
- 只指定
prototype - 同時指定
prototype與backendDocs - 沒有 backend docs 時的輸出行為
- 只指定