@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,13 @@
|
|
|
1
|
+
# Generated from common-form-validation.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-form-validation
|
|
3
|
+
inherits: admin-crud
|
|
4
|
+
shell:
|
|
5
|
+
tag: "#shell: DataPage"
|
|
6
|
+
overrideCommonPattern: false
|
|
7
|
+
patterns:
|
|
8
|
+
- "#pattern: CRUD"
|
|
9
|
+
zones:
|
|
10
|
+
- id: main
|
|
11
|
+
label: Nội dung chính
|
|
12
|
+
behavior: {}
|
|
13
|
+
actions: []
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Generated from common-form-validation.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-form-validation
|
|
3
|
+
legacyRef:
|
|
4
|
+
module: common/common
|
|
5
|
+
function: common-form-validation
|
|
6
|
+
slice: slices.common-form-validation
|
|
7
|
+
behaviors: []
|
|
8
|
+
fields: []
|
|
9
|
+
ui: []
|
|
10
|
+
evidence: []
|
|
11
|
+
refs: {}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated from common-form-validation.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-form-validation
|
|
3
|
+
title: Common form validation
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn vị trí, copy và state validation cho form admin portal.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
fieldErrors:
|
|
14
|
+
position: ngay dưới field/input liên quan
|
|
15
|
+
style: text destructive, cỡ nhỏ, không dùng alert global cho lỗi field đơn lẻ
|
|
16
|
+
testId: "{module}-{field}-error"
|
|
17
|
+
globalErrors:
|
|
18
|
+
position: trên form/card hoặc gần submit group
|
|
19
|
+
useFor:
|
|
20
|
+
- lỗi file import
|
|
21
|
+
- lỗi server không map được field
|
|
22
|
+
- timeout/expired session của flow import/preview
|
|
23
|
+
testId: "{module}-error-alert"
|
|
24
|
+
requiredMarker:
|
|
25
|
+
default: optional
|
|
26
|
+
whenUsed: dấu `*` đỏ cạnh label, không thêm text dài.
|
|
27
|
+
pendingState:
|
|
28
|
+
submitDisabled: true
|
|
29
|
+
labelCanChange: true
|
|
30
|
+
fieldsDisabled: chỉ khi action cần lock form để tránh double submit
|
|
31
|
+
copy:
|
|
32
|
+
source: Ưu tiên message Laravel ja/validation.php khi đã có legacy/API source.
|
|
33
|
+
language: Japanese UI copy.
|
|
34
|
+
acceptance:
|
|
35
|
+
- Field validation không gom hết lên đầu nếu field cụ thể đã xác định được.
|
|
36
|
+
- File/import/global validation được phép dùng alert trên card.
|
|
37
|
+
- Error testId đủ để E2E assert message quan trọng.
|
package/templates/project-skeleton/surfaces/common/yaml/import-csv/common-import-csv.bundle.yaml
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
schema: portal-feature-bundle/v1
|
|
2
|
+
id: common-import-csv
|
|
3
|
+
title: Common CSV import flow
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn flow CSV upload, validate, preview, store và sample download.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
spec:
|
|
14
|
+
routes:
|
|
15
|
+
upload: /{module}/import
|
|
16
|
+
validateApi: POST /{module}/import/validate
|
|
17
|
+
preview: /{module}/import/preview/{uuid}
|
|
18
|
+
storeApi: POST /{module}/import/store/{uuid}
|
|
19
|
+
flow:
|
|
20
|
+
- Upload page tự render form bằng SPA, không dùng API init page.
|
|
21
|
+
- Validate API nhận file multipart, parse/validate và trả uuid/preview URL.
|
|
22
|
+
- Preview page đọc data từ cache/session import qua uuid.
|
|
23
|
+
- Store là mutation nên API mới dùng POST, dù legacy có thể dùng GET.
|
|
24
|
+
- Sample CSV là endpoint download rõ nghĩa.
|
|
25
|
+
ui:
|
|
26
|
+
uploadLayout:
|
|
27
|
+
- Card phẳng, bên trái nếu legacy page là import nhỏ.
|
|
28
|
+
- Field file có label rõ và accept đúng extension.
|
|
29
|
+
- Button import primary/complete đứng trước sample download.
|
|
30
|
+
previewLayout:
|
|
31
|
+
- Action group trên table: list link, total readonly, import confirm.
|
|
32
|
+
- Duplicate old row marker `-`, màu `#FFECEB`.
|
|
33
|
+
- New row marker `+`, màu `#DCFFF1`.
|
|
34
|
+
errors:
|
|
35
|
+
invalidFile: hiển thị alert trên upload card.
|
|
36
|
+
expiredPreview: 操作がタイムアウトしたか、CSVファイルが無効です。再度お試しください。
|
|
37
|
+
confirm:
|
|
38
|
+
duplicateOverwrite: dùng common confirm dialog với copy `重複するデータが存在し、それは上書きされます。続行しますか?`
|
|
39
|
+
testIds:
|
|
40
|
+
fileInput: "{module}-csv-file-input"
|
|
41
|
+
uploadSubmit: "{module}-import-submit-btn"
|
|
42
|
+
sampleDownload: "{module}-sample-download-btn"
|
|
43
|
+
previewTable: "{module}-preview-table"
|
|
44
|
+
acceptance:
|
|
45
|
+
- Mock/prototype parse ở API response boundary, không fake route render cũ.
|
|
46
|
+
- Preview có đủ no-duplicate, duplicate và expired states.
|
|
47
|
+
legacy:
|
|
48
|
+
legacyRef:
|
|
49
|
+
module: common/common
|
|
50
|
+
function: common-import-csv
|
|
51
|
+
slice: slices.common-import-csv
|
|
52
|
+
behaviors: []
|
|
53
|
+
fields: []
|
|
54
|
+
ui: []
|
|
55
|
+
evidence: []
|
|
56
|
+
refs: {}
|
|
57
|
+
design:
|
|
58
|
+
inherits: admin-crud
|
|
59
|
+
shell:
|
|
60
|
+
tag: "#shell: DataPage"
|
|
61
|
+
overrideCommonPattern: false
|
|
62
|
+
patterns:
|
|
63
|
+
- "#pattern: CRUD"
|
|
64
|
+
zones:
|
|
65
|
+
- id: main
|
|
66
|
+
label: Nội dung chính
|
|
67
|
+
behavior: {}
|
|
68
|
+
actions: []
|
|
69
|
+
review:
|
|
70
|
+
summary: Chuẩn flow CSV upload, validate, preview, store và sample download.
|
|
71
|
+
layoutNotes: []
|
|
72
|
+
_meta:
|
|
73
|
+
generatedBy: archived-legacy-converter
|
|
74
|
+
sourceRevision: null
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from common-import-csv.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-import-csv
|
|
3
|
+
inherits: admin-crud
|
|
4
|
+
shell:
|
|
5
|
+
tag: "#shell: DataPage"
|
|
6
|
+
overrideCommonPattern: false
|
|
7
|
+
patterns:
|
|
8
|
+
- "#pattern: CRUD"
|
|
9
|
+
zones:
|
|
10
|
+
- id: main
|
|
11
|
+
label: Nội dung chính
|
|
12
|
+
behavior: {}
|
|
13
|
+
actions: []
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Generated from common-import-csv.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-import-csv
|
|
3
|
+
title: Common CSV import flow
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn flow CSV upload, validate, preview, store và sample download.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
routes:
|
|
14
|
+
upload: /{module}/import
|
|
15
|
+
validateApi: POST /{module}/import/validate
|
|
16
|
+
preview: /{module}/import/preview/{uuid}
|
|
17
|
+
storeApi: POST /{module}/import/store/{uuid}
|
|
18
|
+
flow:
|
|
19
|
+
- Upload page tự render form bằng SPA, không dùng API init page.
|
|
20
|
+
- Validate API nhận file multipart, parse/validate và trả uuid/preview URL.
|
|
21
|
+
- Preview page đọc data từ cache/session import qua uuid.
|
|
22
|
+
- Store là mutation nên API mới dùng POST, dù legacy có thể dùng GET.
|
|
23
|
+
- Sample CSV là endpoint download rõ nghĩa.
|
|
24
|
+
ui:
|
|
25
|
+
uploadLayout:
|
|
26
|
+
- Card phẳng, bên trái nếu legacy page là import nhỏ.
|
|
27
|
+
- Field file có label rõ và accept đúng extension.
|
|
28
|
+
- Button import primary/complete đứng trước sample download.
|
|
29
|
+
previewLayout:
|
|
30
|
+
- Action group trên table: list link, total readonly, import confirm.
|
|
31
|
+
- Duplicate old row marker `-`, màu `#FFECEB`.
|
|
32
|
+
- New row marker `+`, màu `#DCFFF1`.
|
|
33
|
+
errors:
|
|
34
|
+
invalidFile: hiển thị alert trên upload card.
|
|
35
|
+
expiredPreview: 操作がタイムアウトしたか、CSVファイルが無効です。再度お試しください。
|
|
36
|
+
confirm:
|
|
37
|
+
duplicateOverwrite: dùng common confirm dialog với copy `重複するデータが存在し、それは上書きされます。続行しますか?`
|
|
38
|
+
testIds:
|
|
39
|
+
fileInput: "{module}-csv-file-input"
|
|
40
|
+
uploadSubmit: "{module}-import-submit-btn"
|
|
41
|
+
sampleDownload: "{module}-sample-download-btn"
|
|
42
|
+
previewTable: "{module}-preview-table"
|
|
43
|
+
acceptance:
|
|
44
|
+
- Mock/prototype parse ở API response boundary, không fake route render cũ.
|
|
45
|
+
- Preview có đủ no-duplicate, duplicate và expired states.
|
package/templates/project-skeleton/surfaces/common/yaml/list-page/common-list-page.bundle.yaml
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
schema: portal-feature-bundle/v1
|
|
2
|
+
id: common-list-page
|
|
3
|
+
title: Common list page shell
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn layout chung cho các page danh sách trong admin portal, ưu tiên giao diện phẳng shadcn và giữ các phần legacy lặp lại có giá trị sử dụng.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
spec:
|
|
14
|
+
scope:
|
|
15
|
+
appliesTo:
|
|
16
|
+
- admin list page
|
|
17
|
+
- search/filter table page
|
|
18
|
+
- import/report list có pagination
|
|
19
|
+
excludes:
|
|
20
|
+
- report preview đặc thù
|
|
21
|
+
- dashboard block
|
|
22
|
+
- form detail/edit page
|
|
23
|
+
principles:
|
|
24
|
+
- UI phẳng: dùng border, background nhẹ, spacing rõ; không dùng gradient, shadow nặng, hiệu ứng 3D.
|
|
25
|
+
- Legacy evidence là input để nhận diện pattern lặp lại; không copy các page legacy làm tùy hứng nếu trái common spec.
|
|
26
|
+
- Page spec riêng chỉ mô tả phần khác biệt; mọi phần list/search/toolbar/table/pagination mặc định dùng common specs.
|
|
27
|
+
layout:
|
|
28
|
+
shell:
|
|
29
|
+
- Dashboard layout hiện tại là outer shell; không dựng lại legacy theme wrapper.
|
|
30
|
+
- Content list dùng một khối phẳng có border nhẹ và background `bg-card` hoặc `bg-white`.
|
|
31
|
+
- Search/filter nằm phía trên table.
|
|
32
|
+
- Toolbar action nằm dưới search/filter và phía trên table.
|
|
33
|
+
- Table body nằm trong vùng trắng, có horizontal overflow khi nhiều cột.
|
|
34
|
+
- Pagination nằm dưới table và căn giữa.
|
|
35
|
+
density:
|
|
36
|
+
default: compact
|
|
37
|
+
rowHeight: 40-48px cho table thường
|
|
38
|
+
cellPadding: px-3 py-2
|
|
39
|
+
spacing: 4 hoặc 6 theo scale Tailwind, tránh khoảng trắng quá lớn trên list nhiều dữ liệu.
|
|
40
|
+
composition:
|
|
41
|
+
preferredComponents:
|
|
42
|
+
- DataListPage
|
|
43
|
+
- MoSearchForm
|
|
44
|
+
- MoDataTable
|
|
45
|
+
- MoPaginationBar
|
|
46
|
+
overridePolicy:
|
|
47
|
+
- Chỉ tạo organism riêng khi `DataListPage` không thể giữ đúng layout của spec hoặc page có table/report đặc thù.
|
|
48
|
+
- Nếu override common pattern, spec page phải ghi `overrideCommonPattern: true` và lý do.
|
|
49
|
+
testIds:
|
|
50
|
+
required:
|
|
51
|
+
page: "{module}-page"
|
|
52
|
+
searchForm: "{module}-search-form"
|
|
53
|
+
toolbar: "{module}-toolbar"
|
|
54
|
+
table: "{module}-table"
|
|
55
|
+
pagination: "{module}-pagination"
|
|
56
|
+
acceptance:
|
|
57
|
+
- List page không dùng card/shadow lồng nhau gây cảm giác 3D.
|
|
58
|
+
- Search, toolbar, table, pagination có vị trí nhất quán trên mọi page list.
|
|
59
|
+
- Page nhiều cột không làm vỡ layout; table scroll ngang và text cell theo common overflow spec.
|
|
60
|
+
legacy:
|
|
61
|
+
legacyRef:
|
|
62
|
+
module: common/common
|
|
63
|
+
function: common-list-page
|
|
64
|
+
slice: slices.common-list-page
|
|
65
|
+
behaviors: []
|
|
66
|
+
fields: []
|
|
67
|
+
ui: []
|
|
68
|
+
evidence:
|
|
69
|
+
- file: mairy-backend/resources/views/admin/hotel/index.blade.php
|
|
70
|
+
- file: mairy-backend/resources/views/admin/chain/index.blade.php
|
|
71
|
+
- file: mairy-backend/resources/views/admin/review_performance/index.blade.php
|
|
72
|
+
refs: {}
|
|
73
|
+
design:
|
|
74
|
+
inherits: admin-crud
|
|
75
|
+
shell:
|
|
76
|
+
tag: "#shell: DataPage"
|
|
77
|
+
overrideCommonPattern: false
|
|
78
|
+
patterns:
|
|
79
|
+
- "#pattern: CRUD"
|
|
80
|
+
zones:
|
|
81
|
+
- id: main
|
|
82
|
+
label: Nội dung chính
|
|
83
|
+
behavior: {}
|
|
84
|
+
actions: []
|
|
85
|
+
review:
|
|
86
|
+
summary: Chuẩn layout chung cho các page danh sách trong admin portal, ưu tiên giao diện phẳng shadcn và giữ các phần legacy lặp lại có giá trị sử dụng.
|
|
87
|
+
layoutNotes: []
|
|
88
|
+
_meta:
|
|
89
|
+
generatedBy: archived-legacy-converter
|
|
90
|
+
sourceRevision: null
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from common-list-page.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-page
|
|
3
|
+
inherits: admin-crud
|
|
4
|
+
shell:
|
|
5
|
+
tag: "#shell: DataPage"
|
|
6
|
+
overrideCommonPattern: false
|
|
7
|
+
patterns:
|
|
8
|
+
- "#pattern: CRUD"
|
|
9
|
+
zones:
|
|
10
|
+
- id: main
|
|
11
|
+
label: Nội dung chính
|
|
12
|
+
behavior: {}
|
|
13
|
+
actions: []
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Generated from common-list-page.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-page
|
|
3
|
+
legacyRef:
|
|
4
|
+
module: common/common
|
|
5
|
+
function: common-list-page
|
|
6
|
+
slice: slices.common-list-page
|
|
7
|
+
behaviors: []
|
|
8
|
+
fields: []
|
|
9
|
+
ui: []
|
|
10
|
+
evidence:
|
|
11
|
+
- file: mairy-backend/resources/views/admin/hotel/index.blade.php
|
|
12
|
+
- file: mairy-backend/resources/views/admin/chain/index.blade.php
|
|
13
|
+
- file: mairy-backend/resources/views/admin/review_performance/index.blade.php
|
|
14
|
+
refs: {}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Generated from common-list-page.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-page
|
|
3
|
+
title: Common list page shell
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn layout chung cho các page danh sách trong admin portal, ưu tiên giao diện phẳng shadcn và giữ các phần legacy lặp lại có giá trị sử dụng.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
scope:
|
|
14
|
+
appliesTo:
|
|
15
|
+
- admin list page
|
|
16
|
+
- search/filter table page
|
|
17
|
+
- import/report list có pagination
|
|
18
|
+
excludes:
|
|
19
|
+
- report preview đặc thù
|
|
20
|
+
- dashboard block
|
|
21
|
+
- form detail/edit page
|
|
22
|
+
principles:
|
|
23
|
+
- UI phẳng: dùng border, background nhẹ, spacing rõ; không dùng gradient, shadow nặng, hiệu ứng 3D.
|
|
24
|
+
- Legacy evidence là input để nhận diện pattern lặp lại; không copy các page legacy làm tùy hứng nếu trái common spec.
|
|
25
|
+
- Page spec riêng chỉ mô tả phần khác biệt; mọi phần list/search/toolbar/table/pagination mặc định dùng common specs.
|
|
26
|
+
layout:
|
|
27
|
+
shell:
|
|
28
|
+
- Dashboard layout hiện tại là outer shell; không dựng lại legacy theme wrapper.
|
|
29
|
+
- Content list dùng một khối phẳng có border nhẹ và background `bg-card` hoặc `bg-white`.
|
|
30
|
+
- Search/filter nằm phía trên table.
|
|
31
|
+
- Toolbar action nằm dưới search/filter và phía trên table.
|
|
32
|
+
- Table body nằm trong vùng trắng, có horizontal overflow khi nhiều cột.
|
|
33
|
+
- Pagination nằm dưới table và căn giữa.
|
|
34
|
+
density:
|
|
35
|
+
default: compact
|
|
36
|
+
rowHeight: 40-48px cho table thường
|
|
37
|
+
cellPadding: px-3 py-2
|
|
38
|
+
spacing: 4 hoặc 6 theo scale Tailwind, tránh khoảng trắng quá lớn trên list nhiều dữ liệu.
|
|
39
|
+
composition:
|
|
40
|
+
preferredComponents:
|
|
41
|
+
- DataListPage
|
|
42
|
+
- MoSearchForm
|
|
43
|
+
- MoDataTable
|
|
44
|
+
- MoPaginationBar
|
|
45
|
+
overridePolicy:
|
|
46
|
+
- Chỉ tạo organism riêng khi `DataListPage` không thể giữ đúng layout của spec hoặc page có table/report đặc thù.
|
|
47
|
+
- Nếu override common pattern, spec page phải ghi `overrideCommonPattern: true` và lý do.
|
|
48
|
+
testIds:
|
|
49
|
+
required:
|
|
50
|
+
page: "{module}-page"
|
|
51
|
+
searchForm: "{module}-search-form"
|
|
52
|
+
toolbar: "{module}-toolbar"
|
|
53
|
+
table: "{module}-table"
|
|
54
|
+
pagination: "{module}-pagination"
|
|
55
|
+
acceptance:
|
|
56
|
+
- List page không dùng card/shadow lồng nhau gây cảm giác 3D.
|
|
57
|
+
- Search, toolbar, table, pagination có vị trí nhất quán trên mọi page list.
|
|
58
|
+
- Page nhiều cột không làm vỡ layout; table scroll ngang và text cell theo common overflow spec.
|
package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/common-list-toolbar.bundle.yaml
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
schema: portal-feature-bundle/v1
|
|
2
|
+
id: common-list-toolbar
|
|
3
|
+
title: Common list toolbar
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn toolbar action của list page, gồm total readonly button, action chính/phụ, bulk action và per-page control.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
spec:
|
|
14
|
+
layout:
|
|
15
|
+
position: below search filter, above table
|
|
16
|
+
style:
|
|
17
|
+
- Nằm cùng nền list block, không bọc card/nền trắng riêng.
|
|
18
|
+
- Dùng flex wrap, gap nhỏ, per-page đẩy sang phải khi đủ rộng.
|
|
19
|
+
- Thiết kế phẳng, không shadow hoặc gradient.
|
|
20
|
+
items:
|
|
21
|
+
total:
|
|
22
|
+
text: 合計 {count}
|
|
23
|
+
variant: complete
|
|
24
|
+
color: "#48b0f7"
|
|
25
|
+
behavior: readonly button-style, không clickable
|
|
26
|
+
badgePolicy: Không bọc số bằng badge bo riêng; số nằm cùng text/nền button.
|
|
27
|
+
testId: "{module}-total-btn"
|
|
28
|
+
primaryAction:
|
|
29
|
+
examples:
|
|
30
|
+
- 新規作成
|
|
31
|
+
- CSVアップロード
|
|
32
|
+
- インポート
|
|
33
|
+
variant: complete
|
|
34
|
+
icon: required khi action rõ nghĩa và có icon phù hợp
|
|
35
|
+
bulkAction:
|
|
36
|
+
position: after primary actions
|
|
37
|
+
disabledWhen: no selection
|
|
38
|
+
destructive: true nếu là delete
|
|
39
|
+
perPage:
|
|
40
|
+
position: right
|
|
41
|
+
labels:
|
|
42
|
+
before: 表示
|
|
43
|
+
after: 件 / ページ
|
|
44
|
+
pageSummary:
|
|
45
|
+
text: "{currentPage} / {totalPages}"
|
|
46
|
+
position: cạnh per-page select trong toolbar/header table góc phải
|
|
47
|
+
note: Đây là số trang hiện tại/tổng số trang, không đặt dưới pagination controls.
|
|
48
|
+
options:
|
|
49
|
+
- 20
|
|
50
|
+
- 40
|
|
51
|
+
- 80
|
|
52
|
+
- 100
|
|
53
|
+
testId: "{module}-per-page-select"
|
|
54
|
+
acceptance:
|
|
55
|
+
- Toolbar không trộn chung với search/clear button.
|
|
56
|
+
- Nút `合計` luôn đứng trước action chính nếu page có tổng số bản ghi.
|
|
57
|
+
- Per-page và page summary nằm trong toolbar/header table góc phải, không nằm dưới table.
|
|
58
|
+
legacy:
|
|
59
|
+
legacyRef:
|
|
60
|
+
module: common/common
|
|
61
|
+
function: common-list-toolbar
|
|
62
|
+
slice: slices.common-list-toolbar
|
|
63
|
+
behaviors: []
|
|
64
|
+
fields: []
|
|
65
|
+
ui: []
|
|
66
|
+
evidence:
|
|
67
|
+
- file: mairy-backend/resources/views/common/show_perpage.blade.php
|
|
68
|
+
refs: {}
|
|
69
|
+
design:
|
|
70
|
+
inherits: admin-crud
|
|
71
|
+
shell:
|
|
72
|
+
tag: "#shell: DataPage"
|
|
73
|
+
overrideCommonPattern: false
|
|
74
|
+
patterns:
|
|
75
|
+
- "#pattern: CRUD"
|
|
76
|
+
zones:
|
|
77
|
+
- id: main
|
|
78
|
+
label: Nội dung chính
|
|
79
|
+
behavior: {}
|
|
80
|
+
actions: []
|
|
81
|
+
review:
|
|
82
|
+
summary: Chuẩn toolbar action của list page, gồm total readonly button, action chính/phụ, bulk action và per-page control.
|
|
83
|
+
layoutNotes: []
|
|
84
|
+
_meta:
|
|
85
|
+
generatedBy: archived-legacy-converter
|
|
86
|
+
sourceRevision: null
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from common-list-toolbar.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-toolbar
|
|
3
|
+
inherits: admin-crud
|
|
4
|
+
shell:
|
|
5
|
+
tag: "#shell: DataPage"
|
|
6
|
+
overrideCommonPattern: false
|
|
7
|
+
patterns:
|
|
8
|
+
- "#pattern: CRUD"
|
|
9
|
+
zones:
|
|
10
|
+
- id: main
|
|
11
|
+
label: Nội dung chính
|
|
12
|
+
behavior: {}
|
|
13
|
+
actions: []
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Generated from common-list-toolbar.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-toolbar
|
|
3
|
+
legacyRef:
|
|
4
|
+
module: common/common
|
|
5
|
+
function: common-list-toolbar
|
|
6
|
+
slice: slices.common-list-toolbar
|
|
7
|
+
behaviors: []
|
|
8
|
+
fields: []
|
|
9
|
+
ui: []
|
|
10
|
+
evidence:
|
|
11
|
+
- file: mairy-backend/resources/views/common/show_perpage.blade.php
|
|
12
|
+
refs: {}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Generated from common-list-toolbar.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-list-toolbar
|
|
3
|
+
title: Common list toolbar
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn toolbar action của list page, gồm total readonly button, action chính/phụ, bulk action và per-page control.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
layout:
|
|
14
|
+
position: below search filter, above table
|
|
15
|
+
style:
|
|
16
|
+
- Nằm cùng nền list block, không bọc card/nền trắng riêng.
|
|
17
|
+
- Dùng flex wrap, gap nhỏ, per-page đẩy sang phải khi đủ rộng.
|
|
18
|
+
- Thiết kế phẳng, không shadow hoặc gradient.
|
|
19
|
+
items:
|
|
20
|
+
total:
|
|
21
|
+
text: 合計 {count}
|
|
22
|
+
variant: complete
|
|
23
|
+
color: "#48b0f7"
|
|
24
|
+
behavior: readonly button-style, không clickable
|
|
25
|
+
badgePolicy: Không bọc số bằng badge bo riêng; số nằm cùng text/nền button.
|
|
26
|
+
testId: "{module}-total-btn"
|
|
27
|
+
primaryAction:
|
|
28
|
+
examples:
|
|
29
|
+
- 新規作成
|
|
30
|
+
- CSVアップロード
|
|
31
|
+
- インポート
|
|
32
|
+
variant: complete
|
|
33
|
+
icon: required khi action rõ nghĩa và có icon phù hợp
|
|
34
|
+
bulkAction:
|
|
35
|
+
position: after primary actions
|
|
36
|
+
disabledWhen: no selection
|
|
37
|
+
destructive: true nếu là delete
|
|
38
|
+
perPage:
|
|
39
|
+
position: right
|
|
40
|
+
labels:
|
|
41
|
+
before: 表示
|
|
42
|
+
after: 件 / ページ
|
|
43
|
+
pageSummary:
|
|
44
|
+
text: "{currentPage} / {totalPages}"
|
|
45
|
+
position: cạnh per-page select trong toolbar/header table góc phải
|
|
46
|
+
note: Đây là số trang hiện tại/tổng số trang, không đặt dưới pagination controls.
|
|
47
|
+
options:
|
|
48
|
+
- 20
|
|
49
|
+
- 40
|
|
50
|
+
- 80
|
|
51
|
+
- 100
|
|
52
|
+
testId: "{module}-per-page-select"
|
|
53
|
+
acceptance:
|
|
54
|
+
- Toolbar không trộn chung với search/clear button.
|
|
55
|
+
- Nút `合計` luôn đứng trước action chính nếu page có tổng số bản ghi.
|
|
56
|
+
- Per-page và page summary nằm trong toolbar/header table góc phải, không nằm dưới table.
|
package/templates/project-skeleton/surfaces/common/yaml/navigation/common-navigation.bundle.yaml
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
schema: portal-feature-bundle/v1
|
|
2
|
+
id: common-navigation
|
|
3
|
+
title: Common navigation and page header
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Chuẩn sidebar, page title, breadcrumb và route trong admin portal prototype.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
spec:
|
|
14
|
+
sidebar:
|
|
15
|
+
behavior:
|
|
16
|
+
- Parent menu click để open/close child.
|
|
17
|
+
- Active child route mở parent tương ứng.
|
|
18
|
+
- Prototype chỉ hiển thị feature đã migrate hoặc đang design.
|
|
19
|
+
routePrefix:
|
|
20
|
+
legacyAdminPrefix: /admin
|
|
21
|
+
portalRoute: không dùng `/admin` prefix trong frontend route.
|
|
22
|
+
testIds:
|
|
23
|
+
navItem: nav-{id}
|
|
24
|
+
pageHeader:
|
|
25
|
+
title:
|
|
26
|
+
source: route meta hoặc component page header.
|
|
27
|
+
testId: "{module}-page-title"
|
|
28
|
+
breadcrumb:
|
|
29
|
+
default: optional trong prototype; nếu dùng phải có testId theo docs/operational/E2E-TESTIDS.md.
|
|
30
|
+
actions:
|
|
31
|
+
- Header actions chỉ dùng cho page-level action thật sự.
|
|
32
|
+
- Nếu legacy/spec yêu cầu group_action trong card/form thì không đưa action lên page header.
|
|
33
|
+
dynamicRoutes:
|
|
34
|
+
detail: pages/{module}/[id]/index.vue
|
|
35
|
+
edit: pages/{module}/[id]/edit.vue
|
|
36
|
+
child: pages/{module}/[id]/{child}.vue
|
|
37
|
+
acceptance:
|
|
38
|
+
- Sidebar không chứa route chưa làm prototype.
|
|
39
|
+
- Page title rõ và nhất quán.
|
|
40
|
+
- Dynamic route không dùng file đóng `{module}/[id].vue`.
|
|
41
|
+
legacy:
|
|
42
|
+
legacyRef:
|
|
43
|
+
module: common/common
|
|
44
|
+
function: common-navigation
|
|
45
|
+
slice: slices.common-navigation
|
|
46
|
+
behaviors: []
|
|
47
|
+
fields: []
|
|
48
|
+
ui: []
|
|
49
|
+
evidence: []
|
|
50
|
+
refs: {}
|
|
51
|
+
design:
|
|
52
|
+
inherits: admin-crud
|
|
53
|
+
shell:
|
|
54
|
+
tag: "#shell: DataPage"
|
|
55
|
+
overrideCommonPattern: false
|
|
56
|
+
patterns:
|
|
57
|
+
- "#pattern: CRUD"
|
|
58
|
+
zones:
|
|
59
|
+
- id: main
|
|
60
|
+
label: Nội dung chính
|
|
61
|
+
behavior: {}
|
|
62
|
+
actions: []
|
|
63
|
+
review:
|
|
64
|
+
summary: Chuẩn sidebar, page title, breadcrumb và route trong admin portal prototype.
|
|
65
|
+
layoutNotes: []
|
|
66
|
+
_meta:
|
|
67
|
+
generatedBy: archived-legacy-converter
|
|
68
|
+
sourceRevision: null
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Generated from common-navigation.bundle.yaml — pnpm spec:split
|
|
2
|
+
id: common-navigation
|
|
3
|
+
inherits: admin-crud
|
|
4
|
+
shell:
|
|
5
|
+
tag: "#shell: DataPage"
|
|
6
|
+
overrideCommonPattern: false
|
|
7
|
+
patterns:
|
|
8
|
+
- "#pattern: CRUD"
|
|
9
|
+
zones:
|
|
10
|
+
- id: main
|
|
11
|
+
label: Nội dung chính
|
|
12
|
+
behavior: {}
|
|
13
|
+
actions: []
|