@tailor-platform/erp-kit 0.2.2 → 0.4.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/CHANGELOG.md +33 -0
- package/README.md +193 -69
- package/dist/cli.mjs +1038 -398
- package/package.json +7 -5
- package/skills/erp-kit-app-1-requirements/SKILL.md +27 -17
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +5 -4
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +10 -1
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +10 -1
- package/skills/erp-kit-app-3-plan/SKILL.md +31 -34
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +22 -36
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
- package/skills/erp-kit-app-4-plan-review/SKILL.md +1 -10
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +10 -19
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +5 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
- package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
- package/skills/erp-kit-app-shared/SKILL.md +15 -0
- package/skills/erp-kit-app-shared/references/link-format-reference.md +13 -0
- package/skills/erp-kit-app-shared/references/naming-conventions.md +21 -0
- package/skills/erp-kit-app-shared/references/resolver-classification.md +23 -0
- package/skills/erp-kit-app-shared/references/schema-constraints.md +25 -0
- package/skills/erp-kit-module-1-requirements/SKILL.md +7 -13
- package/skills/erp-kit-module-1-requirements/references/feature-doc.md +1 -1
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +21 -5
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +6 -8
- package/skills/erp-kit-module-3-plan/references/naming.md +15 -1
- package/skills/erp-kit-module-4-plan-review/SKILL.md +21 -5
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
- package/skills/erp-kit-module-5-impl/SKILL.md +12 -10
- package/skills/erp-kit-module-5-impl/references/generated-code.md +2 -2
- package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
- package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/errors.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
- package/skills/erp-kit-module-shared/SKILL.md +4 -0
- package/skills/erp-kit-module-shared/references/errors.md +1 -1
- package/skills/erp-kit-module-shared/references/queries.md +1 -1
- package/skills/erp-kit-module-shared/references/structure.md +1 -1
- package/skills/erp-kit-update/SKILL.md +2 -2
- package/src/commands/app/index.ts +75 -31
- package/src/commands/check.test.ts +1 -1
- package/src/commands/check.ts +2 -35
- package/src/commands/doc/index.ts +83 -0
- package/src/commands/doc/module.test.ts +119 -0
- package/src/commands/doc/module.ts +114 -0
- package/src/commands/doc/modules.test.ts +103 -0
- package/src/commands/doc/modules.ts +98 -0
- package/src/commands/doc/search.test.ts +94 -0
- package/src/commands/doc/search.ts +111 -0
- package/src/commands/generate-doc.test.ts +63 -0
- package/src/commands/generate-doc.ts +105 -0
- package/src/commands/index.ts +20 -8
- package/src/commands/init-module.test.ts +43 -0
- package/src/commands/init-module.ts +74 -0
- package/src/commands/lib/command-result.ts +30 -0
- package/src/commands/lib/discovery.test.ts +74 -0
- package/src/commands/lib/discovery.ts +106 -0
- package/src/commands/lib/paths.ts +22 -0
- package/src/commands/lib/sync-check-source.test.ts +197 -0
- package/src/commands/lib/sync-check-source.ts +100 -0
- package/src/commands/lib/sync-check-tests.test.ts +178 -0
- package/src/commands/lib/sync-check-tests.ts +69 -0
- package/src/commands/mock/index.ts +11 -6
- package/src/commands/module/generate.ts +39 -14
- package/src/commands/module/index.ts +31 -45
- package/src/commands/parse-doc-test-cases.ts +13 -2
- package/src/commands/sync-check.test.ts +6 -364
- package/src/commands/sync-check.ts +7 -251
- package/src/generator/generate-app-code.test.ts +121 -0
- package/src/generator/generate-app-code.ts +51 -0
- package/src/{commands/scaffold.test.ts → generator/generate-code-boilerplate.test.ts} +19 -89
- package/src/generator/generate-code.test.ts +57 -6
- package/src/generator/generate-code.ts +40 -157
- package/src/generator/generate-errors.ts +34 -0
- package/src/generator/generate-permissions.ts +12 -0
- package/src/generator/generate-shells.ts +28 -0
- package/src/generator/generate-stubs.ts +31 -0
- package/src/generator/parse-resolver-doc.test.ts +89 -0
- package/src/generator/parse-resolver-doc.ts +125 -0
- package/src/generator/scaffold.ts +57 -0
- package/src/generator/stub-templates.test.ts +55 -0
- package/src/generator/stub-templates.ts +145 -0
- package/src/integration.test.ts +2 -2
- package/src/modules/audit/README.md +46 -0
- package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
- package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
- package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
- package/src/modules/audit/command/createAuditPolicy.ts +131 -0
- package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
- package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
- package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
- package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
- package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
- package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
- package/src/modules/audit/command/logAuditEvent.ts +357 -0
- package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
- package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
- package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
- package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
- package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
- package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
- package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
- package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
- package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
- package/src/modules/audit/db/auditEntry.ts +47 -0
- package/src/modules/audit/db/auditPolicy.ts +33 -0
- package/src/modules/audit/db/auditableEntity.ts +22 -0
- package/src/modules/audit/db/changeDetail.ts +28 -0
- package/src/modules/audit/db/policyFieldRule.ts +23 -0
- package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
- package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
- package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
- package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
- package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
- package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
- package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
- package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
- package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
- package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
- package/src/modules/audit/docs/models/AuditEntry.md +55 -0
- package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
- package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
- package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
- package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
- package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
- package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
- package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
- package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
- package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
- package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
- package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
- package/src/modules/audit/index.ts +2 -0
- package/src/modules/audit/lib/_db_deps.ts +13 -0
- package/src/modules/audit/lib/errors.generated.ts +120 -0
- package/src/modules/audit/lib/permissions.generated.ts +14 -0
- package/src/modules/audit/lib/types.ts +28 -0
- package/src/modules/audit/module.ts +57 -0
- package/src/modules/audit/permissions.ts +39 -0
- package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
- package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
- package/src/modules/audit/query/getAuditEntry.ts +36 -0
- package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
- package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
- package/src/modules/audit/query/getAuditPolicy.ts +42 -0
- package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
- package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
- package/src/modules/audit/query/getAuditSummary.ts +164 -0
- package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
- package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
- package/src/modules/audit/query/getChangeDetails.ts +42 -0
- package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
- package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
- package/src/modules/audit/query/listAuditPolicies.ts +100 -0
- package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
- package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
- package/src/modules/audit/query/searchAuditEntries.ts +121 -0
- package/src/modules/audit/tailor.config.ts +13 -0
- package/src/modules/audit/tailor.d.ts +13 -0
- package/src/modules/audit/testing/fixtures.ts +215 -0
- package/src/modules/business-partner/README.md +60 -0
- package/src/modules/business-partner/command/.gitkeep +0 -0
- package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/activatePartner.ts +45 -0
- package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
- package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
- package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/createContactPerson.ts +98 -0
- package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartner.test.ts +179 -0
- package/src/modules/business-partner/command/createPartner.ts +83 -0
- package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
- package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
- package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
- package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
- package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
- package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
- package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
- package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
- package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
- package/src/modules/business-partner/command/deletePartner.ts +46 -0
- package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
- package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
- package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
- package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
- package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
- package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
- package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
- package/src/modules/business-partner/command/updatePartner.ts +76 -0
- package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
- package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
- package/src/modules/business-partner/db/.gitkeep +0 -0
- package/src/modules/business-partner/db/businessPartner.ts +59 -0
- package/src/modules/business-partner/db/contactPerson.ts +49 -0
- package/src/modules/business-partner/db/partnerAddress.ts +45 -0
- package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
- package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
- package/src/modules/business-partner/db/partnerRole.ts +43 -0
- package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
- package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
- package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
- package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
- package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
- package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
- package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
- package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
- package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
- package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
- package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
- package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
- package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
- package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
- package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
- package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
- package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
- package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
- package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
- package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
- package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
- package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
- package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
- package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
- package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
- package/src/modules/business-partner/executor/.gitkeep +0 -0
- package/src/modules/business-partner/generated/.gitkeep +0 -0
- package/src/modules/business-partner/generated/enums.ts +60 -0
- package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
- package/src/modules/business-partner/index.ts +2 -0
- package/src/modules/business-partner/lib/_db_deps.ts +17 -0
- package/src/modules/business-partner/lib/errors.generated.ts +172 -0
- package/src/modules/business-partner/lib/errors.ts +2 -0
- package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
- package/src/modules/business-partner/lib/types.ts +53 -0
- package/src/modules/business-partner/module.ts +181 -0
- package/src/modules/business-partner/permissions.ts +3 -0
- package/src/modules/business-partner/query/.gitkeep +0 -0
- package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
- package/src/modules/business-partner/query/getContactPerson.ts +16 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
- package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartner.test.ts +31 -0
- package/src/modules/business-partner/query/getPartner.ts +16 -0
- package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
- package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
- package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
- package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
- package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
- package/src/modules/business-partner/tailor.config.ts +13 -0
- package/src/modules/business-partner/tailor.d.ts +13 -0
- package/src/modules/business-partner/testing/fixtures.ts +204 -0
- package/src/modules/coa-management/README.md +61 -0
- package/src/modules/coa-management/command/.gitkeep +0 -0
- package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
- package/src/modules/coa-management/command/activateAccount.ts +105 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
- package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccount.test.ts +767 -0
- package/src/modules/coa-management/command/createAccount.ts +247 -0
- package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
- package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
- package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
- package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
- package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
- package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
- package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
- package/src/modules/coa-management/command/deleteAccount.ts +103 -0
- package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
- package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
- package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
- package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
- package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
- package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
- package/src/modules/coa-management/command/updateAccount.ts +370 -0
- package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
- package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/db/.gitkeep +0 -0
- package/src/modules/coa-management/db/account.ts +119 -0
- package/src/modules/coa-management/db/accountGroup.ts +57 -0
- package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
- package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
- package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
- package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
- package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
- package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
- package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
- package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
- package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
- package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
- package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
- package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
- package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
- package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
- package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
- package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
- package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
- package/src/modules/coa-management/docs/features/account-management.md +114 -0
- package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
- package/src/modules/coa-management/docs/models/Account.md +84 -0
- package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
- package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
- package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
- package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
- package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
- package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
- package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
- package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
- package/src/modules/coa-management/executor/.gitkeep +0 -0
- package/src/modules/coa-management/generated/.gitkeep +0 -0
- package/src/modules/coa-management/generated/enums.ts +45 -0
- package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
- package/src/modules/coa-management/index.ts +2 -0
- package/src/modules/coa-management/lib/_db_deps.ts +17 -0
- package/src/modules/coa-management/lib/errors.generated.ts +162 -0
- package/src/modules/coa-management/lib/errors.ts +0 -0
- package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
- package/src/modules/coa-management/lib/types.ts +22 -0
- package/src/modules/coa-management/module.ts +136 -0
- package/src/modules/coa-management/permissions.ts +3 -0
- package/src/modules/coa-management/query/.gitkeep +0 -0
- package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
- package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
- package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
- package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccount.test.ts +55 -0
- package/src/modules/coa-management/query/getAccount.ts +25 -0
- package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
- package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
- package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
- package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
- package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
- package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
- package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
- package/src/modules/coa-management/query/listAccounts.ts +82 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
- package/src/modules/coa-management/tailor.config.ts +13 -0
- package/src/modules/coa-management/tailor.d.ts +13 -0
- package/src/modules/coa-management/testing/fixtures.ts +201 -0
- package/src/modules/item-management/README.md +1 -1
- package/src/modules/organization/README.md +57 -0
- package/src/modules/organization/command/.gitkeep +0 -0
- package/src/modules/organization/command/activateCompany.generated.ts +6 -0
- package/src/modules/organization/command/activateCompany.test.ts +184 -0
- package/src/modules/organization/command/activateCompany.ts +92 -0
- package/src/modules/organization/command/createCompany.generated.ts +6 -0
- package/src/modules/organization/command/createCompany.test.ts +156 -0
- package/src/modules/organization/command/createCompany.ts +80 -0
- package/src/modules/organization/command/createDepartment.generated.ts +6 -0
- package/src/modules/organization/command/createDepartment.test.ts +239 -0
- package/src/modules/organization/command/createDepartment.ts +98 -0
- package/src/modules/organization/command/createSite.generated.ts +6 -0
- package/src/modules/organization/command/createSite.test.ts +262 -0
- package/src/modules/organization/command/createSite.ts +155 -0
- package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/deactivateCompany.ts +47 -0
- package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
- package/src/modules/organization/command/deactivateDepartment.ts +63 -0
- package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/deactivateSite.test.ts +53 -0
- package/src/modules/organization/command/deactivateSite.ts +47 -0
- package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
- package/src/modules/organization/command/deleteCompany.test.ts +99 -0
- package/src/modules/organization/command/deleteCompany.ts +66 -0
- package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/reactivateCompany.ts +47 -0
- package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
- package/src/modules/organization/command/reactivateDepartment.ts +47 -0
- package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/reactivateSite.test.ts +53 -0
- package/src/modules/organization/command/reactivateSite.ts +47 -0
- package/src/modules/organization/command/updateCompany.generated.ts +6 -0
- package/src/modules/organization/command/updateCompany.test.ts +239 -0
- package/src/modules/organization/command/updateCompany.ts +127 -0
- package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/updateDepartment.test.ts +232 -0
- package/src/modules/organization/command/updateDepartment.ts +120 -0
- package/src/modules/organization/command/updateSite.generated.ts +6 -0
- package/src/modules/organization/command/updateSite.test.ts +274 -0
- package/src/modules/organization/command/updateSite.ts +176 -0
- package/src/modules/organization/db/.gitkeep +0 -0
- package/src/modules/organization/db/company.ts +44 -0
- package/src/modules/organization/db/department.ts +46 -0
- package/src/modules/organization/db/site.ts +44 -0
- package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
- package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
- package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
- package/src/modules/organization/docs/commands/CreateSite.md +74 -0
- package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
- package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
- package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
- package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
- package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
- package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
- package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
- package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
- package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
- package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
- package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
- package/src/modules/organization/docs/features/department-management.md +66 -0
- package/src/modules/organization/docs/features/site-management.md +86 -0
- package/src/modules/organization/docs/models/Company.md +60 -0
- package/src/modules/organization/docs/models/Department.md +57 -0
- package/src/modules/organization/docs/models/Site.md +57 -0
- package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
- package/src/modules/organization/docs/queries/GetCompany.md +40 -0
- package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
- package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
- package/src/modules/organization/docs/queries/GetSite.md +37 -0
- package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
- package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
- package/src/modules/organization/executor/.gitkeep +0 -0
- package/src/modules/organization/generated/.gitkeep +0 -0
- package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
- package/src/modules/organization/index.ts +2 -0
- package/src/modules/organization/lib/_db_deps.ts +10 -0
- package/src/modules/organization/lib/errors.generated.ts +117 -0
- package/src/modules/organization/lib/errors.ts +1 -0
- package/src/modules/organization/lib/permissions.generated.ts +19 -0
- package/src/modules/organization/lib/types.ts +16 -0
- package/src/modules/organization/module.ts +89 -0
- package/src/modules/organization/permissions.ts +3 -0
- package/src/modules/organization/query/.gitkeep +0 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
- package/src/modules/organization/query/getCompany.generated.ts +5 -0
- package/src/modules/organization/query/getCompany.test.ts +70 -0
- package/src/modules/organization/query/getCompany.ts +16 -0
- package/src/modules/organization/query/getDepartment.generated.ts +5 -0
- package/src/modules/organization/query/getDepartment.test.ts +85 -0
- package/src/modules/organization/query/getDepartment.ts +17 -0
- package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
- package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
- package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
- package/src/modules/organization/query/getSite.generated.ts +5 -0
- package/src/modules/organization/query/getSite.test.ts +55 -0
- package/src/modules/organization/query/getSite.ts +16 -0
- package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
- package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
- package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
- package/src/modules/organization/query/listSitesByCompany.ts +41 -0
- package/src/modules/organization/tailor.config.ts +13 -0
- package/src/modules/organization/tailor.d.ts +13 -0
- package/src/modules/organization/testing/fixtures.ts +155 -0
- package/src/modules/primitives/README.md +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
- package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
- package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
- package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
- package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
- package/src/modules/primitives/docs/models/Currency.md +3 -4
- package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
- package/src/modules/primitives/lib/errors.generated.ts +5 -0
- package/src/modules/product-management/README.md +1 -1
- package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
- package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
- package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
- package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
- package/src/modules/user-management/generated/enums.ts +0 -15
- package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
- package/src/shared/createContext.ts +2 -1
- package/src/shared/defineQuery.ts +36 -1
- package/src/shared/requirePermission.ts +3 -3
- package/src/shared/types.ts +3 -0
- package/templates/scaffold/app/backend/package.json +8 -7
- package/templates/scaffold/app/frontend/eslint.config.js +12 -0
- package/templates/scaffold/app/frontend/package.json +19 -16
- package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
- package/templates/scaffold/app/frontend/vite.config.ts +5 -5
- package/templates/workflows/erp-kit-check.yml +2 -2
- package/src/commands/module/list.test.ts +0 -57
- package/src/commands/module/list.ts +0 -64
- package/src/commands/scaffold.ts +0 -176
- /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
- /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
- /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
- /package/src/modules/{supplier-management → business-partner}/.gitkeep +0 -0
|
@@ -31,27 +31,7 @@ Key points:
|
|
|
31
31
|
|
|
32
32
|
- Two-column `Layout`: detail on left, actions on right
|
|
33
33
|
- `useParams()` to get entity ID from route
|
|
34
|
-
- `DescriptionCard` from `@tailor-platform/app-shell` for key-value fields
|
|
35
|
-
|
|
36
|
-
```tsx
|
|
37
|
-
<DescriptionCard
|
|
38
|
-
data={resource}
|
|
39
|
-
title="Overview"
|
|
40
|
-
columns={3}
|
|
41
|
-
fields={[
|
|
42
|
-
{ key: "name", label: "Name", meta: { copyable: true } },
|
|
43
|
-
{
|
|
44
|
-
key: "status",
|
|
45
|
-
label: "Status",
|
|
46
|
-
type: "badge",
|
|
47
|
-
meta: { badgeVariantMap: { ACTIVE: "success" } },
|
|
48
|
-
},
|
|
49
|
-
{ key: "createdAt", label: "Created At", type: "date", meta: { dateFormat: "medium" } },
|
|
50
|
-
]}
|
|
51
|
-
/>
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Field types: `"text"` (default), `"badge"`, `"money"`, `"date"`, `"link"`, `"address"`, `"reference"`, `"divider"`
|
|
34
|
+
- `DescriptionCard` from `@tailor-platform/app-shell` for key-value fields. Refer to existing examples in the codebase for props and field type usage.
|
|
55
35
|
|
|
56
36
|
### Form Pattern
|
|
57
37
|
|
|
@@ -59,8 +39,11 @@ Create and edit forms share the same structure:
|
|
|
59
39
|
|
|
60
40
|
- **React Hook Form + Zod** for validation with `zodResolver`
|
|
61
41
|
- **urql `useMutation`** for GraphQL mutations
|
|
62
|
-
- **Cache invalidation**: pass `additionalTypenames` to the mutation context so urql invalidates related queries
|
|
63
|
-
|
|
42
|
+
- **Cache invalidation**: pass `additionalTypenames` to the mutation context so urql invalidates related queries after create/edit/delete. Without this, list pages will show stale data.
|
|
43
|
+
```ts
|
|
44
|
+
createUser(values, { additionalTypenames: ["User"] })
|
|
45
|
+
```
|
|
46
|
+
- **Toast notifications**: `useToast` from `@/hooks/use-toast`. `toast.error()` accepts `CombinedError` directly (e.g., `toast.error(result.error)`)
|
|
64
47
|
- **Navigate `".."`** to go back to list after success
|
|
65
48
|
- Edit form pre-fills `defaultValues` from existing entity via fragment
|
|
66
49
|
|
|
@@ -81,6 +64,14 @@ Create and edit forms share the same structure:
|
|
|
81
64
|
- **Required: Yes** → `.min(1, "Field is required")` (string) / `.positive()` (number)
|
|
82
65
|
- **Required: No** → `.optional()`
|
|
83
66
|
|
|
67
|
+
#### Empty String Handling for Optional Fields
|
|
68
|
+
|
|
69
|
+
React Hook Form defaults text inputs to `""`. For optional fields (e.g., `parentId`), convert empty strings to `undefined` before submitting to avoid backend errors. Use `||` not `??` — empty string is not nullish:
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
parentId: values.parentId || undefined,
|
|
73
|
+
```
|
|
74
|
+
|
|
84
75
|
### Shared Component Patterns
|
|
85
76
|
|
|
86
77
|
#### Fragment Collocation
|
|
@@ -117,13 +108,9 @@ const UserQuery = graphql(
|
|
|
117
108
|
|
|
118
109
|
#### App.tsx
|
|
119
110
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
- `useAuth()` returns `{ isAuthenticated, isReady, login, logout }` directly (not nested in `authState`)
|
|
123
|
-
- Built-in `me` query returns the current user's `User` record — use it instead of writing a custom resolver for profile info
|
|
111
|
+
Refer to existing examples in the codebase for `AuthGuard`, `GraphQLProvider`, auth client setup, and sidebar configuration.
|
|
112
|
+
|
|
124
113
|
- Required env vars: `VITE_TAILOR_APP_URL`, `VITE_TAILOR_CLIENT_ID`
|
|
125
|
-
- Auth client: create once in `src/lib/auth-client.ts` using `createAuthClient({ appUri, clientId })`
|
|
126
|
-
- Sidebar: use `SidebarGroup` + `SidebarItem` for custom ordering
|
|
127
114
|
|
|
128
115
|
#### Module-level page.tsx (required)
|
|
129
116
|
|
|
@@ -141,20 +128,3 @@ Every page component must:
|
|
|
141
128
|
|
|
142
129
|
1. Be the **default export** of `page.tsx`
|
|
143
130
|
2. Set `appShellPageProps` with at least `meta.title`
|
|
144
|
-
|
|
145
|
-
#### Common imports
|
|
146
|
-
|
|
147
|
-
```tsx
|
|
148
|
-
import {
|
|
149
|
-
Layout,
|
|
150
|
-
Link,
|
|
151
|
-
useParams,
|
|
152
|
-
useNavigate,
|
|
153
|
-
type AppShellPageProps,
|
|
154
|
-
} from "@tailor-platform/app-shell";
|
|
155
|
-
import { useQuery, useMutation } from "urql";
|
|
156
|
-
import { graphql, type FragmentOf, readFragment } from "@/graphql";
|
|
157
|
-
import { useForm } from "react-hook-form";
|
|
158
|
-
import { zodResolver } from "@hookform/resolvers/zod";
|
|
159
|
-
import { z } from "zod";
|
|
160
|
-
```
|
|
@@ -21,7 +21,7 @@ Define shared context for all agents:
|
|
|
21
21
|
- `APP_NAME`: basename of APP_ROOT
|
|
22
22
|
- `RESOLVER_DOCS`: glob `<APP_ROOT>/docs/resolver/*.md`
|
|
23
23
|
- `SCREEN_DOCS`: glob `<APP_ROOT>/docs/screen/*.md`
|
|
24
|
-
- `BACKEND_RESOLVERS`: glob `<APP_ROOT>/backend/src/
|
|
24
|
+
- `BACKEND_RESOLVERS`: glob `<APP_ROOT>/backend/src/resolvers/*.ts`
|
|
25
25
|
- `BACKEND_EXECUTORS`: glob `<APP_ROOT>/backend/executors/*.ts`
|
|
26
26
|
- `BACKEND_MODULES`: `<APP_ROOT>/backend/src/modules.ts`
|
|
27
27
|
- `BACKEND_CONFIG`: `<APP_ROOT>/backend/tailor.config.ts`
|
|
@@ -50,16 +50,17 @@ For agents 1-3:
|
|
|
50
50
|
3. Replace doc/code path placeholders with the actual file paths
|
|
51
51
|
4. Dispatch the agent with the filled prompt
|
|
52
52
|
|
|
53
|
-
For agent 4 (build verification):
|
|
53
|
+
For agent 4 (build & sync verification):
|
|
54
54
|
|
|
55
|
-
Run build checks inline:
|
|
55
|
+
Run build checks and source-doc sync check inline:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
cd <APP_ROOT>/backend && pnpm lint && pnpm typecheck
|
|
59
59
|
cd <APP_ROOT>/frontend && pnpm lint && pnpm typecheck && pnpm build
|
|
60
|
+
erp-kit app sync-check -p <APP_ROOT>/..
|
|
60
61
|
```
|
|
61
62
|
|
|
62
|
-
Report pass/fail for each check.
|
|
63
|
+
Report pass/fail for each check. `sync-check` detects missing resolver implementations and orphaned docs, so agents 1-3 can skip file-existence checks and focus on content parity.
|
|
63
64
|
|
|
64
65
|
## Step 3: Aggregate Results
|
|
65
66
|
|
|
@@ -109,13 +110,14 @@ Render the aggregated results as markdown:
|
|
|
109
110
|
|
|
110
111
|
---
|
|
111
112
|
|
|
112
|
-
### 4. Build Verification
|
|
113
|
+
### 4. Build & Sync Verification
|
|
113
114
|
|
|
114
|
-
| Check
|
|
115
|
-
|
|
|
116
|
-
| Lint
|
|
117
|
-
| Types
|
|
118
|
-
| Build
|
|
115
|
+
| Check | Backend | Frontend |
|
|
116
|
+
| ---------- | ------- | -------- |
|
|
117
|
+
| Lint | | |
|
|
118
|
+
| Types | | |
|
|
119
|
+
| Build | N/A | |
|
|
120
|
+
| Sync-check | | N/A |
|
|
119
121
|
|
|
120
122
|
(Populated from agent 4 results)
|
|
121
123
|
|
|
@@ -158,7 +160,7 @@ Render the aggregated results as markdown:
|
|
|
158
160
|
| Resolver Doc → Code Coverage | | X/Y checks passed |
|
|
159
161
|
| Screen Doc → Code Coverage | | X/Y checks passed |
|
|
160
162
|
| Module Wiring Consistency | | X/Y checks passed |
|
|
161
|
-
| Build Verification
|
|
163
|
+
| Build & Sync Verification | | pass / fail |
|
|
162
164
|
|
|
163
165
|
### 8. Recommendations
|
|
164
166
|
|
|
@@ -28,7 +28,7 @@ From each resolver doc, extract:
|
|
|
28
28
|
|
|
29
29
|
## Extraction: Backend Code
|
|
30
30
|
|
|
31
|
-
From each resolver file (`src/
|
|
31
|
+
From each resolver file (`src/resolvers/*.ts`), extract:
|
|
32
32
|
|
|
33
33
|
- Resolver name (from `createResolver()` call or filename)
|
|
34
34
|
- Module command called (import path and function name)
|
|
@@ -42,28 +42,27 @@ From each executor file (`executors/*.ts`), extract:
|
|
|
42
42
|
|
|
43
43
|
## Parity Checks
|
|
44
44
|
|
|
45
|
-
| Check ID
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
45
|
+
| Check ID | Question |
|
|
46
|
+
| ------------------ | --------------------------------------------------------------- |
|
|
47
|
+
| command_reference | Does the resolver code call the correct module command? |
|
|
48
|
+
| input_coverage | Does the resolver handle all documented input parameters? |
|
|
49
|
+
| error_handling | Does the resolver handle all documented error scenarios? |
|
|
50
|
+
| return_shape | Does the resolver return the documented output shape? |
|
|
51
|
+
| executor_exists | Does an executor exist for each module that has event handlers? |
|
|
52
|
+
| no_direct_mutation | Does the resolver avoid directly mutating module-owned tables? |
|
|
53
|
+
|
|
54
|
+
File existence checks (`resolver_impl_exists`) are handled by `erp-kit app sync-check` in the build verification step. This agent focuses on content parity only.
|
|
54
55
|
|
|
55
56
|
### How to Check
|
|
56
57
|
|
|
57
|
-
1. For each resolver doc
|
|
58
|
-
2.
|
|
59
|
-
3. Check that `
|
|
60
|
-
4.
|
|
61
|
-
5.
|
|
62
|
-
6. Check executors re-export module event handlers without custom logic
|
|
58
|
+
1. For each resolver doc that has a corresponding code file, verify the code imports and calls the documented module command
|
|
59
|
+
2. Check that `context.input.*` accesses match documented inputs
|
|
60
|
+
3. Check that error `switch` cases cover all documented error codes
|
|
61
|
+
4. Verify return value structure matches documentation
|
|
62
|
+
5. Check executors re-export module event handlers without custom logic
|
|
63
63
|
|
|
64
64
|
## Common Gap Patterns
|
|
65
65
|
|
|
66
|
-
- **Missing resolver file**: Doc exists but no code file
|
|
67
66
|
- **Wrong command**: Code calls a different module command than documented
|
|
68
67
|
- **Missing input handling**: Doc specifies an input parameter not accessed in code
|
|
69
68
|
- **Missing error cases**: Error scenario in doc not handled in code's switch
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: erp-kit-app-shared
|
|
3
|
+
description: Shared references for erp-kit app skills. Not invoked directly — referenced by erp-kit-app-1 through erp-kit-app-7.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# erp-kit-app-shared
|
|
7
|
+
|
|
8
|
+
Canonical reference files shared across app skills. Individual skills reference these instead of maintaining their own copies.
|
|
9
|
+
|
|
10
|
+
## References
|
|
11
|
+
|
|
12
|
+
- [Schema constraints](references/schema-constraints.md) — H1 heading rules and validation constraints enforced by `erp-kit app check`
|
|
13
|
+
- [Naming conventions](references/naming-conventions.md) — File and heading naming patterns for all doc types
|
|
14
|
+
- [Link format reference](references/link-format-reference.md) — Canonical doc-to-doc link formats across tiers
|
|
15
|
+
- [Resolver classification](references/resolver-classification.md) — Custom vs built-in resolver decision table and operation mapping
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Link Format Reference
|
|
2
|
+
|
|
3
|
+
Canonical link formats used across all documentation tiers.
|
|
4
|
+
|
|
5
|
+
## Doc-to-Doc Links
|
|
6
|
+
|
|
7
|
+
| From | To | Format |
|
|
8
|
+
| ------------- | ------------- | ----------------------------------- |
|
|
9
|
+
| Business Flow | Story | `./story/<actor>--<name>.md` |
|
|
10
|
+
| Business Flow | Actor | `../../actors/<actor>.md` |
|
|
11
|
+
| Actor | Business Flow | `../business-flow/<flow>/README.md` |
|
|
12
|
+
| Story | Screen | `../../../screen/<screen>.md` |
|
|
13
|
+
| Story | Resolver | `../../../resolver/<name>.md` |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Naming Conventions
|
|
2
|
+
|
|
3
|
+
## File Naming
|
|
4
|
+
|
|
5
|
+
| Doc Type | Pattern | Example |
|
|
6
|
+
| -------- | ------------------------------------ | -------------------------------- |
|
|
7
|
+
| Actor | kebab-case | `sales-representative.md` |
|
|
8
|
+
| Flow | kebab-case directory | `employee-onboarding/README.md` |
|
|
9
|
+
| Story | `<actor>--<story-name>.md` | `admin--create-user.md` |
|
|
10
|
+
| Screen | kebab-case, noun-focused | `supplier-list.md` |
|
|
11
|
+
| Resolver | camelCase action-verb | `createSupplierInvitation.md` |
|
|
12
|
+
|
|
13
|
+
## Heading Conventions
|
|
14
|
+
|
|
15
|
+
See [schema-constraints.md](schema-constraints.md) for H1 heading rules enforced by `erp-kit app check`.
|
|
16
|
+
|
|
17
|
+
Additional conventions:
|
|
18
|
+
|
|
19
|
+
- Story heading: Title Case of story name after `--` prefix (e.g., `admin--create-user.md` → `# Create User`)
|
|
20
|
+
- Screen heading: Title Case of filename slug
|
|
21
|
+
- Resolver heading: camelCase matching filename
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Resolver Classification
|
|
2
|
+
|
|
3
|
+
## Custom vs Built-in
|
|
4
|
+
|
|
5
|
+
| Category | Description | Implementation |
|
|
6
|
+
| -------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
7
|
+
| **Custom resolvers** | Mutations that call module commands (create, update, activate, deactivate, assign) | Write `createResolver()` files |
|
|
8
|
+
| **Built-in queries** | List and get operations for reading data | Handled automatically by `gqlOperations: "query"` in config — no code needed |
|
|
9
|
+
|
|
10
|
+
Prefer built-in queries over custom resolvers for list/get operations where possible.
|
|
11
|
+
|
|
12
|
+
## Operation → Resolver Mapping
|
|
13
|
+
|
|
14
|
+
| Flow Operation | Resolver Type | Naming Pattern |
|
|
15
|
+
| -------------------- | ------------- | ---------------------- |
|
|
16
|
+
| Create/Add entity | Mutation | `create<Entity>` |
|
|
17
|
+
| Update/Modify entity | Mutation | `update<Entity>` |
|
|
18
|
+
| Delete/Remove entity | Mutation | `delete<Entity>` |
|
|
19
|
+
| Activate entity | Mutation | `activate<Entity>` |
|
|
20
|
+
| Deactivate entity | Mutation | `deactivate<Entity>` |
|
|
21
|
+
| Assign X to Y | Mutation | `assign<X>To<Y>` |
|
|
22
|
+
| Submit/Approve | Mutation | `submit<Entity>` etc. |
|
|
23
|
+
| View/List/Get | Query | Built-in (no resolver) |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Schema Constraints
|
|
2
|
+
|
|
3
|
+
Rules enforced by `erp-kit app check`. **Never recommend changes that violate them.**
|
|
4
|
+
|
|
5
|
+
## H1 Heading Rules
|
|
6
|
+
|
|
7
|
+
| Doc Type | H1 Rule | Example |
|
|
8
|
+
| ------------- | ---------------------------------------------------- | -------------------------------------------------------- |
|
|
9
|
+
| README.md | Must be `# README` (literal) | `# README` |
|
|
10
|
+
| Actor | Slug must match filename | `admin.md` → `# Admin`, `sales-rep.md` → `# Sales Rep` |
|
|
11
|
+
| Business Flow | Kebab-case matching folder name (`[a-zA-Z0-9_\-]+`) | `employee-onboarding/README.md` → `# employee-onboarding` |
|
|
12
|
+
| Story | Slug matches filename after actor prefix removal | `admin--create-user.md` → `# Create User` |
|
|
13
|
+
|
|
14
|
+
## Requirements Structure
|
|
15
|
+
|
|
16
|
+
The `## Industry Context` section contains `### Target Industry` and `### Domain Terminology` subsections. Requirements are bare list items under `### Domain Terminology` — do **not** add a separate `## Requirements` heading.
|
|
17
|
+
|
|
18
|
+
## Naming Conventions
|
|
19
|
+
|
|
20
|
+
- Files: kebab-case (e.g., `sales-representative.md`)
|
|
21
|
+
- Business flow H1 headings are kebab-case — do **not** flag them as inconsistent with title-case actor headings. They follow different schemas.
|
|
22
|
+
|
|
23
|
+
## Validation Notes
|
|
24
|
+
|
|
25
|
+
- `app check` outputs "No matching files found" for doc types that don't exist yet (e.g., stories at Tier 2, screens at Tier 3). This is expected.
|
|
@@ -5,7 +5,7 @@ description: Create ERP module requirements and feature documentation. Use when
|
|
|
5
5
|
|
|
6
6
|
# Module Requirements Workflow
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Autonomous workflow for creating ERP module requirements. Uses parallel agents for research, then automatically decides scope based on recommendations.
|
|
9
9
|
|
|
10
10
|
## Workflow
|
|
11
11
|
|
|
@@ -22,7 +22,7 @@ Define shared context for all agents:
|
|
|
22
22
|
- `DOMAIN`: the business domain (e.g., "inventory management", "purchasing")
|
|
23
23
|
- `OTHER_MODULES`: glob `<MODULES_ROOT>/*/README.md` (to understand existing module landscape)
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Infer MODULE_NAME and DOMAIN from the current working directory or argument context. If insufficient, use the module's README or directory name.
|
|
26
26
|
|
|
27
27
|
## Step 2: Dispatch Agents (parallelize if possible)
|
|
28
28
|
|
|
@@ -63,16 +63,14 @@ For each feature:
|
|
|
63
63
|
- **Recommendation:** `Include` or `Skip`
|
|
64
64
|
- **Why:** reasoning for the recommendation
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
The final feature set becomes the union of all `Include` features. Iterate until the user approves.
|
|
66
|
+
The final feature set becomes the union of all `Include` features. Proceed with the recommended scope.
|
|
69
67
|
|
|
70
68
|
## Step 4: Create — Agent per feature
|
|
71
69
|
|
|
72
70
|
First, scaffold the module if it doesn't exist:
|
|
73
71
|
|
|
74
72
|
```bash
|
|
75
|
-
erp-kit
|
|
73
|
+
erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
|
|
76
74
|
```
|
|
77
75
|
|
|
78
76
|
Then, for each `Include` feature, launch an Agent:
|
|
@@ -96,19 +94,15 @@ pnpm run module:doc:check
|
|
|
96
94
|
|
|
97
95
|
## Step 5: Review
|
|
98
96
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
**Split detection**: If a feature covers multiple distinct workflows, split into separate feature files.
|
|
97
|
+
**Split detection**: If a feature covers multiple distinct workflows, split into separate feature files automatically.
|
|
102
98
|
|
|
103
|
-
**
|
|
99
|
+
**Auto-split pattern:**
|
|
104
100
|
|
|
105
|
-
1.
|
|
101
|
+
1. Detect features that cover multiple distinct workflows
|
|
106
102
|
2. Create new feature file for split-out content
|
|
107
103
|
3. Remove split content from original file
|
|
108
104
|
4. Update README.md feature list if needed
|
|
109
105
|
|
|
110
|
-
Continue iterating until user approves.
|
|
111
|
-
|
|
112
106
|
# Framework Schemas Reference
|
|
113
107
|
|
|
114
108
|
Schemas are bundled in `@tailor-platform/erp-kit`.
|
|
@@ -14,7 +14,7 @@ Write a feature documentation file for the {{FEATURE_NAME}} feature.
|
|
|
14
14
|
1. Read existing feature docs in `{{MODULES_ROOT}}/{{MODULE_NAME}}/docs/features/` for style reference
|
|
15
15
|
2. Scaffold the file:
|
|
16
16
|
```bash
|
|
17
|
-
erp-kit
|
|
17
|
+
erp-kit module generate doc feature {{FEATURE_SLUG}} -p {{MODULES_ROOT}}/{{MODULE_NAME}}
|
|
18
18
|
```
|
|
19
19
|
3. Fill in the scaffolded file following the structure below
|
|
20
20
|
|
|
@@ -52,7 +52,14 @@ After ALL agents return:
|
|
|
52
52
|
2. Merge all `issues[]` arrays into a single list
|
|
53
53
|
3. Merge all `recommendations[]` arrays into a single list
|
|
54
54
|
4. Calculate totals across all summaries
|
|
55
|
-
5.
|
|
55
|
+
5. **Classify severity** — for each non-pass finding, the router assigns a severity based on the finding's `status`, `check`, and `detail`:
|
|
56
|
+
- `critical`: fundamental design flaw, missing required capability, boundary violation — blocks progress
|
|
57
|
+
- `major`: significant gap that will likely cause downstream issues — should fix
|
|
58
|
+
- `nit`: cosmetic, stylistic, or minor improvement — does NOT block the review
|
|
59
|
+
6. **Determine verdict**:
|
|
60
|
+
- **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
|
|
61
|
+
- **NEEDS CHANGES**: one or more `critical` or `major` findings
|
|
62
|
+
7. Render the final report below
|
|
56
63
|
|
|
57
64
|
## Report Format
|
|
58
65
|
|
|
@@ -100,11 +107,20 @@ Render the aggregated results as markdown:
|
|
|
100
107
|
|
|
101
108
|
### 5. Recommendations
|
|
102
109
|
|
|
103
|
-
Numbered list of actionable fixes, grouped by
|
|
110
|
+
Numbered list of actionable fixes, grouped by severity:
|
|
104
111
|
|
|
105
|
-
1.
|
|
106
|
-
2.
|
|
107
|
-
3.
|
|
112
|
+
1. `critical` — boundary issues, fundamental design flaws (must fix)
|
|
113
|
+
2. `major` — best practice violations, missing capabilities (should fix)
|
|
114
|
+
3. `nit` — cosmetic, stylistic, minor improvements (informational only)
|
|
115
|
+
|
|
116
|
+
### 6. Verdict
|
|
117
|
+
|
|
118
|
+
**Verdict: APPROVED / NEEDS CHANGES**
|
|
119
|
+
|
|
120
|
+
- If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
|
|
121
|
+
- If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
|
|
122
|
+
|
|
123
|
+
Severity counts: `critical: N, major: N, nit: N`
|
|
108
124
|
|
|
109
125
|
## References
|
|
110
126
|
|
package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md
CHANGED
|
@@ -23,3 +23,22 @@ A numbered list of actionable suggestions, grouped by priority:
|
|
|
23
23
|
### Summary
|
|
24
24
|
|
|
25
25
|
A summary table with aggregate counts: total checks, passed, failed, warned.
|
|
26
|
+
|
|
27
|
+
## Router-Level Severity and Verdict
|
|
28
|
+
|
|
29
|
+
The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
|
|
30
|
+
|
|
31
|
+
The router classifies each finding as:
|
|
32
|
+
|
|
33
|
+
| Severity | Meaning | Examples |
|
|
34
|
+
| ---------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
35
|
+
| `critical` | Blocks progress — fundamental design flaw, missing required capability, or boundary violation | Missing entity ownership, overlapping CRUD with another module, broken state machine |
|
|
36
|
+
| `major` | Should fix — will likely cause issues downstream but not a design blocker | Missing standard ERP state, unclear dependency direction, incomplete business rules |
|
|
37
|
+
| `nit` | Nice to have — cosmetic, stylistic, or minor improvement suggestion | Naming convention preference, optional field suggestion, documentation wording improvement |
|
|
38
|
+
|
|
39
|
+
Verdict rule:
|
|
40
|
+
|
|
41
|
+
- **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
|
|
42
|
+
- **NEEDS CHANGES**: one or more `critical` or `major` findings
|
|
43
|
+
|
|
44
|
+
When verdict is APPROVED with nits, list the nits as informational notes — they do NOT block the review.
|
|
@@ -33,22 +33,20 @@ Use the extraction rules from:
|
|
|
33
33
|
- [references/command-extraction.md](references/command-extraction.md) — write operations, business rules, error scenarios, process flows
|
|
34
34
|
- [references/query-extraction.md](references/query-extraction.md) — read operations, lookups, aggregations, conversions
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Produce consolidated plan:
|
|
37
37
|
|
|
38
38
|
- Models to create (with fields, relationships, states)
|
|
39
39
|
- Commands to create (with business rules, error scenarios)
|
|
40
40
|
- Queries to create (with inputs, outputs)
|
|
41
41
|
|
|
42
|
-
Wait for user approval.
|
|
43
|
-
|
|
44
42
|
## Step 3: Scaffold & Populate
|
|
45
43
|
|
|
46
|
-
|
|
44
|
+
Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
|
|
47
45
|
|
|
48
46
|
```bash
|
|
49
|
-
erp-kit
|
|
50
|
-
erp-kit
|
|
51
|
-
erp-kit
|
|
47
|
+
erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
|
|
48
|
+
erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
|
|
49
|
+
erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
|
|
52
50
|
```
|
|
53
51
|
|
|
54
52
|
Fill in the scaffolded docs with details from the extraction in Step 2.
|
|
@@ -103,5 +101,5 @@ pnpm run module:doc:check
|
|
|
103
101
|
|
|
104
102
|
## References
|
|
105
103
|
|
|
106
|
-
- [
|
|
104
|
+
- [Naming convention (PascalCase files + command verbs)](references/naming.md)
|
|
107
105
|
- [Module structure](../erp-kit-module-shared/references/structure.md)
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Naming Convention
|
|
2
|
+
|
|
3
|
+
## Doc File Names — PascalCase
|
|
4
|
+
|
|
5
|
+
Documentation files under `docs/models/`, `docs/commands/`, and `docs/queries/` **must** use PascalCase. The code generator derives the camelCase command/query name by lowercasing the first character of the file name.
|
|
6
|
+
|
|
7
|
+
| Doc type | File name format | Example file | Derived name |
|
|
8
|
+
| -------- | ----------------- | ------------------ | --------------- |
|
|
9
|
+
| Model | `{Entity}.md` | `Product.md` | — |
|
|
10
|
+
| Command | `{VerbEntity}.md` | `CreateProduct.md` | `createProduct` |
|
|
11
|
+
| Query | `{VerbEntity}.md` | `GetProduct.md` | `getProduct` |
|
|
12
|
+
|
|
13
|
+
**Never use kebab-case** (`create-product.md`) — the generator will produce a broken name (`create-product`).
|
|
14
|
+
|
|
15
|
+
## Command Naming Convention
|
|
2
16
|
|
|
3
17
|
Commands use imperative `{verb}{Entity}` format. Use this canonical verb vocabulary when scaffolding commands.
|
|
4
18
|
|
|
@@ -57,7 +57,14 @@ After ALL agents return:
|
|
|
57
57
|
3. Merge all `inconsistencies[]` arrays into a single list
|
|
58
58
|
4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
|
|
59
59
|
5. Calculate totals across all summaries
|
|
60
|
-
6.
|
|
60
|
+
6. **Classify severity** — for each non-pass gap and inconsistency, the router assigns a severity based on the finding's `check`, `status`, and `detail`:
|
|
61
|
+
- `critical`: missing required doc, fundamental parity break — blocks progress
|
|
62
|
+
- `major`: incomplete coverage, missing business rules — should fix
|
|
63
|
+
- `nit`: minor naming inconsistency, optional improvement — does NOT block the review
|
|
64
|
+
7. **Determine verdict**:
|
|
65
|
+
- **APPROVED**: zero `critical` and zero `major` findings (nits only, or all pass)
|
|
66
|
+
- **NEEDS CHANGES**: one or more `critical` or `major` findings
|
|
67
|
+
8. Render the final report below
|
|
61
68
|
|
|
62
69
|
## Report Format
|
|
63
70
|
|
|
@@ -146,11 +153,20 @@ Render the aggregated results as markdown:
|
|
|
146
153
|
|
|
147
154
|
### 8. Recommendations
|
|
148
155
|
|
|
149
|
-
Numbered list of actionable fixes, grouped by
|
|
156
|
+
Numbered list of actionable fixes, grouped by severity:
|
|
150
157
|
|
|
151
|
-
1.
|
|
152
|
-
2.
|
|
153
|
-
3.
|
|
158
|
+
1. `critical` — missing required docs, fundamental parity gaps (must fix)
|
|
159
|
+
2. `major` — missing business rules, incomplete error scenarios (should fix)
|
|
160
|
+
3. `nit` — minor naming inconsistencies, optional improvements (informational only)
|
|
161
|
+
|
|
162
|
+
### 9. Verdict
|
|
163
|
+
|
|
164
|
+
**Verdict: APPROVED / NEEDS CHANGES**
|
|
165
|
+
|
|
166
|
+
- If APPROVED with nits: "Review passed. The following nits are informational and do not block progress:" followed by the nit list.
|
|
167
|
+
- If NEEDS CHANGES: "Review requires changes. Fix all critical and major issues, then re-run the review."
|
|
168
|
+
|
|
169
|
+
Severity counts: `critical: N, major: N, nit: N`
|
|
154
170
|
|
|
155
171
|
## References
|
|
156
172
|
|
|
@@ -50,3 +50,18 @@ Cross-cutting issues found during the check that don't fit a single gap entry (e
|
|
|
50
50
|
### summary
|
|
51
51
|
|
|
52
52
|
Aggregate counts. `total_checks = passed + failed + skipped`.
|
|
53
|
+
|
|
54
|
+
## Router-Level Severity and Verdict
|
|
55
|
+
|
|
56
|
+
The router (SKILL.md Step 3) assigns severity to each non-pass finding after collecting all agent results. Agents do NOT assign severity — they only report `status` and `detail`.
|
|
57
|
+
|
|
58
|
+
The router classifies each finding as:
|
|
59
|
+
|
|
60
|
+
- `critical`: blocks progress — missing required doc, fundamental design mismatch
|
|
61
|
+
- `major`: should fix — incomplete coverage, unclear mapping, missing business rules
|
|
62
|
+
- `nit`: nice to have — minor naming inconsistency, optional doc improvement, cosmetic issue
|
|
63
|
+
|
|
64
|
+
Verdict rule:
|
|
65
|
+
|
|
66
|
+
- `APPROVED`: zero `critical` and zero `major` findings (nits only, or all pass)
|
|
67
|
+
- `NEEDS_CHANGES`: one or more `critical` or `major` findings
|
|
@@ -17,7 +17,7 @@ Implement features in modules using Test-Driven Development with per-item agent
|
|
|
17
17
|
## Workflow
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
SETUP → DB MODELS (agents) →
|
|
20
|
+
SETUP → GENERATE → DB MODELS (agents) → COMMANDS (agents) → QUERIES (agents) → EXPORT → VERIFY
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Step 1: Setup
|
|
@@ -32,7 +32,17 @@ Define shared context:
|
|
|
32
32
|
|
|
33
33
|
Verify at least one doc type exists. If none, stop with: "No docs found for module <MODULE_NAME>. Run steps 1-4 first."
|
|
34
34
|
|
|
35
|
-
## Step 2:
|
|
35
|
+
## Step 2: Generate Code from Docs
|
|
36
|
+
|
|
37
|
+
Run generation first to create `.generated.ts` files (error classes, permission definitions, command/query shells) before implementing any code:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
erp-kit module generate code -p <MODULES_ROOT>/<module>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Never edit these generated files.
|
|
44
|
+
|
|
45
|
+
## Step 3: DB Models — Agent per model
|
|
36
46
|
|
|
37
47
|
**Read [models rules](references/models.md) and [db-relations rules](references/db-relations.md) before dispatching.**
|
|
38
48
|
|
|
@@ -51,14 +61,6 @@ After all model agents complete, run:
|
|
|
51
61
|
pnpm generate
|
|
52
62
|
```
|
|
53
63
|
|
|
54
|
-
## Step 3: Generate Code from Docs
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
erp-kit module generate code --root <root> <module>
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Generated `.generated.ts` files provide: error classes, permission definitions, and command/query shells. Never edit these files.
|
|
61
|
-
|
|
62
64
|
## Step 4: Commands — Agent per command
|
|
63
65
|
|
|
64
66
|
**Read [commands rules](../erp-kit-module-shared/references/commands.md) and [testing rules](../erp-kit-module-shared/references/testing.md) before dispatching.**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
Run `erp-kit module generate code
|
|
5
|
+
Run `erp-kit module generate code -p <modules-dir>/<module-name>` to generate deterministic `.generated.ts` files from command and query documentation.
|
|
6
6
|
|
|
7
7
|
## What gets generated
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ Run `erp-kit module generate code --root <modules-dir> <module-name>` to generat
|
|
|
21
21
|
1. Write command/query docs (skills 1-3)
|
|
22
22
|
2. Write db models (skill 4, step 2)
|
|
23
23
|
3. Run `pnpm generate` for kysely types
|
|
24
|
-
4. Run `erp-kit module generate code
|
|
24
|
+
4. Run `erp-kit module generate code -p <root>/<module>`
|
|
25
25
|
5. Implement business logic in `.ts` files importing from `.generated.ts`
|
|
26
26
|
|
|
27
27
|
## What you still write by hand
|