Files
KArtSell.Aegis/docs/Design/kbx-foundation-v36/generated/screen-recipe-manifest.json
T

609 lines
14 KiB
JSON

{
"schemaVersion": 1,
"contractVersion": "1.1.0",
"sourceSha256": "97ab56bc54149f32ea16577369c4ec29579b516ea464cb42010b31e4dc413e60",
"recipes": [
{
"code": "T01",
"type": "list",
"templateComponent": "KbxListPage",
"defaultCommands": [
{
"id": "search",
"label": "조회",
"group": "query",
"shortcut": "F3",
"permissionKind": "none"
},
{
"id": "excel",
"label": "엑셀",
"group": "output",
"permissionKind": "none"
}
],
"requiredPolicies": [
"server-read-model",
"tanstack-query",
"search-condition-preservation",
"server-side-bulk-selection"
],
"recoveryPolicies": [
"idle-before-first-search",
"retain-grid-during-refresh",
"retry-with-search-context",
"partial-bulk-result"
],
"securityPolicies": [
"screen-permission",
"command-permission",
"safe-drilldown-route",
"masked-sensitive-cells"
],
"canonicalScenarioIds": [
"scenario.oms.order-list.bulk-ship",
"scenario.oms.order-list.all-filtered-ship"
],
"scaffoldSurfaces": [
"search",
"content",
"summary"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e"
],
"requiredTags": [
"bulk",
"idempotency"
],
"requiredEvidence": [
"playwright-trace"
],
"requiredChecks": [
"idle-search",
"refresh-retains-context",
"bulk-partial-result",
"safe-drilldown"
]
}
},
{
"code": "T02",
"type": "master",
"templateComponent": "KbxMasterPage",
"defaultCommands": [
{
"id": "search",
"label": "조회",
"group": "query",
"shortcut": "F3",
"permissionKind": "none"
},
{
"id": "new",
"label": "신규",
"group": "edit",
"permissionKind": "write"
},
{
"id": "save",
"label": "저장",
"group": "edit",
"shortcut": "F8",
"variant": "primary",
"permissionKind": "write"
},
{
"id": "excel",
"label": "엑셀",
"group": "output",
"permissionKind": "none"
}
],
"requiredPolicies": [
"normalized-write-model",
"lookup-provider",
"server-validation",
"optimistic-concurrency",
"audit"
],
"recoveryPolicies": [
"dirty-navigation-guard",
"conflict-reload",
"field-validation-focus",
"readonly-after-terminal-state"
],
"securityPolicies": [
"screen-permission",
"write-command-permission",
"server-enforcement",
"sensitive-value-masking"
],
"canonicalScenarioIds": [
"scenario.erp.item-master.lifecycle",
"scenario.erp.item-master.keyboard-recovery"
],
"scaffoldSurfaces": [
"list",
"detail"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e",
"integration"
],
"requiredTags": [
"master-crud",
"concurrency",
"audit"
],
"requiredEvidence": [
"playwright-trace",
"db-assertions"
],
"requiredChecks": [
"permission-aware-save",
"dirty-guard",
"conflict-reload",
"audit-visible"
]
}
},
{
"code": "T03",
"type": "transaction",
"templateComponent": "KbxTransactionPage",
"defaultCommands": [
{
"id": "new",
"label": "신규",
"group": "edit",
"permissionKind": "write"
},
{
"id": "save",
"label": "저장",
"group": "edit",
"shortcut": "F8",
"variant": "primary",
"permissionKind": "write"
},
{
"id": "excel",
"label": "엑셀",
"group": "output",
"permissionKind": "none"
}
],
"requiredPolicies": [
"normalized-write-model",
"header-detail-transaction",
"server-validation",
"optimistic-concurrency",
"audit",
"outbox"
],
"recoveryPolicies": [
"dirty-navigation-guard",
"conflict-reload",
"row-key-validation",
"double-submit-guard"
],
"securityPolicies": [
"screen-permission",
"write-command-permission",
"workflow-permission",
"server-enforcement"
],
"canonicalScenarioIds": [
"scenario.oms.order-register.keyboard",
"scenario.oms.order-register.conflict",
"scenario.oms.order-register.lifecycle"
],
"scaffoldSurfaces": [
"header",
"detail",
"summary"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e",
"integration"
],
"requiredTags": [
"keyboard",
"lookup",
"conflict",
"workflow"
],
"requiredEvidence": [
"playwright-trace",
"problem-json"
],
"requiredChecks": [
"f2-lookup",
"f8-save",
"row-key-validation",
"conflict-recovery"
]
}
},
{
"code": "T04",
"type": "fast-entry",
"templateComponent": "KbxFastEntryPage",
"defaultCommands": [
{
"id": "new",
"label": "신규",
"group": "edit",
"permissionKind": "write"
},
{
"id": "save",
"label": "저장",
"group": "edit",
"shortcut": "F8",
"variant": "primary",
"permissionKind": "write"
},
{
"id": "excel",
"label": "엑셀",
"group": "output",
"permissionKind": "none"
}
],
"requiredPolicies": [
"typed-clipboard-normalization",
"stable-client-row-key",
"bulk-server-validation",
"idempotent-bulk-save"
],
"recoveryPolicies": [
"error-cell-navigation",
"paste-error-summary",
"dirty-navigation-guard",
"partial-save-result"
],
"securityPolicies": [
"screen-permission",
"write-command-permission",
"lookup-entity-resolution",
"server-enforcement"
],
"canonicalScenarioIds": [
"scenario.erp.item-price.fast-entry",
"scenario.oms.order-register.fast-entry"
],
"scaffoldSurfaces": [
"guide",
"content",
"validation",
"summary"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e"
],
"requiredTags": [
"fast-entry",
"paste",
"fill-down",
"idempotency"
],
"requiredEvidence": [
"playwright-trace",
"problem-json"
],
"requiredChecks": [
"multi-cell-paste",
"fill-down",
"error-navigation",
"partial-save-result"
]
}
},
{
"code": "T05",
"type": "master-detail",
"templateComponent": "KbxMasterDetailPage",
"defaultCommands": [
{
"id": "search",
"label": "조회",
"group": "query",
"shortcut": "F3",
"permissionKind": "none"
},
{
"id": "excel",
"label": "엑셀",
"group": "output",
"permissionKind": "none"
}
],
"requiredPolicies": [
"server-read-model",
"master-selection-context",
"detail-projection",
"n-plus-one-prohibition"
],
"recoveryPolicies": [
"selection-restore-after-refresh",
"retain-master-on-detail-error",
"safe-drilldown",
"empty-master-detail-reset"
],
"securityPolicies": [
"screen-permission",
"safe-drilldown-route",
"masked-sensitive-detail"
],
"canonicalScenarioIds": [
"scenario.erp.inventory.master-detail-context"
],
"scaffoldSurfaces": [
"search",
"master",
"detail"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e"
],
"requiredTags": [
"master-detail",
"context-retention",
"drill-down"
],
"requiredEvidence": [
"playwright-trace",
"api-transcript"
],
"requiredChecks": [
"master-selection-context",
"detail-error-retains-master",
"history-context",
"safe-drilldown"
]
}
},
{
"code": "T06",
"type": "queue",
"templateComponent": "KbxQueuePage",
"defaultCommands": [
{
"id": "search",
"label": "조회",
"group": "query",
"shortcut": "F3",
"permissionKind": "none"
}
],
"requiredPolicies": [
"exception-first-projection",
"sla-state",
"server-side-bulk-selection",
"audit"
],
"recoveryPolicies": [
"partial-action-result",
"retryable-vs-terminal-error",
"stale-event-suppression",
"detail-context-retention"
],
"securityPolicies": [
"screen-permission",
"exception-action-permission",
"server-enforcement"
],
"canonicalScenarioIds": [
"scenario.common.operations.stale-event",
"scenario.integration.manual-retry.idempotent",
"scenario.common.operations.queue-recovery"
],
"scaffoldSurfaces": [
"summary",
"exceptions",
"content"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e",
"integration"
],
"requiredTags": [
"exception",
"recovery",
"context-retention"
],
"requiredEvidence": [
"playwright-trace",
"db-assertions"
],
"requiredChecks": [
"exception-first",
"detail-context-retention",
"retryable-vs-terminal",
"partial-action-result"
]
}
},
{
"code": "T07",
"type": "reconcile",
"templateComponent": "KbxReconcilePage",
"defaultCommands": [
{
"id": "search",
"label": "조회",
"group": "query",
"shortcut": "F3",
"permissionKind": "none"
}
],
"requiredPolicies": [
"expected-actual-difference-projection",
"reason-code",
"resolution-state",
"audit"
],
"recoveryPolicies": [
"grace-period-before-mismatch",
"mismatch-only-filter",
"resolution-retry",
"retain-comparison-context"
],
"securityPolicies": [
"screen-permission",
"resolution-permission",
"server-enforcement"
],
"canonicalScenarioIds": [
"scenario.common.reconcile.grace-period",
"scenario.common.reconcile.mismatch-recovery"
],
"scaffoldSurfaces": [
"search",
"content",
"resolution"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e",
"integration"
],
"requiredTags": [
"reconcile",
"mismatch-filter",
"eventual-consistency"
],
"requiredEvidence": [
"playwright-trace",
"db-assertions"
],
"requiredChecks": [
"mismatch-only-filter",
"grace-period",
"resolution-retry",
"comparison-context"
]
}
},
{
"code": "T08",
"type": "import",
"templateComponent": "KbxImportPage",
"defaultCommands": [],
"requiredPolicies": [
"staging-before-domain-write",
"mapping-source-traceability",
"background-job-threshold",
"idempotent-commit",
"audit"
],
"recoveryPolicies": [
"session-mapping-isolation",
"validation-error-download",
"partial-commit-result",
"job-refresh-recovery"
],
"securityPolicies": [
"screen-permission",
"file-preflight",
"commit-permission",
"server-validation",
"sensitive-column-policy"
],
"canonicalScenarioIds": [
"scenario.oms.order-import.partial"
],
"scaffoldSurfaces": [
"steps",
"content",
"result"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e"
],
"requiredTags": [
"excel",
"mapping",
"staging",
"partial-success",
"job"
],
"requiredEvidence": [
"playwright-trace",
"problem-json"
],
"requiredChecks": [
"mapping-isolation",
"validation-download",
"commit-confirm",
"job-refresh-recovery"
]
}
},
{
"code": "T09",
"type": "wms-mobile",
"templateComponent": "KbxWmsMobilePage",
"defaultCommands": [],
"requiredPolicies": [
"barcode-normalization",
"server-validation-before-success",
"idempotent-scan-command",
"network-state",
"offline-command-policy"
],
"recoveryPolicies": [
"duplicate-scan-debounce",
"response-loss-replay",
"wrong-item-no-retry",
"pending-command-visibility"
],
"securityPolicies": [
"screen-permission",
"execute-permission",
"server-enforcement",
"offline-command-allowlist"
],
"canonicalScenarioIds": [
"scenario.wms.picking.idempotent-replay",
"scenario.wms.picking.wrong-item"
],
"scaffoldSurfaces": [
"context",
"content",
"actions"
],
"testProfile": {
"requiredScenarioKinds": [
"e2e"
],
"requiredTags": [
"scanner",
"idempotency",
"network",
"retry-policy"
],
"requiredEvidence": [
"playwright-trace",
"api-transcript"
],
"requiredChecks": [
"scan-normalization",
"server-before-success",
"response-loss-replay",
"wrong-item-no-retry"
]
}
}
]
}