Initial commit: Add project files
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s

This commit is contained in:
2026-08-02 05:15:36 +09:00
commit dcd1322d41
636 changed files with 122352 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
{
"contractVersion": "crud-page.v1",
"stateOwners": {"server":"TanStack Query","form":"vee-validate + Zod","url":"vue-router","sessionAndUiPreference":"Pinia"},
"requiredRequestHeaders": ["Idempotency-Key for commands", "If-Match for updates where concurrency applies", "X-Correlation-Id"],
"requiredResponseMetadata": ["asOf", "projectionVersion", "stale", "watermark where applicable"],
"listQuery": ["page", "pageSize", "search", "sort[]", "filter[]"],
"failureStates": ["LOADING","EMPTY","WARN","ERROR","UNAUTHORIZED","FORBIDDEN","PARTIAL","DIRTY","CONFLICT","EXPIRED","READONLY","PROCESSING"],
"forbidden": ["server data duplicated in Pinia", "vendor grid state stored in domain feature", "silent overwrite after 409/412", "delete without reason and audit"]
}
+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "K-ArtSell CRUD Resource Contract v2",
"contractVersion": "2.0",
"required": [
"resourceId",
"querySchemaVersion",
"responseSchemaVersion",
"permissionPolicy",
"concurrencyMode",
"idempotencyMode",
"sensitiveFields"
],
"properties": {
"concurrencyMode": {
"enum": [
"NONE",
"ETAG_IF_MATCH"
]
},
"idempotencyMode": {
"enum": [
"NONE",
"IDEMPOTENCY_KEY"
]
},
"queryOwnership": {
"const": "VUE_ROUTER"
},
"serverStateOwnership": {
"const": "TANSTACK_QUERY"
},
"formOwnership": {
"const": "VEE_VALIDATE_ZOD"
}
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"contractVersion":"layout-regions.v1",
"regions":["Header","Summary","Filter","Main","SidePanel","ActionBar","AuditHelp"],
"rules":["one h1 per page","actions remain visible without covering content","evidence context is visible","responsive order follows task order","operation screens expose run status and watermark"]
}
+22
View File
@@ -0,0 +1,22 @@
{
"contractVersion": "2.0",
"templates": [
{ "id": "T01", "component": "SearchListCrudPage", "purpose": "search/list CRUD" },
{ "id": "T02", "component": "DetailReadPage", "purpose": "read-only detail with evidence" },
{ "id": "T03", "component": "EditFormPage", "purpose": "create/update form" },
{ "id": "T04", "component": "MasterDetailCrudPage", "purpose": "master-detail CRUD" },
{ "id": "T05", "component": "ApprovalWorkbenchPage", "purpose": "maker-checker review" },
{ "id": "T06", "component": "StepWizardPage", "purpose": "multi-step workflow" },
{ "id": "T07", "component": "ScorecardDashboardPage", "purpose": "dashboard and scorecard" },
{ "id": "T08", "component": "BatchOperationsPageV2", "purpose": "batch and data operations" },
{ "id": "T09", "component": "ReconciliationExceptionPage", "purpose": "reconciliation and correction" },
{ "id": "T10", "component": "VersionGovernancePage", "purpose": "version comparison and governance" }
],
"mandatoryCrossCutting": [
"loading/empty/warn/error/unauthorized/partial states",
"as-of and version evidence",
"permission boundary",
"correlation and audit link",
"responsive and keyboard operation"
]
}
+16
View File
@@ -0,0 +1,16 @@
{
"contractVersion": "2.0",
"requiredCapabilities": [
"button", "text-field", "text-area", "select", "checkbox",
"date-field", "number-field", "dialog", "status-tag", "data-grid"
],
"providers": [
{ "id": "primevue-aggrid", "productionEligible": true, "selection": "VITE_UI_ADAPTER=primevue" },
{ "id": "native-accessible", "productionEligible": false, "selection": "VITE_UI_ADAPTER=native" }
],
"featureImportRule": "Feature code imports only from @/shared/ui/components, @/shared/ui/layouts or @/shared/ui/screen-types.",
"replacementGate": [
"adapter contract tests", "accessibility keyboard tests", "visual regression",
"screen-state matrix", "large-list performance", "security review"
]
}
+12
View File
@@ -0,0 +1,12 @@
{
"contractVersion": "3.0",
"status": "CURRENT",
"principle": "Feature code depends on normalized K-ArtSell contracts, never vendor props or events.",
"requiredCapabilities": ["button","text-field","text-area","select","multi-select","checkbox","date-field","number-field","dialog","status-tag","inline-message","paginator","tabs","data-grid"],
"providers": [
{"id":"primevue-aggrid","productionEligible":true,"boundary":"frontend/src/shared/ui/adapter/primevue"},
{"id":"native-accessible","productionEligible":false,"purpose":"reference and contract conformance"}
],
"forbidden": ["vendor import outside provider", "pass-through of unreviewed vendor props", "vendor-specific state in feature store", "silent fallback when capability is missing"],
"acceptance": ["contract conformance", "keyboard and label tests", "T01-T10 state matrix", "server paging and sorting contract", "visual regression", "accessibility review"]
}
+46
View File
@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "K-ArtSell UI Adapter Contract v4",
"contractVersion": "4.0",
"status": "IMPLEMENTATION_TEMPLATE",
"requiredCapabilities": [
"button",
"text-field",
"text-area",
"select",
"multi-select",
"checkbox",
"date-field",
"number-field",
"dialog",
"status-tag",
"inline-message",
"paginator",
"tabs",
"data-grid"
],
"requiredEvidence": [
"contract-conformance",
"keyboard-focus",
"accessible-name",
"t01-t10-state-regression",
"provider-switch-smoke",
"visual-regression",
"performance-budget",
"rollback-rehearsal"
],
"rules": {
"featureVendorImports": 0,
"unknownCapability": "FAIL_FAST",
"unsupportedContract": "FAIL_FAST",
"providerSelection": "STARTUP_ONLY",
"mutableGlobalProviderSwitch": false,
"normalizedSemantics": [
"disabled",
"invalid",
"busy",
"aria-describedby",
"stable-events"
]
}
}