Skip to main content

Product capability map

Audience: schedulers and UI slice implementers. Answers one question: what backend/SQL can already do, what the UI exposes, and where the gaps are. Gap grading: missing (backend can do it, UI unreachable) · thin (entry exists but shallow/hard to find) · overbuilt (UI investment exceeds capability value) · ✅ (fully exposed—do not re-invest). Maintenance: reconcile this table at each iteration close; UI scheduling prioritizes eliminating missing, then thin; overbuilt—delete only, no additions.

Versions and audit (North Star direct)​

CapabilityAPI / SQLUI surfaceGap
Save version (snapshot)POST /hisProject/save (HisProjectController → db_change)Designer top bar "Save version" always visible ✅; example project notice card shortcut ✅✅
Version list + multi-tag filterPOST /dbChange paginated; db_change.tag (Flyway V1 column, V2 multi-tag relaxed)Designer version tab: antd List (W3 slice 2) + tag chips + filter + empty state "Save first version" ✅✅
Version diffCompareVersion / VersionDiffPanelVersion page row action ✅✅ (on-screen)
Cross-version diff exportSame diff data, File.save pipelineCompareVersion "Export" → Markdown change list (model changes + SQL) / SQL only ✅ (W3 slice 1)✅
Version revertRevertVersion → hisProject/load + saveVersion page row action "Revert" ✅✅
Version → datasource syncPOST /connector/dbsync / rebaseline / checkdbversion / updateVersionVersion page sync status tag + SyncConfig/InitVersion ✅✅
Version delete / rebuildhisProject/delete{,All}Version page, double confirm ✅✅

Share and spread​

CapabilityAPI / SQLUI surfaceGap
Read-only share createPOST /share/create (token anonymous read, ADR-0007)Designer top bar "Share" one-click copy ✅✅
Share revoke / link managementPOST /share/revokeDesigner top bar "Share" modal: create/copy/revoke ✅ (W2 slice 1)✅
Share → forkPOST /share/{token}/forkShare page fork + autofork ✅✅
Share invalid stateGET /share/{token}Invalid/revoked → AuthBrandShell "Share unavailable" + primary CTA "Open example demo" + "Back to home" ✅ (ADR-0016 brand aligned; W5 slice 2 capability retained)✅
Share read-only empty stateNo model / module 0 tablesShareEmptyState (ErdEmptyDiagram + primary CTA) ✅✅
Share success top barRead-only /s/:token64px erd-chrome-header + logo + project name + Fork CTA + login/register links ✅ (W5 slice 3)✅
404 / 403 pagesRoutes /* / 403.tsxAuthBrandShell + "Open example demo" + "Back to home" ✅ (ADR-0016 brand aligned; W5 slice 1 capability retained)✅
Login/register brand shell/login /registerLeft 40% dark brand panel + right Form; --erd-*; no bg2/#1677FF ✅ (W5 slice 4)✅
Landing palette/Dark facade layout unchanged; less reads --erd-* only; below-fold/comparison secondary density ✅ (2026-08-03)✅
Competitor comparison/compare (landing summary #compare)Honest comparison table + demo/self-host CTAs; shared LandingChrome shell; secondary density ✅✅

Collaboration​

CapabilityAPI / SQLUI surfaceGap
presence + incremental syncWsController / SocketIO (ADR-0009)Designer top bar CollabPresence ✅; remote sync toast shortcut to "Save version" ✅✅
Team/permission three tiersGroupProject / *Privilege seriesproject/group subpages ✅thin (straighten during W4 migration)

Data in/out​

CapabilityAPI / SQLUI surfaceGap
Reverse parse (four DBs)POST /connector/dbReverseParse / dbReverseMeta (ADR-0006)Designer import tab ✅; edge chip shows constraint name/ON DELETE ✅✅ (composite FK fields[] still deferred ADR-0011; constraintName/deleteRule/updateRule ✅)
DDL exportPOST /projectDdl/export (ProjectDdlController → Freemarker); single table POST /projectDdl/table; template preview POST /projectDdl/previewTemplate (ADR-0031)Designer export tab; table properties DDL tab; DDL template modal preview ✅✅
Word doc exportPOST /doc/gendocx (classpath template + MinIO absent fallback ✅)In export flow ✅✅
Datasource managementDataSourcesController + connector/pingdatabaseConfig page (status/ping/batch delete) ✅thin (W4 ProTable migration)

Approval and SQL trust chain​

CapabilityAPI / SQLUI surfaceGap
Ticket submit/approveApprovalController CRUD; pass requires SQL success before persist/sync (✅ fixed)Designer version page: unsynced row "Submit ticket" → detail "SQL approval"; toolbar/sidebar "My tickets" / "My approvals" shortcuts ✅ (W3 slice 3)✅
Online SQL (read-only whitelist)POST /connector/sqlexec (jsqlparser, SELECT/EXPLAIN/SHOW/DESC only)UI experiment page removed (W2); backend API kept for version approval SQLoverbuilt trimmed: control-matrix 📋 deferred; no query console this phase

Data dictionary / governance​

CapabilityAPI / SQLUI surfaceGap
Field library (data_dict)DataDictController CRUD + /dataDict/tree + POST /dataDict/{id}/applyProject menu "Settings → Field library"; table design "Insert from field library" Modal (incl. manage deep link); canvas toolbar Drawer; settings /setting/fieldLibrary✅ MVP (ADR-0032); no MCP write
Data type dictionary (dataTypeDomains)Project JSON dataTypeDomains (logical types / enums / apply dialect)Project menu "Settings → Data type dictionary"; settings /setting/dataType; DDL template modal✅ menu reachable

Dead shells and overbuild (delete only, no additions)​

ObjectStatusAction
pages/design/query, pages/dataQueryExperiment deferredW2 slice 2: sources + QueryLeftContent/dialog/query/useQueryStore deleted; route 404
pages/design/chatsqlADR-0012 says no marketing wrapperW2 slice 2: sources deleted; @chatui/core removed
pages/design/dataDomainExperiment deferredW2 slice 2: sources deleted; route 404
pages/design/test, pages/testDemo/test residueW2 slice 1: deleted (pages/JExcel is table edit component, kept)
Home components/Radar/, _mock.ts, fakeChartData, unrendered Pie, duplicate "Project overview", slogan rotationDead codeW2 slice 2: deleted; @ant-design/charts removed
account/settings/geographic (province/city json)No backend fieldW2 slice 1: deleted
plaza/Material* backend controllersZero frontend refs✅ deleted (2026-08-02; Java/XML/MapperScan; tables untouched)
dialog/import/ReversePDM ("under heavy development")Zero menu refs✅ deleted (2026-08-02)
pages/design/import/index.tsx empty shellRoute not referenced✅ deleted; component/* still serves sider deep links—do not delete whole directory

North Star alignment conclusion​

UI gaps directly serving "weekly version saves": share revoke/manage ✅ (W2 slice 1); designer chrome left tree dedup + canvas space reclaimed ✅ (W2 slice 3); designer calc(100vh) zeroed (tree/version flex) ✅ (W2 slice 4); cross-version diff export ✅ (W3 slice 1); version ProList→List + empty CTA ✅ (W3 slice 2); approval/ticket entry straightened ✅ (W3 slice 3). W5 share top bar ✅ (slice 3); login/register brand shell ✅ (slice 4).