@shanyucoder/flowgrid 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +194 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationContext.cs +56 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationGen.csproj +16 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/NameUtil.cs +18 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Program.cs +265 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/application_service.cs.scriban +27 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/handoff.md.scriban +15 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/infrastructure_mock.cs.scriban +20 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/presenter.cs.scriban +41 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/service_test.cs.scriban +17 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/YamlMap.cs +49 -0
- package/adapters/dotnet-integration/registries/dotnet-integration.codegen.registry.json +8 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/LineContext.cs +43 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/LineGen.csproj +16 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/NameUtil.cs +12 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Program.cs +201 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/TemplateRenderer.cs +22 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/handoff.md.scriban +15 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service.cs.scriban +21 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service_interface.cs.scriban +20 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model.cs.scriban +28 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model_test.cs.scriban +22 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/YamlMap.cs +49 -0
- package/adapters/dotnet-line/registries/dotnet-line.codegen.registry.json +8 -0
- package/adapters/fastapi/codegen/runners/fast_gen/__init__.py +1 -0
- package/adapters/fastapi/codegen/runners/fast_gen/__main__.py +3 -0
- package/adapters/fastapi/codegen/runners/fast_gen/cli.py +175 -0
- package/adapters/fastapi/codegen/runners/fast_gen/plan.py +285 -0
- package/adapters/fastapi/codegen/runners/fast_gen/read_spec.py +34 -0
- package/adapters/fastapi/codegen/runners/fast_gen/registry.py +9 -0
- package/adapters/fastapi/codegen/runners/fast_gen/wire.py +28 -0
- package/adapters/fastapi/codegen/runners/fast_gen/write_files.py +232 -0
- package/adapters/fastapi/codegen/runners/generate +5 -0
- package/adapters/fastapi/codegen/runners/validate-registry.mjs +54 -0
- package/adapters/fastapi/codegen/templates/presenter.py.j2 +11 -0
- package/adapters/fastapi/codegen/templates/router.py.j2 +69 -0
- package/adapters/fastapi/codegen/templates/schemas_request.py.j2 +26 -0
- package/adapters/fastapi/codegen/templates/schemas_response.py.j2 +7 -0
- package/adapters/fastapi/codegen/templates/service_create.py.j2 +10 -0
- package/adapters/fastapi/codegen/templates/service_delete.py.j2 +10 -0
- package/adapters/fastapi/codegen/templates/service_search.py.j2 +9 -0
- package/adapters/fastapi/codegen/templates/service_update.py.j2 +11 -0
- package/adapters/fastapi/codegen/templates/store.py.j2 +1 -0
- package/adapters/fastapi/codegen/templates/test_router.py.j2 +13 -0
- package/adapters/fastapi/registries/codegen.registry.json +47 -0
- package/adapters/fastapi/registries/common.registry.json +23 -0
- package/adapters/fastapi/registries/unit-test.registry.json +12 -0
- package/adapters/fastapi/unitgen/runners/fast_unit_gen/__init__.py +1 -0
- package/adapters/fastapi/unitgen/runners/fast_unit_gen/cli.py +188 -0
- package/adapters/fastapi/unitgen/runners/generate +5 -0
- package/adapters/fastapi/unitgen/runners/validate-registry.mjs +48 -0
- package/adapters/fastapi/unitgen/templates/test_service.py.j2 +12 -0
- package/adapters/laravel/codegen/runners/README.md +45 -0
- package/adapters/laravel/codegen/runners/generate.mjs +296 -0
- package/adapters/laravel/codegen/runners/lib/codegen-registry.mjs +60 -0
- package/adapters/laravel/codegen/runners/lib/detect-existing.mjs +84 -0
- package/adapters/laravel/codegen/runners/lib/exec-artisan.mjs +86 -0
- package/adapters/laravel/codegen/runners/lib/parse-tags.mjs +49 -0
- package/adapters/laravel/codegen/runners/lib/plan.mjs +122 -0
- package/adapters/laravel/codegen/runners/lib/read-spec.mjs +30 -0
- package/adapters/laravel/codegen/runners/lib/resolve-commands.mjs +234 -0
- package/adapters/laravel/codegen/runners/lib/stub-services.mjs +91 -0
- package/adapters/laravel/codegen/runners/lib/tag-plan.mjs +155 -0
- package/adapters/laravel/codegen/runners/lib/validate.mjs +77 -0
- package/adapters/laravel/codegen/runners/lib/workspace-analysis.mjs +202 -0
- package/adapters/laravel/codegen/runners/lib/write-handoff.mjs +149 -0
- package/adapters/laravel/codegen/runners/lib/write-manifest.mjs +81 -0
- package/adapters/laravel/codegen/runners/validate-registry.mjs +52 -0
- package/adapters/laravel/php/README.md +26 -0
- package/adapters/laravel/php/bin/unit-gen.php +307 -0
- package/adapters/laravel/php/bin/validate-registry.php +61 -0
- package/adapters/laravel/php/composer.json +16 -0
- package/adapters/laravel/php/src/ArtisanRunner.php +56 -0
- package/adapters/laravel/php/src/Autoload.php +15 -0
- package/adapters/laravel/php/src/CodegenManifest.php +28 -0
- package/adapters/laravel/php/src/ParseTags.php +62 -0
- package/adapters/laravel/php/src/ProjectResolver.php +100 -0
- package/adapters/laravel/php/src/SpecExtract.php +193 -0
- package/adapters/laravel/php/src/SpecReader.php +57 -0
- package/adapters/laravel/php/src/TemplateRenderer.php +134 -0
- package/adapters/laravel/php/src/UnitPlanner.php +396 -0
- package/adapters/laravel/php/src/UnitRegistry.php +100 -0
- package/adapters/laravel/php/src/WhenEval.php +111 -0
- package/adapters/laravel/php/src/WorkspaceInspector.php +240 -0
- package/adapters/laravel/php/src/WriteFiles.php +194 -0
- package/adapters/laravel/php/templates/actions/relationship-sync.behavior.test.php.stub +50 -0
- package/adapters/laravel/php/templates/controllers/controller-invoke.test.php.stub +34 -0
- package/adapters/laravel/php/templates/queries/chain-scope.behavior.test.php.stub +34 -0
- package/adapters/laravel/php/templates/requests/default-per-page.behavior.test.php.stub +19 -0
- package/adapters/laravel/php/templates/requests/request-enriched.test.php.stub +66 -0
- package/adapters/laravel/php/templates/requests/rules-keys.behavior.test.php.stub +19 -0
- package/adapters/laravel/php/templates/resources/nested-relations.behavior.test.php.stub +25 -0
- package/adapters/laravel/php/templates/resources/openapi-shape.behavior.test.php.stub +28 -0
- package/adapters/laravel/php/templates/support/ModuleTestSupport.php.stub +32 -0
- package/adapters/laravel/registries/codegen.registry.json +190 -0
- package/adapters/laravel/registries/unit-test.registry.json +179 -0
- package/adapters/laravel/shared/project.mjs +62 -0
- package/adapters/nestjs/README.md +16 -0
- package/adapters/nestjs/nest-unitgen/runners/README.md +17 -0
- package/adapters/nestjs/nest-unitgen/runners/generate.mjs +113 -0
- package/adapters/nestjs/nest-unitgen/runners/lib/render.mjs +14 -0
- package/adapters/nestjs/nest-unitgen/runners/lib/write-files.mjs +40 -0
- package/adapters/nestjs/nest-unitgen/runners/validate-registry.mjs +35 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/create.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/delete.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/update.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/handlers/search.handler.spec.ts.hbs +33 -0
- package/adapters/nestjs/nest-unitgen/templates/resource/entity.resource.spec.ts.hbs +22 -0
- package/adapters/nestjs/nestgen/runners/README.md +30 -0
- package/adapters/nestjs/nestgen/runners/generate.mjs +87 -0
- package/adapters/nestjs/nestgen/runners/lib/orm-fields.mjs +253 -0
- package/adapters/nestjs/nestgen/runners/lib/plan.mjs +124 -0
- package/adapters/nestjs/nestgen/runners/lib/read-spec.mjs +52 -0
- package/adapters/nestjs/nestgen/runners/lib/render.mjs +52 -0
- package/adapters/nestjs/nestgen/runners/lib/workspace-analysis.mjs +80 -0
- package/adapters/nestjs/nestgen/runners/lib/write-files.mjs +49 -0
- package/adapters/nestjs/nestgen/runners/validate-registry.mjs +36 -0
- package/adapters/nestjs/nestgen/templates/commands/create.command.ts.hbs +3 -0
- package/adapters/nestjs/nestgen/templates/commands/create.handler.ts.hbs +34 -0
- package/adapters/nestjs/nestgen/templates/commands/delete.command.ts.hbs +3 -0
- package/adapters/nestjs/nestgen/templates/commands/delete.handler.ts.hbs +33 -0
- package/adapters/nestjs/nestgen/templates/commands/update.command.ts.hbs +6 -0
- package/adapters/nestjs/nestgen/templates/commands/update.handler.ts.hbs +34 -0
- package/adapters/nestjs/nestgen/templates/entity.controller.ts.hbs +51 -0
- package/adapters/nestjs/nestgen/templates/entity.resource.ts.hbs +45 -0
- package/adapters/nestjs/nestgen/templates/module.module.ts.hbs +38 -0
- package/adapters/nestjs/nestgen/templates/orm/prisma.entity.ts.hbs +10 -0
- package/adapters/nestjs/nestgen/templates/orm/prisma.model.prisma.hbs +9 -0
- package/adapters/nestjs/nestgen/templates/orm/typeorm.entity.ts.hbs +20 -0
- package/adapters/nestjs/nestgen/templates/queries/search.handler.ts.hbs +36 -0
- package/adapters/nestjs/nestgen/templates/queries/search.query.ts.hbs +3 -0
- package/adapters/nestjs/registries/nest-codegen.registry.json +41 -0
- package/adapters/nestjs/registries/nest-unit-test.registry.json +31 -0
- package/adapters/nextjs/codegen/runners/README.md +68 -0
- package/adapters/nextjs/codegen/runners/generate.mjs +236 -0
- package/adapters/nextjs/codegen/runners/lib/component-resolve.mjs +79 -0
- package/adapters/nextjs/codegen/runners/lib/design-registry.mjs +333 -0
- package/adapters/nextjs/codegen/runners/lib/naming.mjs +236 -0
- package/adapters/nextjs/codegen/runners/lib/page-lifecycle.mjs +258 -0
- package/adapters/nextjs/codegen/runners/lib/plan.mjs +399 -0
- package/adapters/nextjs/codegen/runners/lib/read-spec.mjs +7 -0
- package/adapters/nextjs/codegen/runners/lib/render.mjs +47 -0
- package/adapters/nextjs/codegen/runners/lib/resolve-hub-id.mjs +288 -0
- package/adapters/nextjs/codegen/runners/lib/slots.mjs +121 -0
- package/adapters/nextjs/codegen/runners/lib/web-paths.mjs +64 -0
- package/adapters/nextjs/codegen/runners/lib/write-files.mjs +106 -0
- package/adapters/nextjs/codegen/runners/validate-registry.mjs +99 -0
- package/adapters/nextjs/codegen/templates/common/confirm-dialog.hbs +81 -0
- package/adapters/nextjs/codegen/templates/common/delete-flow.hbs +106 -0
- package/adapters/nextjs/codegen/templates/create/form.tsx.hbs +45 -0
- package/adapters/nextjs/codegen/templates/create/mock.ts.hbs +15 -0
- package/adapters/nextjs/codegen/templates/create/page.tsx.hbs +12 -0
- package/adapters/nextjs/codegen/templates/create/service.ts.hbs +25 -0
- package/adapters/nextjs/codegen/templates/create/useForm.ts.hbs +59 -0
- package/adapters/nextjs/codegen/templates/create/validation.ts.hbs +16 -0
- package/adapters/nextjs/codegen/templates/list/mock.ts.hbs +25 -0
- package/adapters/nextjs/codegen/templates/list/page.custom.tsx.hbs +65 -0
- package/adapters/nextjs/codegen/templates/list/page.tsx.hbs +37 -0
- package/adapters/nextjs/codegen/templates/list/service.ts.hbs +37 -0
- package/adapters/nextjs/codegen/templates/list/useList.ts.hbs +93 -0
- package/adapters/nextjs/codegen/templates/list/useListColumns.ts.hbs +27 -0
- package/adapters/nextjs/codegen/templates/list/useListExport.ts.hbs +31 -0
- package/adapters/nextjs/codegen/templates/list/useListFilters.ts.hbs +50 -0
- package/adapters/nextjs/codegen/templates/store/store.ts.hbs +28 -0
- package/adapters/nextjs/contractgen/runners/README.md +47 -0
- package/adapters/nextjs/contractgen/runners/generate.mjs +108 -0
- package/adapters/nextjs/contractgen/runners/lib/field-zod.mjs +83 -0
- package/adapters/nextjs/contractgen/runners/lib/naming.mjs +46 -0
- package/adapters/nextjs/contractgen/runners/lib/plan.mjs +147 -0
- package/adapters/nextjs/contractgen/runners/lib/render.mjs +57 -0
- package/adapters/nextjs/contractgen/runners/lib/write-files.mjs +54 -0
- package/adapters/nextjs/contractgen/runners/validate-registry.mjs +54 -0
- package/adapters/nextjs/contractgen/templates/index.ts.hbs +8 -0
- package/adapters/nextjs/contractgen/templates/read.schema.ts.hbs +22 -0
- package/adapters/nextjs/contractgen/templates/relationships.meta.ts.hbs +23 -0
- package/adapters/nextjs/contractgen/templates/types.ts.hbs +15 -0
- package/adapters/nextjs/contractgen/templates/write.schema.ts.hbs +11 -0
- package/adapters/nextjs/registries/contract-field.registry.json +22 -0
- package/adapters/nextjs/unitgen/runners/README.md +12 -0
- package/adapters/nextjs/unitgen/runners/generate.mjs +201 -0
- package/adapters/nextjs/unitgen/runners/lib/parse-tags.mjs +67 -0
- package/adapters/nextjs/unitgen/runners/lib/plan.mjs +563 -0
- package/adapters/nextjs/unitgen/runners/lib/read-codegen.mjs +42 -0
- package/adapters/nextjs/unitgen/runners/lib/render.mjs +32 -0
- package/adapters/nextjs/unitgen/runners/lib/resolve-model.mjs +28 -0
- package/adapters/nextjs/unitgen/runners/lib/unit-registry.mjs +52 -0
- package/adapters/nextjs/unitgen/runners/lib/write-files.mjs +103 -0
- package/adapters/nextjs/unitgen/runners/lib/write-spec-tags.mjs +37 -0
- package/adapters/nextjs/unitgen/runners/validate-registry.mjs +74 -0
- package/adapters/nextjs/unitgen/templates/hooks/use-form.test.ts.hbs +51 -0
- package/adapters/nextjs/unitgen/templates/hooks/use-list.test.ts.hbs +63 -0
- package/adapters/nextjs/unitgen/templates/models/schema.test.ts.hbs +24 -0
- package/adapters/nextjs/unitgen/templates/services/service.create.test.ts.hbs +28 -0
- package/adapters/nextjs/unitgen/templates/services/service.export.test.ts.hbs +20 -0
- package/adapters/nextjs/unitgen/templates/services/service.search.test.ts.hbs +25 -0
- package/adapters/nextjs/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
- package/adapters/nextjs/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
- package/adapters/nuxt4/codegen/runners/README.md +83 -0
- package/adapters/nuxt4/codegen/runners/generate.mjs +236 -0
- package/adapters/nuxt4/codegen/runners/lib/component-resolve.mjs +66 -0
- package/adapters/nuxt4/codegen/runners/lib/design-registry.mjs +332 -0
- package/adapters/nuxt4/codegen/runners/lib/naming.mjs +246 -0
- package/adapters/nuxt4/codegen/runners/lib/page-lifecycle.mjs +254 -0
- package/adapters/nuxt4/codegen/runners/lib/plan.mjs +370 -0
- package/adapters/nuxt4/codegen/runners/lib/read-spec.mjs +7 -0
- package/adapters/nuxt4/codegen/runners/lib/render.mjs +47 -0
- package/adapters/nuxt4/codegen/runners/lib/resolve-hub-id.mjs +288 -0
- package/adapters/nuxt4/codegen/runners/lib/slots.mjs +121 -0
- package/adapters/nuxt4/codegen/runners/lib/write-files.mjs +106 -0
- package/adapters/nuxt4/codegen/runners/validate-registry.mjs +121 -0
- package/adapters/nuxt4/codegen/templates/create/form.vue.hbs +26 -0
- package/adapters/nuxt4/codegen/templates/create/mock.ts.hbs +11 -0
- package/adapters/nuxt4/codegen/templates/create/model.schema.ts.hbs +14 -0
- package/adapters/nuxt4/codegen/templates/create/model.types.ts.hbs +9 -0
- package/adapters/nuxt4/codegen/templates/create/page.vue.hbs +11 -0
- package/adapters/nuxt4/codegen/templates/create/service.ts.hbs +25 -0
- package/adapters/nuxt4/codegen/templates/create/useForm.ts.hbs +29 -0
- package/adapters/nuxt4/codegen/templates/create/validation.ts.hbs +12 -0
- package/adapters/nuxt4/codegen/templates/list/mock.ts.hbs +27 -0
- package/adapters/nuxt4/codegen/templates/list/model.index.ts.hbs +2 -0
- package/adapters/nuxt4/codegen/templates/list/model.schema.ts.hbs +16 -0
- package/adapters/nuxt4/codegen/templates/list/model.types.ts.hbs +9 -0
- package/adapters/nuxt4/codegen/templates/list/page.custom.vue.hbs +105 -0
- package/adapters/nuxt4/codegen/templates/list/page.vue.hbs +55 -0
- package/adapters/nuxt4/codegen/templates/list/service.ts.hbs +37 -0
- package/adapters/nuxt4/codegen/templates/list/useList.ts.hbs +82 -0
- package/adapters/nuxt4/codegen/templates/list/useListColumns.ts.hbs +21 -0
- package/adapters/nuxt4/codegen/templates/list/useListExport.ts.hbs +26 -0
- package/adapters/nuxt4/codegen/templates/list/useListFilters.ts.hbs +45 -0
- package/adapters/nuxt4/codegen/templates/partials/component-stub.vue.hbs +44 -0
- package/adapters/nuxt4/codegen/templates/store/store.ts.hbs +30 -0
- package/adapters/nuxt4/unitgen/runners/README.md +12 -0
- package/adapters/nuxt4/unitgen/runners/generate.mjs +201 -0
- package/adapters/nuxt4/unitgen/runners/lib/parse-tags.mjs +49 -0
- package/adapters/nuxt4/unitgen/runners/lib/plan.mjs +567 -0
- package/adapters/nuxt4/unitgen/runners/lib/read-codegen.mjs +42 -0
- package/adapters/nuxt4/unitgen/runners/lib/render.mjs +32 -0
- package/adapters/nuxt4/unitgen/runners/lib/unit-registry.mjs +52 -0
- package/adapters/nuxt4/unitgen/runners/lib/write-files.mjs +103 -0
- package/adapters/nuxt4/unitgen/runners/lib/write-spec-tags.mjs +37 -0
- package/adapters/nuxt4/unitgen/runners/validate-registry.mjs +74 -0
- package/adapters/nuxt4/unitgen/templates/composables/use-form.test.ts.hbs +56 -0
- package/adapters/nuxt4/unitgen/templates/composables/use-list.test.ts.hbs +59 -0
- package/adapters/nuxt4/unitgen/templates/models/schema.test.ts.hbs +24 -0
- package/adapters/nuxt4/unitgen/templates/services/service.create.test.ts.hbs +28 -0
- package/adapters/nuxt4/unitgen/templates/services/service.export.test.ts.hbs +20 -0
- package/adapters/nuxt4/unitgen/templates/services/service.search.test.ts.hbs +25 -0
- package/adapters/nuxt4/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
- package/adapters/nuxt4/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
- package/adapters/shared/common-gen.mjs +599 -0
- package/adapters/shared/common-ui.catalog.json +224 -0
- package/adapters/shared/css-adapters/shadcn.mjs +56 -0
- package/adapters/shared/css-adapters/winforms.mjs +46 -0
- package/adapters/shared/css-gen.mjs +87 -0
- package/adapters/shared/fe-layout-profiles.mjs +74 -0
- package/adapters/shared/fe-ui-inventory.mjs +62 -0
- package/adapters/shared/i18n-merge.mjs +56 -0
- package/adapters/shared/read-fe-ir.mjs +64 -0
- package/adapters/shared/resolve-cli.mjs +16 -0
- package/adapters/shared/resolve-hub-id.mjs +381 -0
- package/adapters/shared/surface-common.mjs +41 -0
- package/bin/flowgrid-mcp.mjs +29 -0
- package/bin/flowgrid.mjs +915 -0
- package/bin/lib/agent-mcp.mjs +70 -0
- package/bin/lib/agent-profiles.mjs +127 -0
- package/bin/lib/audit-run.mjs +96 -0
- package/bin/lib/cli-update.mjs +254 -0
- package/bin/lib/doctor.mjs +163 -0
- package/bin/lib/harness-overlay.mjs +80 -0
- package/bin/lib/harness-sync.mjs +427 -0
- package/bin/lib/init-scaffold.mjs +158 -0
- package/bin/lib/npm-registry.mjs +45 -0
- package/bin/lib/project-gitignore.mjs +39 -0
- package/dist/codegen/adapters/run-be.d.ts +13 -0
- package/dist/codegen/adapters/run-be.js +190 -0
- package/dist/codegen/adapters/run-be.js.map +1 -0
- package/dist/codegen/adapters/run.d.ts +44 -0
- package/dist/codegen/adapters/run.js +146 -0
- package/dist/codegen/adapters/run.js.map +1 -0
- package/dist/codegen/config/project-root.d.ts +13 -0
- package/dist/codegen/config/project-root.js +64 -0
- package/dist/codegen/config/project-root.js.map +1 -0
- package/dist/codegen/mcp/tools.d.ts +2 -0
- package/dist/codegen/mcp/tools.js +138 -0
- package/dist/codegen/mcp/tools.js.map +1 -0
- package/dist/codegen/registries/common.d.ts +28 -0
- package/dist/codegen/registries/common.js +54 -0
- package/dist/codegen/registries/common.js.map +1 -0
- package/dist/dna/config/project-root.d.ts +12 -0
- package/dist/dna/config/project-root.js +41 -0
- package/dist/dna/config/project-root.js.map +1 -0
- package/dist/dna/profile/detect.d.ts +14 -0
- package/dist/dna/profile/detect.js +159 -0
- package/dist/dna/profile/detect.js.map +1 -0
- package/dist/dna/profile/manifest.d.ts +17 -0
- package/dist/dna/profile/manifest.js +10 -0
- package/dist/dna/profile/manifest.js.map +1 -0
- package/dist/docs/cli/engines.d.ts +13 -0
- package/dist/docs/cli/engines.js +53 -0
- package/dist/docs/cli/engines.js.map +1 -0
- package/dist/docs/config/docs-root.d.ts +8 -0
- package/dist/docs/config/docs-root.js +66 -0
- package/dist/docs/config/docs-root.js.map +1 -0
- package/dist/docs/mcp/tools.d.ts +2 -0
- package/dist/docs/mcp/tools.js +351 -0
- package/dist/docs/mcp/tools.js.map +1 -0
- package/dist/docs/scan/ids.d.ts +29 -0
- package/dist/docs/scan/ids.js +237 -0
- package/dist/docs/scan/ids.js.map +1 -0
- package/dist/docs/scan/links.d.ts +10 -0
- package/dist/docs/scan/links.js +98 -0
- package/dist/docs/scan/links.js.map +1 -0
- package/dist/docs/scan/route.d.ts +8 -0
- package/dist/docs/scan/route.js +114 -0
- package/dist/docs/scan/route.js.map +1 -0
- package/dist/graph/analyze/analyze-bullets.d.ts +17 -0
- package/dist/graph/analyze/analyze-bullets.js +137 -0
- package/dist/graph/analyze/analyze-bullets.js.map +1 -0
- package/dist/graph/analyze/analyze-spec.d.ts +12 -0
- package/dist/graph/analyze/analyze-spec.js +249 -0
- package/dist/graph/analyze/analyze-spec.js.map +1 -0
- package/dist/graph/analyze/api-routes.d.ts +66 -0
- package/dist/graph/analyze/api-routes.js +370 -0
- package/dist/graph/analyze/api-routes.js.map +1 -0
- package/dist/graph/analyze/context-orphan.d.ts +12 -0
- package/dist/graph/analyze/context-orphan.js +229 -0
- package/dist/graph/analyze/context-orphan.js.map +1 -0
- package/dist/graph/analyze/grill-check.d.ts +31 -0
- package/dist/graph/analyze/grill-check.js +92 -0
- package/dist/graph/analyze/grill-check.js.map +1 -0
- package/dist/graph/analyze/parity-check.d.ts +25 -0
- package/dist/graph/analyze/parity-check.js +406 -0
- package/dist/graph/analyze/parity-check.js.map +1 -0
- package/dist/graph/analyze/product-paths.d.ts +13 -0
- package/dist/graph/analyze/product-paths.js +29 -0
- package/dist/graph/analyze/product-paths.js.map +1 -0
- package/dist/graph/analyze/surface-paths.d.ts +13 -0
- package/dist/graph/analyze/surface-paths.js +29 -0
- package/dist/graph/analyze/surface-paths.js.map +1 -0
- package/dist/graph/config/load-config.d.ts +30 -0
- package/dist/graph/config/load-config.js +112 -0
- package/dist/graph/config/load-config.js.map +1 -0
- package/dist/graph/config/platform-repos.d.ts +36 -0
- package/dist/graph/config/platform-repos.js +124 -0
- package/dist/graph/config/platform-repos.js.map +1 -0
- package/dist/graph/config/resolve-paths.d.ts +45 -0
- package/dist/graph/config/resolve-paths.js +121 -0
- package/dist/graph/config/resolve-paths.js.map +1 -0
- package/dist/graph/db/index-store.d.ts +67 -0
- package/dist/graph/db/index-store.js +179 -0
- package/dist/graph/db/index-store.js.map +1 -0
- package/dist/graph/gen/run-command.d.ts +40 -0
- package/dist/graph/gen/run-command.js +110 -0
- package/dist/graph/gen/run-command.js.map +1 -0
- package/dist/graph/lexicon/infer-lane.d.ts +11 -0
- package/dist/graph/lexicon/infer-lane.js +28 -0
- package/dist/graph/lexicon/infer-lane.js.map +1 -0
- package/dist/graph/lexicon/load-lexicon.d.ts +60 -0
- package/dist/graph/lexicon/load-lexicon.js +492 -0
- package/dist/graph/lexicon/load-lexicon.js.map +1 -0
- package/dist/graph/mcp/tools.d.ts +9 -0
- package/dist/graph/mcp/tools.js +326 -0
- package/dist/graph/mcp/tools.js.map +1 -0
- package/dist/graph/registry/load-registries.d.ts +27 -0
- package/dist/graph/registry/load-registries.js +111 -0
- package/dist/graph/registry/load-registries.js.map +1 -0
- package/dist/graph/types.d.ts +208 -0
- package/dist/graph/types.js +11 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/test/config/project-root.d.ts +5 -0
- package/dist/test/config/project-root.js +29 -0
- package/dist/test/config/project-root.js.map +1 -0
- package/dist/test/engines/run.d.ts +10 -0
- package/dist/test/engines/run.js +16 -0
- package/dist/test/engines/run.js.map +1 -0
- package/dist/test/mcp/tools.d.ts +2 -0
- package/dist/test/mcp/tools.js +43 -0
- package/dist/test/mcp/tools.js.map +1 -0
- package/dist/test/optional/fallback-evidence.d.ts +34 -0
- package/dist/test/optional/fallback-evidence.js +103 -0
- package/dist/test/optional/fallback-evidence.js.map +1 -0
- package/engines/cases/README.md +12 -0
- package/engines/cases/check-coverage.mjs +103 -0
- package/engines/cases/check-plans.mjs +31 -0
- package/engines/cases/gate.mjs +215 -0
- package/engines/cases/lib/audit-tc-traceability.mjs +139 -0
- package/engines/cases/lib/list-case-yaml.mjs +27 -0
- package/engines/cases/lib/parse-bundle-traceability.mjs +77 -0
- package/engines/cases/lib/render-github-catalog.mjs +141 -0
- package/engines/cases/lib/resolve-bundle-from-screen.mjs +73 -0
- package/engines/cases/lib/screen-facet-coverage.mjs +42 -0
- package/engines/cases/lib/validate-tc-schema.mjs +61 -0
- package/engines/cases/publish.mjs +4 -0
- package/engines/cases/render-cases.mjs +182 -0
- package/engines/cases/vitepress/config.ts +171 -0
- package/engines/cases/vitepress/theme/custom.css +418 -0
- package/engines/cases/vitepress/theme/index.ts +46 -0
- package/engines/codegen/adapters/shadcn.mjs +58 -0
- package/engines/codegen/adapters/winforms.mjs +46 -0
- package/engines/codegen/tokens.mjs +64 -0
- package/engines/docs/lib/load-dev-base-url.mjs +38 -0
- package/engines/docs/lib/markdown-table.mjs +65 -0
- package/engines/docs/lib/render-bundle-markdown.mjs +95 -0
- package/engines/docs/lib/render-design-tables.mjs +695 -0
- package/engines/docs/lib/render-github-catalog.mjs +194 -0
- package/engines/docs/lib/render-qa-list.mjs +57 -0
- package/engines/docs/lib/render-spec-markdown.mjs +19 -0
- package/engines/docs/lib/render-template.mjs +76 -0
- package/engines/docs/lib/route-page-probe.mjs +54 -0
- package/engines/docs/publish.mjs +4 -0
- package/engines/docs/render-docs.mjs +195 -0
- package/engines/docs/vitepress/config.ts +442 -0
- package/engines/docs/vitepress/surfaces-nav.mjs +171 -0
- package/engines/docs/vitepress/theme/custom.css +418 -0
- package/engines/docs/vitepress/theme/index.ts +46 -0
- package/engines/openapi/build-openapi-ui.mjs +72 -0
- package/engines/openapi/build-swagger-ui.mjs +72 -0
- package/engines/openapi/check-backend-spec.mjs +66 -0
- package/engines/openapi/gen-openapi.mjs +337 -0
- package/engines/openapi/render-backend-spec.mjs +170 -0
- package/engines/openapi/render-openapi.mjs +155 -0
- package/engines/shared/flowgrid-tests-docs.mjs +32 -0
- package/engines/spec/extract-i18n.mjs +74 -0
- package/engines/spec/legacy-dynamics-validate.mjs +67 -0
- package/engines/spec/lib/audit-api-gaps.mjs +198 -0
- package/engines/spec/lib/audit-bundle-gaps.mjs +582 -0
- package/engines/spec/lib/audit-e2e-coverage.mjs +381 -0
- package/engines/spec/lib/audit-fe-be-alignment.mjs +183 -0
- package/engines/spec/lib/audit-flow-gaps.mjs +151 -0
- package/engines/spec/lib/audit-legacy-gaps.mjs +73 -0
- package/engines/spec/lib/audit-scenario-coverage.mjs +175 -0
- package/engines/spec/lib/audit-testcase-bundle-cross.mjs +145 -0
- package/engines/spec/lib/audit-testcase-gaps.mjs +79 -0
- package/engines/spec/lib/audit-testcase-plan-gaps.mjs +131 -0
- package/engines/spec/lib/audit-testcase-tc.mjs +182 -0
- package/engines/spec/lib/audit-ux-affordance.mjs +269 -0
- package/engines/spec/lib/bundle-ir.mjs +360 -0
- package/engines/spec/lib/bundle-schema.mjs +199 -0
- package/engines/spec/lib/collect-screen-api-intents.mjs +69 -0
- package/engines/spec/lib/hydrate-design-api.mjs +58 -0
- package/engines/spec/lib/open-qa.mjs +66 -0
- package/engines/spec/lib/project-business-layout.mjs +214 -0
- package/engines/spec/lib/testcase-matrix-facets.mjs +9 -0
- package/engines/spec/merge-bundle.mjs +27 -0
- package/engines/spec/normalize-bundle-gen.mjs +69 -0
- package/engines/spec/split-all.mjs +78 -0
- package/engines/spec/split-bundle.mjs +45 -0
- package/engines/template-builder/runner.mjs +96 -0
- package/engines/template-builder/scanner.mjs +138 -0
- package/engines/testcase/_staging-from-portal/README-STAGING.md +13 -0
- package/engines/testcase/_staging-from-portal/runners/README.md +15 -0
- package/engines/testcase/_staging-from-portal/runners/generate.mjs +123 -0
- package/engines/testcase/_staging-from-portal/runners/lib/e2e-registry.mjs +77 -0
- package/engines/testcase/_staging-from-portal/runners/lib/plan.mjs +97 -0
- package/engines/testcase/_staging-from-portal/runners/lib/read-testcase.mjs +166 -0
- package/engines/testcase/_staging-from-portal/runners/lib/render.mjs +18 -0
- package/engines/testcase/_staging-from-portal/runners/lib/semantic-plan.mjs +178 -0
- package/engines/testcase/_staging-from-portal/runners/lib/write-files.mjs +42 -0
- package/engines/testcase/_staging-from-portal/runners/validate-registry.mjs +75 -0
- package/engines/testcase/_staging-from-portal/templates/page.ts.hbs +52 -0
- package/engines/testcase/_staging-from-portal/templates/partials/README.md +5 -0
- package/engines/testcase/_staging-from-portal/templates/spec.ts.hbs +214 -0
- package/engines/testcase/runners/README.md +27 -0
- package/engines/testcase/runners/generate-api.mjs +121 -0
- package/engines/testcase/runners/generate.mjs +161 -0
- package/engines/testcase/runners/lib/api-plan.mjs +64 -0
- package/engines/testcase/runners/lib/e2e-registry.mjs +77 -0
- package/engines/testcase/runners/lib/plan.mjs +123 -0
- package/engines/testcase/runners/lib/read-spec.mjs +37 -0
- package/engines/testcase/runners/lib/read-testcase.mjs +179 -0
- package/engines/testcase/runners/lib/render.mjs +18 -0
- package/engines/testcase/runners/lib/resolve-hub-id.mjs +324 -0
- package/engines/testcase/runners/lib/semantic-plan.mjs +178 -0
- package/engines/testcase/runners/lib/write-files.mjs +145 -0
- package/engines/testcase/runners/validate-registry.mjs +75 -0
- package/engines/testcase/templates/api.spec.ts.hbs +40 -0
- package/engines/testcase/templates/page.ts.hbs +69 -0
- package/engines/testcase/templates/partials/README.md +5 -0
- package/engines/testcase/templates/spec.ts.hbs +231 -0
- package/harness/agents/claude/rules/claude-flowgrid.mdc +9 -0
- package/harness/agents/cursor/rules/cursor-flowgrid.mdc +9 -0
- package/harness/agents/gemini_antigravity/rules/antigravity-mcp.mdc +10 -0
- package/harness/agents/kiro/rules/kiro-flowgrid.mdc +9 -0
- package/harness/be/adapters/dotnet-integration/skills/framework-rules-be/SKILL.md +21 -0
- package/harness/be/adapters/fastapi/skills/framework-rules-be/SKILL.md +27 -0
- package/harness/be/adapters/laravel/skills/framework-rules-be/SKILL.md +27 -0
- package/harness/be/extracts/artifactgraph-hooks-be.md +21 -0
- package/harness/be/extracts/risk-classes.md +69 -0
- package/harness/be/skills/api/SKILL.md +116 -0
- package/harness/be/skills/api-unit/SKILL.md +76 -0
- package/harness/be/skills/grill-api/SKILL.md +69 -0
- package/harness/be/skills/grill-api-unit/SKILL.md +57 -0
- package/harness/common/extracts/artifact-graph.md +23 -0
- package/harness/common/extracts/artifactgraph-hooks-core.md +17 -0
- package/harness/common/extracts/artifactgraph-phase-hooks.md +106 -0
- package/harness/common/extracts/core/agent-discipline.md +8 -0
- package/harness/common/extracts/docs-mark-detect.md +48 -0
- package/harness/common/extracts/docs-mark.md +62 -0
- package/harness/common/extracts/extract-registry.json +29 -0
- package/harness/common/extracts/ux-common-patterns.md +172 -0
- package/harness/common/rules/artifactgraph.mdc +26 -0
- package/harness/common/rules/cross-repo-index.mdc +47 -0
- package/harness/common/rules/flowgrid-ux-common.mdc +39 -0
- package/harness/common/rules/platform-code-size.mdc +24 -0
- package/harness/common/rules/team-flow-harness-state.mdc +12 -0
- package/harness/common/skills/business-impact-review/SKILL.md +106 -0
- package/harness/common/skills/configure-repo-maps/SKILL.md +58 -0
- package/harness/common/skills/docs-mark/SKILL.md +67 -0
- package/harness/common/skills/legacy/SKILL.md +29 -0
- package/harness/common/skills/ui-proposal/SKILL.md +28 -0
- package/harness/docs/extracts/agent-execution-protocol.md +31 -0
- package/harness/docs/extracts/architecture-core.md +71 -0
- package/harness/docs/extracts/artifactgraph-hooks-docs.md +15 -0
- package/harness/docs/extracts/artifactgraph-parity.md +10 -0
- package/harness/docs/extracts/business-process-trace.md +66 -0
- package/harness/docs/extracts/codegen/readiness.md +8 -0
- package/harness/docs/extracts/common-scope.md +65 -0
- package/harness/docs/extracts/docs-phase-hooks.md +22 -0
- package/harness/docs/extracts/extract-registry.docs.json +45 -0
- package/harness/docs/extracts/extract-registry.flowgrid-process.json +12 -0
- package/harness/docs/extracts/grill/validation.md +9 -0
- package/harness/docs/extracts/grill-docs-reconcile.md +5 -0
- package/harness/docs/extracts/qa-inbox.md +36 -0
- package/harness/docs/extracts/risk-classes.md +69 -0
- package/harness/docs/extracts/spec-core.md +5 -0
- package/harness/docs/extracts/spec-requirement.md +5 -0
- package/harness/docs/extracts/tpl-adr.md +23 -0
- package/harness/docs/extracts/tpl-arc42-chapter.md +29 -0
- package/harness/docs/extracts/tpl-cross-cutting.md +24 -0
- package/harness/docs/extracts/tpl-deployment.md +23 -0
- package/harness/docs/extracts/tpl-module.md +33 -0
- package/harness/docs/extracts/update-spec-delta.md +5 -0
- package/harness/docs/rules/agent-compliance.mdc +26 -0
- package/harness/docs/rules/docs-hub.mdc +54 -0
- package/harness/docs/rules/flowgrid-process.mdc +25 -0
- package/harness/docs/rules/team-flow-grill.mdc +31 -0
- package/harness/docs/rules/team-flow-harness-state.mdc +16 -0
- package/harness/docs/rules/team-flow-spec.mdc +36 -0
- package/harness/docs/schemas/flowgrid-docs/backend-api.schema.json +175 -0
- package/harness/docs/schemas/flowgrid-docs/missing-optional-event.schema.json +39 -0
- package/harness/docs/schemas/flowgrid-docs/spec.schema.json +643 -0
- package/harness/docs/schemas/flowgrid-docs/testcase.schema.json +29 -0
- package/harness/docs/schemas/flowgrid-process/missing-optional-event.schema.json +39 -0
- package/harness/docs/skills/adopt/SKILL.md +140 -0
- package/harness/docs/skills/api/SKILL.md +40 -0
- package/harness/docs/skills/api-integration/SKILL.md +110 -0
- package/harness/docs/skills/api-spec/SKILL.md +136 -0
- package/harness/docs/skills/api-update/SKILL.md +82 -0
- package/harness/docs/skills/architecture/SKILL.md +57 -0
- package/harness/docs/skills/architecture-grill/SKILL.md +29 -0
- package/harness/docs/skills/background-logic/SKILL.md +100 -0
- package/harness/docs/skills/build-templates/SKILL.md +47 -0
- package/harness/docs/skills/business-process/SKILL.md +109 -0
- package/harness/docs/skills/call-external/SKILL.md +32 -0
- package/harness/docs/skills/common/SKILL.md +46 -0
- package/harness/docs/skills/common-spec/SKILL.md +55 -0
- package/harness/docs/skills/cross-cutting/SKILL.md +33 -0
- package/harness/docs/skills/cross-entity-service/SKILL.md +32 -0
- package/harness/docs/skills/cross-service/SKILL.md +37 -0
- package/harness/docs/skills/db-erd/SKILL.md +29 -0
- package/harness/docs/skills/decision/SKILL.md +30 -0
- package/harness/docs/skills/deployment/SKILL.md +34 -0
- package/harness/docs/skills/docs-hub/SKILL.md +65 -0
- package/harness/docs/skills/grill/SKILL.md +46 -0
- package/harness/docs/skills/grill-api/SKILL.md +26 -0
- package/harness/docs/skills/grill-api-spec/SKILL.md +57 -0
- package/harness/docs/skills/grill-bqa/SKILL.md +119 -0
- package/harness/docs/skills/grill-common-spec/SKILL.md +43 -0
- package/harness/docs/skills/grill-dev/SKILL.md +172 -0
- package/harness/docs/skills/grill-docs/SKILL.md +79 -0
- package/harness/docs/skills/grill-integration-spec/SKILL.md +51 -0
- package/harness/docs/skills/module/SKILL.md +58 -0
- package/harness/docs/skills/openapi/SKILL.md +37 -0
- package/harness/docs/skills/overview/SKILL.md +42 -0
- package/harness/docs/skills/qa-resolve/SKILL.md +91 -0
- package/harness/docs/skills/spec/SKILL.md +240 -0
- package/harness/docs/skills/surfaces/SKILL.md +52 -0
- package/harness/docs/skills/update-spec/SKILL.md +83 -0
- package/harness/fe/adapters/dotnet-line/skills/framework-rules/SKILL.md +27 -0
- package/harness/fe/adapters/nextjs/skills/framework-rules/SKILL.md +29 -0
- package/harness/fe/adapters/nuxt4/skills/framework-rules/SKILL.md +33 -0
- package/harness/fe/extracts/artifactgraph-hooks-fe.md +15 -0
- package/harness/fe/extracts/risk-classes.md +69 -0
- package/harness/fe/rules/cross-repo-index-routing.mdc +24 -0
- package/harness/fe/rules/flowgrid-test-optional-accelerators.mdc +21 -0
- package/harness/fe/rules/platform-code-size.mdc +43 -0
- package/harness/fe/rules/platform-design-vocabulary.mdc +33 -0
- package/harness/fe/rules/team-flow-prototype.mdc +32 -0
- package/harness/fe/rules/team-flow-unit.mdc +27 -0
- package/harness/fe/skills/build-template-code/SKILL.md +42 -0
- package/harness/fe/skills/gen-common/SKILL.md +93 -0
- package/harness/fe/skills/grill-prototype/SKILL.md +41 -0
- package/harness/fe/skills/grill-test/SKILL.md +32 -0
- package/harness/fe/skills/grill-unit/SKILL.md +31 -0
- package/harness/fe/skills/model/SKILL.md +48 -0
- package/harness/fe/skills/prototype/SKILL.md +100 -0
- package/harness/fe/skills/test/SKILL.md +37 -0
- package/harness/fe/skills/unit/SKILL.md +55 -0
- package/harness/fe/skills/wire/SKILL.md +60 -0
- package/harness/shared/AGENTS.md +169 -0
- package/harness/shared/SSOT_AGENT_PROTOCOL.md +167 -0
- package/harness/shared/rules/flowgrid-code-optional-integrations.mdc +53 -0
- package/harness/shared/schemas/flowgrid-code/missing-optional-event.schema.json +62 -0
- package/harness/tests/extracts/artifactgraph-hooks-test.md +13 -0
- package/harness/tests/extracts/plans/readiness.md +14 -0
- package/harness/tests/rules/cross-repo-index-routing.mdc +24 -0
- package/harness/tests/rules/flowgrid-test-optional-accelerators.mdc +21 -0
- package/harness/tests/rules/plans-docs-first.mdc +13 -0
- package/harness/tests/skills/grill-testcase/SKILL.md +55 -0
- package/harness/tests/skills/scenario/SKILL.md +64 -0
- package/harness/tests/skills/test-api/SKILL.md +65 -0
- package/harness/tests/skills/testcase/SKILL.md +98 -0
- package/harness/tests/templates/SC.example.md +86 -0
- package/harness/tests/templates/TC.example-api.yaml +45 -0
- package/harness/tests/templates/TC.example.yaml +127 -0
- package/lexicon/registry-tags.en.txt +173 -0
- package/lexicon/testcase-taxonomy.en.txt +117 -0
- package/package.json +98 -0
- package/schemas/missing-optional-event.schema.json +37 -0
- package/schemas/testcase.schema.json +239 -0
- package/scripts/prepare-install.mjs +25 -0
- package/stacks/docs.json +21 -0
- package/stacks/dotnet-integration.json +66 -0
- package/stacks/dotnet-line.json +64 -0
- package/stacks/fastapi.json +98 -0
- package/stacks/generic.json +11 -0
- package/stacks/laravel.json +92 -0
- package/stacks/nextjs-nest.json +93 -0
- package/stacks/nextjs.json +132 -0
- package/stacks/nuxt4-nest.json +123 -0
- package/stacks/nuxt4.json +148 -0
- package/templates/project-skeleton/architecture/01-introduction/index.md +33 -0
- package/templates/project-skeleton/architecture/02-constraints/index.md +34 -0
- package/templates/project-skeleton/architecture/03-business-process/FLOW-login.md +101 -0
- package/templates/project-skeleton/architecture/03-business-process/FLOW-template.md +149 -0
- package/templates/project-skeleton/architecture/04-solution-strategy/index.md +26 -0
- package/templates/project-skeleton/architecture/07-deployment/index.md +26 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/configuration.md +18 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/index.md +27 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/observability.md +18 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/security.md +18 -0
- package/templates/project-skeleton/architecture/09-decisions/ADR-001-arc42-toc.md +31 -0
- package/templates/project-skeleton/architecture/09-decisions/index.md +13 -0
- package/templates/project-skeleton/architecture/10-quality/index.md +27 -0
- package/templates/project-skeleton/architecture/11-risks/index.md +25 -0
- package/templates/project-skeleton/architecture/12-glossary/index.md +31 -0
- package/templates/project-skeleton/architecture/index.md +1 -0
- package/templates/project-skeleton/architecture/model/workspace.dsl +71 -0
- package/templates/project-skeleton/index.md +2 -0
- package/templates/project-skeleton/overview/.gitkeep +1 -0
- package/templates/project-skeleton/overview/index.md +2 -0
- package/templates/project-skeleton/qa/README.md +11 -0
- package/templates/project-skeleton/qa/open/.gitkeep +0 -0
- package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/health.api.yaml +12 -0
- package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/index.md +12 -0
- package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/empty.ui.yaml +14 -0
- package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/index.md +11 -0
- package/templates/project-skeleton/surfaces/common/data-model/derived-data.md +26 -0
- package/templates/project-skeleton/surfaces/common/data-model/index.md +16 -0
- package/templates/project-skeleton/surfaces/common/index.md +32 -0
- package/templates/project-skeleton/surfaces/common/md/breadcrumb-flow/common-breadcrumb-flow.md +72 -0
- package/templates/project-skeleton/surfaces/common/md/buttons/common-buttons.md +160 -0
- package/templates/project-skeleton/surfaces/common/md/confirm-dialog/common-confirm-dialog.md +98 -0
- package/templates/project-skeleton/surfaces/common/md/data-table/common-data-table.md +91 -0
- package/templates/project-skeleton/surfaces/common/md/delete-flow/common-delete-flow.md +68 -0
- package/templates/project-skeleton/surfaces/common/md/feedback/common-feedback.md +140 -0
- package/templates/project-skeleton/surfaces/common/md/flat-design/common-flat-design.md +78 -0
- package/templates/project-skeleton/surfaces/common/md/form-validation/common-form-validation.md +74 -0
- package/templates/project-skeleton/surfaces/common/md/import-csv/common-import-csv.md +89 -0
- package/templates/project-skeleton/surfaces/common/md/list-page/common-list-page.md +102 -0
- package/templates/project-skeleton/surfaces/common/md/list-toolbar/common-list-toolbar.md +81 -0
- package/templates/project-skeleton/surfaces/common/md/navigation/common-navigation.md +70 -0
- package/templates/project-skeleton/surfaces/common/md/pagination/common-pagination.md +86 -0
- package/templates/project-skeleton/surfaces/common/md/search-filter/common-search-filter.md +96 -0
- package/templates/project-skeleton/surfaces/common/md/status-chip/common-status-chip.md +93 -0
- package/templates/project-skeleton/surfaces/common/md/table-action-column/common-table-action-column.md +90 -0
- package/templates/project-skeleton/surfaces/common/patterns/breadcrumb-flow.md +83 -0
- package/templates/project-skeleton/surfaces/common/patterns/delete-flow.md +30 -0
- package/templates/project-skeleton/surfaces/common/patterns/ui-spec.md +15 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/common-breadcrumb-flow.bundle.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/spec.yaml +31 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/common-buttons.bundle.yaml +147 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/spec.yaml +118 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/common-confirm-dialog.bundle.yaml +89 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/spec.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/common-data-table.bundle.yaml +85 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/spec.yaml +56 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/common-delete-flow.bundle.yaml +59 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/spec.yaml +30 -0
- package/templates/project-skeleton/surfaces/common/yaml/design-system.bundle.yaml +29 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/common-feedback.bundle.yaml +126 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/spec.yaml +97 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/common-flat-design.bundle.yaml +77 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/spec.yaml +48 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/common-form-validation.bundle.yaml +66 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/spec.yaml +37 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/common-import-csv.bundle.yaml +74 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/spec.yaml +45 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/common-list-page.bundle.yaml +90 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/legacy.yaml +14 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/spec.yaml +58 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/common-list-toolbar.bundle.yaml +86 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/legacy.yaml +12 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/spec.yaml +56 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/common-navigation.bundle.yaml +68 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/spec.yaml +39 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/common-pagination.bundle.yaml +84 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/legacy.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/spec.yaml +53 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/common-search-filter.bundle.yaml +88 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/spec.yaml +59 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/common-status-chip.bundle.yaml +89 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/spec.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/common-table-action-column.bundle.yaml +81 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/spec.yaml +52 -0
- package/templates/project-skeleton/surfaces/index.md +1 -0
- package/templates/schemas/backend-api.schema.json +174 -0
- package/templates/schemas/legacy-repos.schema.json +24 -0
- package/templates/schemas/platform-repos.schema.json +29 -0
- package/templates/schemas/spec.schema.json +718 -0
- package/templates/schemas/testcase.schema.json +28 -0
- package/templates/shared/AUTHORING-COMMON.md +109 -0
- package/templates/shared/api-contract-test.yaml +33 -0
- package/templates/shared/backend-api-integration.yaml +152 -0
- package/templates/shared/backend-api.bundle.yaml +177 -0
- package/templates/shared/backend-api.yaml +188 -0
- package/templates/shared/breadcrumb-flow.ejs +45 -0
- package/templates/shared/bundle-authoring.md +288 -0
- package/templates/shared/clients-line.yaml +18 -0
- package/templates/shared/default-layout.ejs +234 -0
- package/templates/shared/design-spec.yaml +85 -0
- package/templates/shared/entity-delta.example.yaml +45 -0
- package/templates/shared/feature.bundle.yaml +575 -0
- package/templates/shared/integration-adapter.bundle.yaml +77 -0
- package/templates/shared/integration-spec.yaml +37 -0
- package/templates/shared/ir-design.yaml +34 -0
- package/templates/shared/ir-legacy.yaml +12 -0
- package/templates/shared/ir-spec.yaml +18 -0
- package/templates/shared/line-client.bundle.yaml +65 -0
- package/templates/shared/mock-data.yaml +22 -0
- package/templates/shared/openapi.yaml +144 -0
- package/templates/shared/patterns/.gitkeep +0 -0
- package/templates/shared/patterns/admin-crud.pattern.yaml +37 -0
- package/templates/shared/qa-item.yaml +15 -0
- package/templates/shared/spec.yaml +162 -0
- package/templates/shared/testcase.yaml +2 -0
- package/templates/tests-skeleton/cases/README.md +5 -0
- package/templates/tests-skeleton/catalog/locale.yaml +7 -0
- package/templates/tests-skeleton/index.md +7 -0
- package/templates/tests-skeleton/scenarios/README.md +3 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"stack": "nuxt4",
|
|
3
|
+
"mode": "brownfield",
|
|
4
|
+
"commands": {
|
|
5
|
+
"genDry": [
|
|
6
|
+
"flowgrid",
|
|
7
|
+
"gen:dry",
|
|
8
|
+
"--adapter=nuxt4",
|
|
9
|
+
"--",
|
|
10
|
+
"--id",
|
|
11
|
+
"{spec}"
|
|
12
|
+
],
|
|
13
|
+
"gen": [
|
|
14
|
+
"flowgrid",
|
|
15
|
+
"gen",
|
|
16
|
+
"--adapter=nuxt4",
|
|
17
|
+
"--",
|
|
18
|
+
"--id",
|
|
19
|
+
"{spec}"
|
|
20
|
+
],
|
|
21
|
+
"unitGenDry": [
|
|
22
|
+
"flowgrid",
|
|
23
|
+
"unit-gen:dry",
|
|
24
|
+
"--adapter=nuxt4",
|
|
25
|
+
"--",
|
|
26
|
+
"--id",
|
|
27
|
+
"{spec}"
|
|
28
|
+
],
|
|
29
|
+
"unitGen": [
|
|
30
|
+
"flowgrid",
|
|
31
|
+
"unit-gen",
|
|
32
|
+
"--adapter=nuxt4",
|
|
33
|
+
"--",
|
|
34
|
+
"--id",
|
|
35
|
+
"{spec}"
|
|
36
|
+
],
|
|
37
|
+
"testcaseGenDry": [
|
|
38
|
+
"flowgrid",
|
|
39
|
+
"testcase:gen:dry",
|
|
40
|
+
"--",
|
|
41
|
+
"--id",
|
|
42
|
+
"{spec}"
|
|
43
|
+
],
|
|
44
|
+
"testcaseGen": [
|
|
45
|
+
"flowgrid",
|
|
46
|
+
"testcase:gen",
|
|
47
|
+
"--",
|
|
48
|
+
"--id",
|
|
49
|
+
"{spec}"
|
|
50
|
+
],
|
|
51
|
+
"registryValidate": [
|
|
52
|
+
"flowgrid",
|
|
53
|
+
"registry",
|
|
54
|
+
"--adapter=nuxt4"
|
|
55
|
+
],
|
|
56
|
+
"unitRegistry": [
|
|
57
|
+
"flowgrid",
|
|
58
|
+
"unit-registry",
|
|
59
|
+
"--adapter=nuxt4"
|
|
60
|
+
],
|
|
61
|
+
"e2eRegistry": [
|
|
62
|
+
"flowgrid",
|
|
63
|
+
"e2e-registry"
|
|
64
|
+
],
|
|
65
|
+
"commonRegistry": [
|
|
66
|
+
"flowgrid",
|
|
67
|
+
"common-registry"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"registries": [
|
|
71
|
+
"registries/design.registry.json",
|
|
72
|
+
"registries/common.registry.json",
|
|
73
|
+
"registries/unit-test.registry.json",
|
|
74
|
+
"registries/e2e-test.registry.json",
|
|
75
|
+
"registries/page-lifecycle.registry.json"
|
|
76
|
+
],
|
|
77
|
+
"gapSources": [
|
|
78
|
+
"**/generated/HANDOFF.md",
|
|
79
|
+
"**/generated/UNIT-HANDOFF.md",
|
|
80
|
+
"**/generated/codegen.manifest.json"
|
|
81
|
+
],
|
|
82
|
+
"specRoots": [],
|
|
83
|
+
"templates": {
|
|
84
|
+
"root": "adapters/nuxt4/codegen/templates",
|
|
85
|
+
"engine": "hbs",
|
|
86
|
+
"note": "SSOT in FlowGrid bộ code; product has no root codegen/"
|
|
87
|
+
},
|
|
88
|
+
"dsl": {
|
|
89
|
+
"ssot": "product-repo",
|
|
90
|
+
"lanes": {
|
|
91
|
+
"fe": {
|
|
92
|
+
"registries": [
|
|
93
|
+
"registries/design.registry.json",
|
|
94
|
+
"registries/common.registry.json"
|
|
95
|
+
],
|
|
96
|
+
"genKeys": [
|
|
97
|
+
"genDry",
|
|
98
|
+
"gen"
|
|
99
|
+
],
|
|
100
|
+
"needsTags": [
|
|
101
|
+
"#needs-component",
|
|
102
|
+
"#needs-ui",
|
|
103
|
+
"#shell:",
|
|
104
|
+
"#widget:"
|
|
105
|
+
],
|
|
106
|
+
"note": "Review OK → promote design/common registry in product repo; rebuild index"
|
|
107
|
+
},
|
|
108
|
+
"unit": {
|
|
109
|
+
"registries": [
|
|
110
|
+
"registries/unit-test.registry.json"
|
|
111
|
+
],
|
|
112
|
+
"genKeys": [
|
|
113
|
+
"unitGenDry",
|
|
114
|
+
"unitGen"
|
|
115
|
+
],
|
|
116
|
+
"needsTags": [
|
|
117
|
+
"#needs-unit-test"
|
|
118
|
+
],
|
|
119
|
+
"note": "Promote unit-test.registry.json after pattern OK"
|
|
120
|
+
},
|
|
121
|
+
"e2e": {
|
|
122
|
+
"registries": [
|
|
123
|
+
"registries/e2e-test.registry.json"
|
|
124
|
+
],
|
|
125
|
+
"genKeys": [
|
|
126
|
+
"testcaseGenDry",
|
|
127
|
+
"testcaseGen"
|
|
128
|
+
],
|
|
129
|
+
"needsTags": [
|
|
130
|
+
"#needs-testcase",
|
|
131
|
+
"#needs-e2e"
|
|
132
|
+
],
|
|
133
|
+
"note": "{spec} = hub id (W-|TC-|CMP-|suite) for --id"
|
|
134
|
+
},
|
|
135
|
+
"lifecycle": {
|
|
136
|
+
"registries": [
|
|
137
|
+
"registries/page-lifecycle.registry.json"
|
|
138
|
+
],
|
|
139
|
+
"genKeys": [],
|
|
140
|
+
"needsTags": [],
|
|
141
|
+
"note": "Updated by flowgrid gen; no separate lifecycle CLI"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"vocabularies": {
|
|
146
|
+
"registryTags": "artifactgraph/lexicon/registry-tags.en.txt"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 01 — Introduction
|
|
2
|
+
|
|
3
|
+
status: active
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Goals and scope of this **docs hub** architecture narrative (*why* we document) — not a product marketing intro.
|
|
8
|
+
|
|
9
|
+
## Goals
|
|
10
|
+
|
|
11
|
+
1. **Navigate** — arc42 chapters as TOC so humans and AI skills land on the right layer.
|
|
12
|
+
2. **Describe** — C4 views (`LND`/`CTX`/`CTR`) + product `CMP-*` without duplicating Code.
|
|
13
|
+
3. **Curate** — only high-value runtime journeys (`FLOW-*`), not every agile story.
|
|
14
|
+
|
|
15
|
+
## Audience
|
|
16
|
+
|
|
17
|
+
| Reader | Use |
|
|
18
|
+
|--------|-----|
|
|
19
|
+
| Platform / product engineers | Context → containers → component → journey |
|
|
20
|
+
| AI skills (`/architecture`, `/journey`, …) | Chapter + ID routing |
|
|
21
|
+
| New joiners | Start §03 + `FLOW-login`; deepen via §05 / product |
|
|
22
|
+
|
|
23
|
+
## Out of scope
|
|
24
|
+
|
|
25
|
+
- Feature Code (`W-*`/`API-*`) and grill/codegen detail → `surfaces/`
|
|
26
|
+
- Day-to-day toolchain how-to → `platform/`
|
|
27
|
+
- Full E2E/`TC-*` plans → `base-tests`
|
|
28
|
+
|
|
29
|
+
## See also
|
|
30
|
+
|
|
31
|
+
- People entry: [Start now](/platform/guide/start-now)
|
|
32
|
+
- Tree: [System doc structure](/platform/guide/SYSTEM-DOC-STRUCTURE)
|
|
33
|
+
- [03 Context](/architecture/03-context/)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 02 — Constraints
|
|
2
|
+
|
|
3
|
+
status: active
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Constraints that shape how we write and structure architecture docs (and what we refuse to invent).
|
|
8
|
+
|
|
9
|
+
## Technical
|
|
10
|
+
|
|
11
|
+
| Constraint | Implication |
|
|
12
|
+
|------------|-------------|
|
|
13
|
+
| Docs live in git as Markdown | Diagrams = Mermaid in MD; no proprietary SSOT |
|
|
14
|
+
| Product IDs (`CMP-*`/`W-*`/`API-*`) are stable | Architecture migrate must not rename L3 schemas |
|
|
15
|
+
| VitePress Mermaid 11 | Prefer `sequenceDiagram` / `flowchart`; avoid Mermaid `C4Context` |
|
|
16
|
+
| Multi-repo workspace | Cross-repo links via `platform-repos`; FE↔BE contract only when mapped |
|
|
17
|
+
|
|
18
|
+
## Organizational
|
|
19
|
+
|
|
20
|
+
| Constraint | Implication |
|
|
21
|
+
|------------|-------------|
|
|
22
|
+
| Stub-first §07 | No invented prod topology — `DEP-*` only when placement matters |
|
|
23
|
+
| Curated journeys (~10–20%) | `/journey` refuses backlog-dump sequences |
|
|
24
|
+
| AI author + human review | Skills + optional flowgrid MCP validate IDs; humans own ADRs |
|
|
25
|
+
|
|
26
|
+
## Legal / security (docs)
|
|
27
|
+
|
|
28
|
+
No secrets, tokens, or real prod endpoints in architecture MD. Local IDE/WSL tips are out of scope for this hub.
|
|
29
|
+
|
|
30
|
+
## See also
|
|
31
|
+
|
|
32
|
+
- [04 Solution strategy](/architecture/04-solution-strategy/)
|
|
33
|
+
- [09 Decisions](/architecture/09-decisions/)
|
|
34
|
+
- [ADR-001](/architecture/09-decisions/ADR-001-arc42-toc)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FLOW-LOGIN
|
|
3
|
+
title: "Quy trình Đăng nhập Quản trị viên"
|
|
4
|
+
domain: "Admin Operations"
|
|
5
|
+
surface: "Admin Web Portal"
|
|
6
|
+
actors: ["Quản trị viên (Admin User)"]
|
|
7
|
+
has_background_logic: false
|
|
8
|
+
status: "approved"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# FLOW-LOGIN: Quy trình Đăng nhập Quản trị viên
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Bối cảnh & Ma trận Phân quyền Nghiệp vụ
|
|
16
|
+
|
|
17
|
+
* **Bối cảnh kích hoạt:** Quản trị viên truy cập vào cổng quản trị để quản lý hệ thống. Phiên đăng nhập hiện tại chưa có hoặc đã hết hạn.
|
|
18
|
+
* **Ma trận Vai trò & Quyền hạn:**
|
|
19
|
+
| Tác nhân (Actor) | Vai trò trong Quy trình | Quyền hạn trên Màn hình |
|
|
20
|
+
| :--- | :--- | :--- |
|
|
21
|
+
| **Quản trị viên (Admin)** | Đăng nhập tài khoản | Nhập thông tin trên `[W-AD-AUTH-01]`, truy cập `[W-AD-DASH-01]` |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Chuỗi User Stories Đa Tầng
|
|
26
|
+
|
|
27
|
+
### Story 1: Xác thực & Truy cập Hệ thống (Primary Action Story)
|
|
28
|
+
> **Là một** Quản trị viên hệ thống,
|
|
29
|
+
> **Tôi muốn** nhập tên đăng nhập và mật khẩu hợp lệ trên màn hình đăng nhập `[W-AD-AUTH-01]`,
|
|
30
|
+
> **Để** hệ thống xác thực danh tính và cấp quyền truy cập vào trang tổng quan `[W-AD-DASH-01]`.
|
|
31
|
+
|
|
32
|
+
### Story 2: Xử lý Sai Thông tin & Khóa Tài khoản (Security Fallback Story)
|
|
33
|
+
> **Là một** Quản trị viên hệ thống,
|
|
34
|
+
> **Tôi muốn** nhận được thông báo lỗi rõ ràng nếu nhập sai thông tin đăng nhập,
|
|
35
|
+
> **Để** tôi biết và điều chỉnh lại, đồng thời hệ thống tự động khóa tạm thời nếu nhập sai quá số lần quy định nhằm bảo mật thông tin.
|
|
36
|
+
|
|
37
|
+
*(Quy trình này thuần tương tác màn hình xác thực, không có tác vụ background job ngầm).*
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 3. Quy tắc Nghiệp vụ (Business Rules) & Vòng đời Trạng thái
|
|
42
|
+
|
|
43
|
+
### Danh mục Quy tắc Nghiệp vụ
|
|
44
|
+
* **BR-01 (Giới hạn thử lại):** Cho phép nhập sai tối đa 5 lần liên tiếp. Nếu vượt quá, khóa tài khoản tạm thời trong 15 phút.
|
|
45
|
+
* **BR-02 (Thời hạn phiên làm việc):** Phiên làm việc (Session) duy trì tối đa 8 giờ hoặc tự động đăng xuất sau 30 phút không có thao tác.
|
|
46
|
+
* **BR-03 (Bảo mật thông báo):** Khi đăng nhập thất bại, chỉ hiển thị thông báo chung: "Tên đăng nhập hoặc mật khẩu không chính xác", không tiết lộ tài khoản có tồn tại hay không.
|
|
47
|
+
|
|
48
|
+
### Ma trận Chuyển đổi Trạng thái
|
|
49
|
+
| Thực thể | Trạng thái Bắt đầu | Hành động kích hoạt | Trạng thái Kết thúc | Điều kiện |
|
|
50
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
51
|
+
| **Phiên làm việc** | `UNAUTHENTICATED` | Nhập đúng thông tin & bấm "Đăng nhập" | `AUTHENTICATED` | Tài khoản hợp lệ, chưa bị khóa |
|
|
52
|
+
| **Tài khoản** | `ACTIVE` | Nhập sai liên tiếp 5 lần | `LOCKED_TEMPORARY` | Vi phạm BR-01 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 4. Đặc tả Chi tiết Hành trình Từng Chặng
|
|
57
|
+
|
|
58
|
+
### Chặng 1: Nhập thông tin trên `[W-AD-AUTH-01]`
|
|
59
|
+
1. **Thao tác:** Quản trị viên mở trang đăng nhập, điền `username` và `password`.
|
|
60
|
+
2. **Bấm "Đăng nhập":**
|
|
61
|
+
* Hệ thống kiểm tra xác thực thông tin đối soát với cơ sở dữ liệu tài khoản.
|
|
62
|
+
* **Nếu hợp lệ:** Khởi tạo phiên làm việc an toàn, điều hướng sang `[W-AD-DASH-01] Dashboard`.
|
|
63
|
+
* **Nếu sai thông tin:** Giữ nguyên màn hình đăng nhập, xóa trắng trường mật khẩu và hiển thị cảnh báo đỏ theo BR-03.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 5. Ma trận Đối chiếu (Traceability Matrix)
|
|
68
|
+
|
|
69
|
+
| Bước trong User Story | Màn hình liên quan | Hành động trên Sequence Diagram | Thành phần kỹ thuật đảm nhiệm |
|
|
70
|
+
| :--- | :--- | :--- | :--- |
|
|
71
|
+
| **Story 1 (Đăng nhập)** | `[W-AD-AUTH-01]` | `Admin ->> W_Auth ->> Core: Xác thực` | Auth Service, User Table |
|
|
72
|
+
| **Story 1 (Điều hướng)** | `[W-AD-DASH-01]` | `W_Auth -->> W_Dash: Mở Dashboard` | Router & Session Storage |
|
|
73
|
+
| **Story 2 (Sai mật khẩu)** | `[W-AD-AUTH-01]` | `W_Auth -->> Admin: Báo lỗi` | Form State & Error Alert |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 6. Sơ đồ Tuần tự Nghiệp vụ Liên Màn hình (Screen-to-Screen Sequence Diagram)
|
|
78
|
+
|
|
79
|
+
```mermaid
|
|
80
|
+
sequenceDiagram
|
|
81
|
+
autonumber
|
|
82
|
+
actor Admin as Quản trị viên
|
|
83
|
+
participant W_Auth as [W-AD-AUTH-01] Màn hình Đăng nhập
|
|
84
|
+
participant Core as Dịch vụ Xác thực (Auth Service)
|
|
85
|
+
participant Storage as Cơ sở dữ liệu Người dùng
|
|
86
|
+
participant W_Dash as [W-AD-DASH-01] Bàn làm việc (Dashboard)
|
|
87
|
+
|
|
88
|
+
Admin->>W_Auth: 1. Mở trang đăng nhập
|
|
89
|
+
Admin->>W_Auth: 2. Nhập tên tài khoản, mật khẩu & bấm "Đăng nhập"
|
|
90
|
+
W_Auth->>Core: Gửi yêu cầu xác thực thông tin
|
|
91
|
+
Core->>Storage: Kiểm tra tài khoản và trạng thái khóa
|
|
92
|
+
|
|
93
|
+
alt Thông tin đăng nhập chính xác & tài khoản hoạt động
|
|
94
|
+
Core-->>W_Auth: Xác thực thành công & cấp phiên làm việc
|
|
95
|
+
W_Auth-->>W_Dash: 3. Tự động điều hướng vào Dashboard
|
|
96
|
+
W_Dash-->>Admin: Hiển thị thông tin tổng quan và menu quản trị
|
|
97
|
+
else Sai thông tin hoặc tài khoản bị khóa
|
|
98
|
+
Core-->>W_Auth: Phản hồi từ chối đăng nhập (Kèm lý do bảo mật)
|
|
99
|
+
W_Auth-->>Admin: Hiển thị cảnh báo lỗi & yêu cầu nhập lại
|
|
100
|
+
end
|
|
101
|
+
```
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: FLOW-TEMPLATE
|
|
3
|
+
title: "Tên quy trình nghiệp vụ chuẩn"
|
|
4
|
+
surface: "Tên Surface (vd: Admin Portal / Customer Web / Mobile App)"
|
|
5
|
+
actors: ["Tác nhân chính", "Tác nhân thụ hưởng"]
|
|
6
|
+
has_background_logic: true
|
|
7
|
+
status: "draft"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# FLOW-TEMPLATE: [Tên Quy Trình Nghiệp Vụ]
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Bối cảnh & Ma trận Phân quyền Nghiệp vụ (Context & Role Matrix)
|
|
15
|
+
|
|
16
|
+
* **Bối cảnh kích hoạt (Trigger Context):** [Mô tả hoàn cảnh hoặc sự kiện nào khiến quy trình này diễn ra. Ví dụ: Khách hàng yêu cầu đặt hàng, hoặc quản trị viên khởi tạo chiến dịch khuyến mãi...]
|
|
17
|
+
* **Mục tiêu kinh doanh (Business Goal):** [Giá trị kinh doanh hoặc bài toán mà quy trình này giải quyết...]
|
|
18
|
+
* **Ma trận Vai trò & Quyền hạn (Role & Permission Matrix):**
|
|
19
|
+
| Tác nhân (Actor) | Vai trò trong Quy trình | Quyền hạn trên Màn hình |
|
|
20
|
+
| :--- | :--- | :--- |
|
|
21
|
+
| **[Tác nhân chính]** | [Thực hiện thao tác chính] | [Quyền CRUD trên màn hình W-*] |
|
|
22
|
+
| **[Tác nhân phụ/phê duyệt]** | [Xem xét / phê duyệt / thụ hưởng] | [Xem báo cáo / nhận thông báo] |
|
|
23
|
+
| **[Background Job Worker]* | [Tự động xử lý ngầm sau khi lưu] | [Tự động đọc dữ liệu & gửi thông điệp] |
|
|
24
|
+
|
|
25
|
+
*(Ghi chú: Nếu quy trình KHÔNG có background logic, có thể lược bỏ dòng Background Job Worker).*
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 2. Chuỗi User Stories Đa Tầng (Multi-tiered User Stories)
|
|
30
|
+
|
|
31
|
+
### Story 1: Thao tác Chuẩn bị / Cấu hình (Setup Story - Tùy chọn)
|
|
32
|
+
> **Là một** [Vai trò chuẩn bị, vd: Quản trị viên],
|
|
33
|
+
> **Tôi muốn** [Hành động cấu hình trên màn hình W-SET-01],
|
|
34
|
+
> **Để** [Mục đích chuẩn bị cho các bước giao dịch tiếp theo].
|
|
35
|
+
|
|
36
|
+
### Story 2: Thao tác Nghiệp vụ Chính (Primary Action Story)
|
|
37
|
+
> **Là một** [Vai trò người dùng, vd: Nhân viên vận hành / Khách hàng],
|
|
38
|
+
> **Tôi muốn** [Nhập liệu và gửi yêu cầu trên màn hình W-ACTION-01],
|
|
39
|
+
> **Để** [Hoàn tất thủ tục giao dịch nghiệp vụ].
|
|
40
|
+
|
|
41
|
+
### Story 3: Xử lý Tự động Ngầm (Automated System Story - Khi có Background Logic)
|
|
42
|
+
> **Là một** Hệ thống Tự động (Background Job Worker),
|
|
43
|
+
> **Tôi muốn** tự động bắt sự kiện lưu đơn, so khớp điều kiện và điều phối lệnh xử lý tới [Kênh đích / Cổng đối tác],
|
|
44
|
+
> **Để** tự động hóa quy trình, giảm thiểu độ trễ và tránh sai sót thao tác thủ công, đồng thời đảm bảo không xử lý lặp lại (Idempotency).
|
|
45
|
+
|
|
46
|
+
### Story 4: Giám sát Trạng thái & Xử lý Ngoại lệ (Tracking & Fallback Story)
|
|
47
|
+
> **Là một** [Vai trò người dùng / Quản lý],
|
|
48
|
+
> **Tôi muốn** theo dõi tiến độ và trạng thái xử lý trên màn hình chi tiết `[W-DETAIL-01]`,
|
|
49
|
+
> **Để** nắm bắt kết quả tức thì và can thiệp xử lý thủ công (Fallback) nếu hệ thống gặp sự cố.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. Quy tắc Nghiệp vụ (Business Rules) & Vòng đời Trạng thái
|
|
54
|
+
|
|
55
|
+
### Danh mục Quy tắc Nghiệp vụ (Business Rules)
|
|
56
|
+
* **BR-01 (Quy tắc thẩm định dữ liệu):** [Mô tả điều kiện hợp lệ để cho phép đi tiếp sang bước kế tiếp...]
|
|
57
|
+
* **BR-02 (Quy tắc ưu tiên / giới hạn):** [Ví dụ: Thứ tự ưu tiên bộ lọc, hạn mức giao dịch tối đa...]
|
|
58
|
+
* **BR-03 (Chính sách Retry khi xử lý ngầm):** [Nếu có Job: Số lần thử lại (vd: tối đa 3 lần), khoảng cách thời gian giữa các lần, và điều kiện hủy bỏ khi gặp lỗi client 4xx.]
|
|
59
|
+
* **BR-04 (Bảo mật & Lưu trữ):** [Quy tắc lưu trữ file trên S3, thời hạn link presigned URL hoặc chính sách bảo mật dữ liệu cá nhân.]
|
|
60
|
+
|
|
61
|
+
### Ma trận Chuyển đổi Trạng thái (State Transitions)
|
|
62
|
+
| Thực thể (Entity) | Trạng thái Bắt đầu | Hành động / Sự kiện kích hoạt | Trạng thái Kết thúc | Điều kiện chuyển trạng thái |
|
|
63
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
64
|
+
| **[Thực thể chính]** | `DRAFT` / `NONE` | Bấm "Lưu" trên `[W-ACTION-01]` | `CREATED` | Dữ liệu form hợp lệ |
|
|
65
|
+
| **[Tác vụ ngầm/Job]** | `PENDING_TRIGGER` | Backend bắn sự kiện kích hoạt | `PROCESSING` | Worker nhận job từ queue |
|
|
66
|
+
| **[Tác vụ ngầm/Job]** | `PROCESSING` | Xử lý thành công (cổng trả 200) | `COMPLETED` / `SENT` | Khách nhận tin / Đơn cập nhật |
|
|
67
|
+
| **[Tác vụ ngầm/Job]** | `PROCESSING` | Thất bại sau tối đa lượt retry | `FAILED` | Bật cảnh báo lỗi trên màn hình |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. Đặc tả Chi tiết Hành trình Từng Chặng (Step-by-step Journey)
|
|
72
|
+
|
|
73
|
+
### Chặng 1: Thao tác & Nhập liệu trên Màn hình `[W-ACTION-01]`
|
|
74
|
+
1. **Thao tác người dùng:** Người dùng truy cập form, điền các thông tin bắt buộc.
|
|
75
|
+
2. **Dữ liệu nhập (Key fields):**
|
|
76
|
+
* Field A: `[Tên trường]` = `[Giá trị mẫu]`
|
|
77
|
+
* Field B: `[Tên trường]` = `[Giá trị mẫu]`
|
|
78
|
+
3. **Bấm "Lưu & Xác nhận":**
|
|
79
|
+
* *Kiểm tra tại chỗ:* Hệ thống validate dữ liệu giao diện.
|
|
80
|
+
* *Lưu trữ:* Ghi nhận thông tin vào Database (Table: `[tên_table]`), tải file đính kèm lên S3 Bucket `[tên_bucket]`.
|
|
81
|
+
* *Chuyển màn hình:* Điều hướng người dùng sang `[W-DETAIL-01]`.
|
|
82
|
+
|
|
83
|
+
### Chặng 2: Xử lý Ngầm Phía Sau (Background Logic Execution - Nếu có)
|
|
84
|
+
1. **Kích hoạt sự kiện:** Backend bắn sự kiện `[EventName]` kèm ID thực thể.
|
|
85
|
+
2. **Worker xử lý:** Background Job quét điều kiện so khớp:
|
|
86
|
+
* *Kiểm tra Idempotency:* Đảm bảo chưa từng xử lý sự kiện này trước đó.
|
|
87
|
+
* *So khớp quy tắc:* Đối chiếu với BR-01 và BR-02.
|
|
88
|
+
3. **Thực thi giao tiếp:** Gọi cổng ngoại vi / dịch vụ thứ 3 (Zalo/SMS/Email/Partner Webhook).
|
|
89
|
+
4. **Cập nhật kết quả:** Ghi nhận log vào table `[tên_log_table]`, cập nhật trạng thái đơn thành `COMPLETED` (hoặc `FAILED` nếu vượt quá số lần retry).
|
|
90
|
+
|
|
91
|
+
### Chặng 3: Phản hồi Trạng thái trên Màn hình `[W-DETAIL-01]`
|
|
92
|
+
1. **Hiển thị kết quả:** Màn hình cập nhật badge trạng thái (Xanh: Thành công / Đỏ: Thất bại kèm lý do).
|
|
93
|
+
2. **Cơ chế phục hồi (Fallback):** Nếu trạng thái là thất bại, hiển thị nút bấm `[Thử lại thủ công]` để người dùng kích hoạt lại mà không cần nhập lại form.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 5. Ma trận Đối chiếu (Traceability Matrix)
|
|
98
|
+
|
|
99
|
+
| Bước trong User Story | Màn hình liên quan | Hành động trên Sequence Diagram | Thành phần kỹ thuật đảm nhiệm |
|
|
100
|
+
| :--- | :--- | :--- | :--- |
|
|
101
|
+
| **Story 1 (Setup)** | `[W-SET-01]` | `Admin ->> W_Set ->> Core: Lưu cấu hình` | Table cấu hình |
|
|
102
|
+
| **Story 2 (Primary Action)** | `[W-ACTION-01]` | `User ->> W_Action ->> Core: Gửi dữ liệu` | Core Service, Table chính, S3 |
|
|
103
|
+
| **Story 3 (Background Job)** | N/A (Chạy ngầm) | `Core ->> Job ->> Gateway: Xử lý ngầm` | Background Worker, Message Queue |
|
|
104
|
+
| **Story 4 (Tracking)** | `[W-DETAIL-01]` | `Job -->> W_Detail: Push trạng thái` | UI Detail Screen, Log Table |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 6. Sơ đồ Tuần tự Nghiệp vụ Liên Màn hình (Screen-to-Screen Business Sequence Diagram)
|
|
109
|
+
|
|
110
|
+
```mermaid
|
|
111
|
+
sequenceDiagram
|
|
112
|
+
autonumber
|
|
113
|
+
actor User as Người dùng / Nhân viên
|
|
114
|
+
participant W_Action as [W-ACTION-01] Màn hình Nhập liệu
|
|
115
|
+
participant W_Detail as [W-DETAIL-01] Chi tiết Giao dịch
|
|
116
|
+
participant Core as Core Service
|
|
117
|
+
participant Storage as Database (table) & S3 (bucket)
|
|
118
|
+
participant Job as Background Worker (Job)
|
|
119
|
+
participant Gateway as Kênh Bên Ngoài (Gateway)
|
|
120
|
+
actor Beneficiary as Người thụ hưởng / Đối tác
|
|
121
|
+
|
|
122
|
+
%% BƯỚC 1: THAO TÁC MÀN HÌNH
|
|
123
|
+
rect rgb(255, 250, 240)
|
|
124
|
+
Note over User, Storage: Giai đoạn 1: Thao tác trên giao diện người dùng
|
|
125
|
+
User->>W_Action: 1. Nhập thông tin giao dịch & đính kèm tài liệu
|
|
126
|
+
User->>W_Action: 2. Nhấn nút "Lưu & Xác nhận"
|
|
127
|
+
W_Action->>Core: Gửi dữ liệu giao dịch
|
|
128
|
+
Core->>Storage: Lưu dữ liệu vào Database & tải file lên S3
|
|
129
|
+
Core-->>W_Action: Phản hồi tạo giao dịch thành công (ID: REC-001)
|
|
130
|
+
W_Action-->>User: Điều hướng sang [W-DETAIL-01] Chi tiết Giao dịch
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
%% BƯỚC 2: XỬ LÝ NGẦM (NẾU CÓ)
|
|
134
|
+
rect rgb(245, 255, 245)
|
|
135
|
+
Note over Core, Beneficiary: Giai đoạn 2: Xử lý ngầm (Background Logic)
|
|
136
|
+
Core->>Job: Trigger sự kiện 'TransactionCreated' (mã: REC-001)
|
|
137
|
+
Job->>Storage: Kiểm tra điều kiện nghiệp vụ & chống trùng lặp
|
|
138
|
+
alt Khớp điều kiện & Xử lý thành công
|
|
139
|
+
Job->>Gateway: Gửi thông điệp / dữ liệu qua cổng ngoại vi
|
|
140
|
+
Gateway-->>Beneficiary: Người thụ hưởng nhận thông báo
|
|
141
|
+
Gateway-->>Job: Báo phản hồi thành công
|
|
142
|
+
Job->>Storage: Ghi log lịch sử & cập nhật trạng thái COMPLETED
|
|
143
|
+
Job-->>W_Detail: Push cập nhật trạng thái: "Hoàn tất thành công"
|
|
144
|
+
else Thất bại sau khi thử lại (Retry exhausted)
|
|
145
|
+
Job->>Storage: Ghi nhận log lỗi & cập nhật trạng thái FAILED
|
|
146
|
+
Job-->>W_Detail: Push cảnh báo lỗi (kèm nút Thử lại thủ công)
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 04 — Solution strategy
|
|
2
|
+
|
|
3
|
+
status: active
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
High-level approach: docs hub as arc42 TOC + C4 views; product Code under `CMP-*`; curated journeys.
|
|
8
|
+
|
|
9
|
+
## Content
|
|
10
|
+
|
|
11
|
+
| Theme | Decision |
|
|
12
|
+
|-------|----------|
|
|
13
|
+
| Docs structure | [ADR-001](../09-decisions/ADR-001-arc42-toc) — arc42 TOC over flat C4 folders |
|
|
14
|
+
| Admin runtime | Admin Web + Admin API ([§07](../07-deployment/)) |
|
|
15
|
+
| Auth entry | [CMP-01](/surfaces/CMP-01-auth/) · [FLOW-login](../06-runtime/journeys/FLOW-login) |
|
|
16
|
+
|
|
17
|
+
Further ADRs land in [§09](../09-decisions/).
|
|
18
|
+
|
|
19
|
+
## Out of scope
|
|
20
|
+
|
|
21
|
+
Per-feature UI/API DSL (`surfaces/**/code/`).
|
|
22
|
+
|
|
23
|
+
## See also
|
|
24
|
+
|
|
25
|
+
- [09 Decisions](/architecture/09-decisions/)
|
|
26
|
+
- [05 Building blocks](/architecture/05-building-blocks/)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 07 — Deployment
|
|
2
|
+
|
|
3
|
+
status: stub
|
|
4
|
+
|
|
5
|
+
**Optional.** Write `DEP-*` only when runtime **placement** matters.
|
|
6
|
+
Do not invent prod topology. Local machine tips stay out of this repo.
|
|
7
|
+
|
|
8
|
+
## DEP-local
|
|
9
|
+
|
|
10
|
+
Local WSL / Docker compose style layout for platform bases.
|
|
11
|
+
Prod/staging: TBD.
|
|
12
|
+
|
|
13
|
+
```mermaid
|
|
14
|
+
flowchart LR
|
|
15
|
+
Dev[Developer machine]
|
|
16
|
+
Docs[base-docs VitePress]
|
|
17
|
+
FE[FE base :3000]
|
|
18
|
+
API[API base]
|
|
19
|
+
Dev --> Docs
|
|
20
|
+
Dev --> FE
|
|
21
|
+
FE --> API
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Redirect: [`/architecture/deployments/`](/architecture/deployments/)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| Owner | TBD |
|
|
6
|
+
| Status | stub |
|
|
7
|
+
|
|
8
|
+
## Intent
|
|
9
|
+
|
|
10
|
+
How runtime config is supplied to admin FE/API bases (env, secrets boundary).
|
|
11
|
+
|
|
12
|
+
## Approach
|
|
13
|
+
|
|
14
|
+
TBD — do not put secrets in this repo.
|
|
15
|
+
|
|
16
|
+
## Out of scope
|
|
17
|
+
|
|
18
|
+
Developer machine / WSL setup notes — not part of this docs hub.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 08 — Cross-cutting
|
|
2
|
+
|
|
3
|
+
status: active
|
|
4
|
+
|
|
5
|
+
Enterprise concerns that cut across containers/components. Skill: **`/cross-cutting`**.
|
|
6
|
+
|
|
7
|
+
| Topic | Owner | Status | Doc |
|
|
8
|
+
|-------|-------|--------|-----|
|
|
9
|
+
| Security | TBD | stub | [security](./security) |
|
|
10
|
+
| Observability | TBD | stub | [observability](./observability) |
|
|
11
|
+
| Configuration | TBD | stub | [configuration](./configuration) |
|
|
12
|
+
| Logging | TBD | stub | — |
|
|
13
|
+
| Caching | TBD | stub | — |
|
|
14
|
+
| Messaging | TBD | stub | — |
|
|
15
|
+
| Exception handling | TBD | stub | — |
|
|
16
|
+
| Validation | TBD | stub | — |
|
|
17
|
+
| Localization | TBD | stub | — |
|
|
18
|
+
| Authorization | TBD | stub | — |
|
|
19
|
+
|
|
20
|
+
## Out of scope
|
|
21
|
+
|
|
22
|
+
Full OpenAPI, UI DSL, E2E plans (`base-tests`).
|
|
23
|
+
|
|
24
|
+
## See also
|
|
25
|
+
|
|
26
|
+
- [09 Decisions](/architecture/09-decisions/)
|
|
27
|
+
- Template: `.cursor/extracts/tpl-cross-cutting.md`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Observability
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| Owner | TBD |
|
|
6
|
+
| Status | stub |
|
|
7
|
+
|
|
8
|
+
## Intent
|
|
9
|
+
|
|
10
|
+
Logging, metrics, and tracing across Admin Web / Admin API (and future layers).
|
|
11
|
+
|
|
12
|
+
## Approach
|
|
13
|
+
|
|
14
|
+
TBD.
|
|
15
|
+
|
|
16
|
+
## Out of scope
|
|
17
|
+
|
|
18
|
+
APM vendor runbooks in `platform/` handbook may live separately.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| Owner | TBD |
|
|
6
|
+
| Status | stub |
|
|
7
|
+
|
|
8
|
+
## Intent
|
|
9
|
+
|
|
10
|
+
Authenticate admin operators and protect Admin API (session/token). Details evolve with product ADRs.
|
|
11
|
+
|
|
12
|
+
## Approach
|
|
13
|
+
|
|
14
|
+
TBD — link ADR / CMP-01 / FLOW-login when expanded.
|
|
15
|
+
|
|
16
|
+
## Out of scope
|
|
17
|
+
|
|
18
|
+
Full threat model docs, UI DSL, OpenAPI bodies.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ADR-001 — Docs hub uses arc42 TOC over flat C4 folders
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| Status | accepted |
|
|
6
|
+
| Date | 2026-07-15 |
|
|
7
|
+
| Deciders | docs hub |
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
Flat `architecture/{landscape,context,containers,dynamics,deployments}` answered *what* (C4 views) but not *why*. AI-first docs need a stable TOC for narrative chapters (constraints, cross-cutting, quality, risks).
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
|
|
15
|
+
- `architecture/01`…`12` follow **arc42** as TOC.
|
|
16
|
+
- C4 IDs (`LND`/`CTX`/`CTR`/`FLOW`/`DEP`) live **inside** chapters.
|
|
17
|
+
- Product Code (`CMP`/`W`/`API`) stays under `surfaces/`.
|
|
18
|
+
- Journeys use `FLOW-*` + `/journey`; `DYN-*`/`/dynamics` are deprecated aliases.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Migrate pilot content; keep redirect stubs on old paths.
|
|
23
|
+
- Skills: Layer-1 chapter router later; Layer-2 `/journey` now.
|
|
24
|
+
- Deployment chapter remains optional/stub by default.
|
|
25
|
+
|
|
26
|
+
## Related
|
|
27
|
+
|
|
28
|
+
- [Start now](/platform/guide/start-now)
|
|
29
|
+
- [Doc structure](/platform/guide/SYSTEM-DOC-STRUCTURE)
|
|
30
|
+
- [06 Runtime](/architecture/06-runtime/)
|
|
31
|
+
- [FLOW-login](/architecture/06-runtime/journeys/FLOW-login)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 09 — Decisions (ADR)
|
|
2
|
+
|
|
3
|
+
status: active
|
|
4
|
+
|
|
5
|
+
Architecture Decision Records for the **product / system** (not platform handbook process).
|
|
6
|
+
|
|
7
|
+
| ID | Title | Status |
|
|
8
|
+
|----|-------|--------|
|
|
9
|
+
| [ADR-001](./ADR-001-arc42-toc.md) | Docs hub uses arc42 TOC over flat C4 folders | accepted |
|
|
10
|
+
|
|
11
|
+
Former path [`shared/adr`](/shared/adr/) redirects here.
|
|
12
|
+
|
|
13
|
+
Template: `.cursor/extracts/tpl-adr.md`
|