@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/erp-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Opinionated ERP toolkit for building business applications on Tailor Platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -35,12 +35,13 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@tailor-platform/function-kysely-tailordb": "0.1.3",
|
|
37
37
|
"@tailor-platform/function-types": "0.8.2",
|
|
38
|
-
"@tailor-platform/sdk": "1.25.
|
|
38
|
+
"@tailor-platform/sdk": "1.25.2",
|
|
39
39
|
"@types/mdast": "^4.0.4",
|
|
40
40
|
"@types/node": "^25.1.0",
|
|
41
|
+
"@typescript-eslint/parser": "^8.57.0",
|
|
41
42
|
"eslint": "10.0.3",
|
|
42
43
|
"kysely": "0.28.11",
|
|
43
|
-
"tsdown": "0.21.
|
|
44
|
+
"tsdown": "0.21.3",
|
|
44
45
|
"typescript": "^5.7.3",
|
|
45
46
|
"vitest": "^4.0.0",
|
|
46
47
|
"@tailor-platform/eslint-config": "0.0.1"
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"peerDependencies": {
|
|
49
50
|
"@tailor-platform/function-kysely-tailordb": "0.1.3",
|
|
50
51
|
"@tailor-platform/function-types": "0.8.2",
|
|
51
|
-
"@tailor-platform/sdk": "1.25.
|
|
52
|
+
"@tailor-platform/sdk": "1.25.2",
|
|
52
53
|
"kysely": "0.28.11"
|
|
53
54
|
},
|
|
54
55
|
"engines": {
|
|
@@ -68,6 +69,7 @@
|
|
|
68
69
|
"mock:start": "node dist/cli.mjs mock start",
|
|
69
70
|
"mock:validate": "node dist/cli.mjs mock validate",
|
|
70
71
|
"doc:gen": "POLITTY_DOCS_UPDATE=true vitest run src/cli.doc.test.ts",
|
|
71
|
-
"doc:check": "vitest run src/cli.doc.test.ts"
|
|
72
|
+
"doc:check": "vitest run src/cli.doc.test.ts",
|
|
73
|
+
"reset:module": "tsx scripts/reset-module.ts"
|
|
72
74
|
}
|
|
73
75
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: erp-kit-app-1-requirements
|
|
3
|
-
description: Create Tier 1-2 documentation (requirements, actors, business-flow) for
|
|
3
|
+
description: Create Tier 1-2 documentation (requirements, actors, business-flow) for an application. Use when starting a new application or documenting high-level requirements and workflows.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Application Requirement Analysis Workflow
|
|
@@ -26,37 +26,45 @@ Focus on "what" the application should do, not "how" it will be implemented.
|
|
|
26
26
|
|
|
27
27
|
### Phase 2: Clarify
|
|
28
28
|
|
|
29
|
-
Use AskUserQuestion to clarify undefined requirements
|
|
29
|
+
Use AskUserQuestion to clarify undefined requirements. Focus on business-level scope and workflows — not platform capabilities like authentication.
|
|
30
30
|
|
|
31
|
-
| Category
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| Lifecycle | Create only / Full lifecycle (activate/deact)? |
|
|
31
|
+
| Category | Example Questions |
|
|
32
|
+
| ---------------- | ---------------------------------------------------------------------------- |
|
|
33
|
+
| Scope | Which steps are MVP-essential? Any steps that can be deferred? |
|
|
34
|
+
| Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment? |
|
|
35
|
+
| Actor Boundaries | Are approver and executor separate? What is each actor's operational scope? |
|
|
36
|
+
| Business Rules | Which steps are automated vs manual? What conditional branches exist? |
|
|
38
37
|
|
|
39
38
|
Ask 3-4 questions at a time using multiSelect where appropriate.
|
|
40
39
|
|
|
41
40
|
### Phase 3: Create
|
|
42
41
|
|
|
43
|
-
Generate documentation using `erp-kit` CLI:
|
|
42
|
+
Generate documentation using `erp-kit` CLI. `{APP_ROOT}` is the parent directory where the app will live:
|
|
44
43
|
|
|
45
44
|
```bash
|
|
46
45
|
# Tier 1: Requirements + project structure
|
|
47
|
-
|
|
46
|
+
# Creates {APP_ROOT}/{APP_NAME}/README.md
|
|
47
|
+
erp-kit app init {APP_NAME} {APP_ROOT}
|
|
48
48
|
|
|
49
49
|
# Tier 2: Actors
|
|
50
|
-
erp-kit app
|
|
50
|
+
erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
51
51
|
|
|
52
52
|
# Tier 2: Business Flows
|
|
53
|
-
erp-kit app
|
|
53
|
+
erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
**
|
|
56
|
+
**Directory structure after init + generate:**
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
```
|
|
59
|
+
{APP_ROOT}/
|
|
60
|
+
{APP_NAME}/
|
|
61
|
+
README.md ← Tier 1 (from app init)
|
|
62
|
+
docs/
|
|
63
|
+
actors/{actor-name}.md ← Tier 2 (from generate doc actors)
|
|
64
|
+
business-flow/{flow-name}/README.md ← Tier 2 (from generate doc business-flow)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Schema constraints:** See [erp-kit-app-shared/references/schema-constraints.md](../erp-kit-app-shared/references/schema-constraints.md) for H1 heading rules, naming conventions, and requirements structure.
|
|
60
68
|
|
|
61
69
|
**Business flow diagram:** Use `sequenceDiagram` with actors from "Actors Involved" as participants. Show who initiates each step and the system responses.
|
|
62
70
|
|
|
@@ -67,9 +75,11 @@ At Tier 2, story files do not exist yet. Use `- TBD` as a placeholder to avoid b
|
|
|
67
75
|
### Phase 4: Validate
|
|
68
76
|
|
|
69
77
|
```bash
|
|
70
|
-
|
|
78
|
+
erp-kit app check -p {APP_ROOT}
|
|
71
79
|
```
|
|
72
80
|
|
|
81
|
+
See [schema-constraints.md](../erp-kit-app-shared/references/schema-constraints.md) for notes on expected "No matching files found" output.
|
|
82
|
+
|
|
73
83
|
## Schema Reference
|
|
74
84
|
|
|
75
85
|
| Schema | Tier | Output Path |
|
|
@@ -17,7 +17,7 @@ Review **requirements quality** and **documentation consistency** for an app-com
|
|
|
17
17
|
|
|
18
18
|
Define shared context for all agents:
|
|
19
19
|
|
|
20
|
-
- `APP_ROOT`:
|
|
20
|
+
- `APP_ROOT`: the app directory (e.g., `{APP_ROOT}/{APP_NAME}`). Must contain `README.md` and a `docs/` directory.
|
|
21
21
|
- `APP_NAME`: basename of APP_ROOT
|
|
22
22
|
- `APP_README`: `<APP_ROOT>/README.md`
|
|
23
23
|
- `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
|
|
@@ -43,15 +43,16 @@ For each agent:
|
|
|
43
43
|
3. Replace `{{APP_README}}`, `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
|
|
44
44
|
4. Dispatch the agent with the filled prompt
|
|
45
45
|
|
|
46
|
-
## Step 3: Aggregate
|
|
46
|
+
## Step 3: Aggregate & Validate
|
|
47
47
|
|
|
48
48
|
After ALL agents return:
|
|
49
49
|
|
|
50
50
|
1. Collect the markdown results from each agent
|
|
51
51
|
2. Merge all `issues[]` arrays into a single list
|
|
52
52
|
3. Merge all `recommendations[]` arrays into a single list
|
|
53
|
-
4.
|
|
54
|
-
5.
|
|
53
|
+
4. **Filter out** any recommendation that would violate `erp-kit app check` schema constraints (e.g., title-casing business flow H1 headings)
|
|
54
|
+
5. Calculate totals across all summaries
|
|
55
|
+
6. Render the final report below
|
|
55
56
|
|
|
56
57
|
## Report Format
|
|
57
58
|
|
|
@@ -7,13 +7,22 @@ App README: {{APP_README}}
|
|
|
7
7
|
Actor docs: {{ACTOR_DOCS}}
|
|
8
8
|
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
9
9
|
|
|
10
|
+
## Schema Constraints
|
|
11
|
+
|
|
12
|
+
Read [erp-kit-app-shared/references/schema-constraints.md](../../erp-kit-app-shared/references/schema-constraints.md) before evaluating. **Never recommend changes that violate the schema.**
|
|
13
|
+
|
|
14
|
+
## Tier 2 Scope
|
|
15
|
+
|
|
16
|
+
This review targets Tier 1-2 documentation only. Stories (`## Stories` section in business flows) are created in step 3 (`erp-kit-app-3-plan`). A `- TBD` placeholder in the Stories section is expected and correct at this stage — do **not** flag it as incomplete or missing.
|
|
17
|
+
|
|
10
18
|
## Instructions
|
|
11
19
|
|
|
12
20
|
1. Read the application README at the path above
|
|
13
21
|
2. Read ALL actor docs and business flow docs at the paths above
|
|
14
22
|
3. **Web search** app-compose and ERP application best practices (actor modeling, business flow design, user journey patterns)
|
|
15
23
|
4. Evaluate whether the Tier 1-2 documentation follows best practices
|
|
16
|
-
5.
|
|
24
|
+
5. **Verify** that none of your recommendations would violate the schema constraints above
|
|
25
|
+
6. Return results as markdown per the Output Format section
|
|
17
26
|
|
|
18
27
|
## Application Design Checks
|
|
19
28
|
|
|
@@ -7,12 +7,21 @@ App README: {{APP_README}}
|
|
|
7
7
|
Actor docs: {{ACTOR_DOCS}}
|
|
8
8
|
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
9
9
|
|
|
10
|
+
## Schema Constraints
|
|
11
|
+
|
|
12
|
+
Read [erp-kit-app-shared/references/schema-constraints.md](../../erp-kit-app-shared/references/schema-constraints.md) before evaluating. When checking `naming_consistency`, validate that H1 headings follow the schema rules — different doc types have different heading formats.
|
|
13
|
+
|
|
14
|
+
## Tier 2 Scope
|
|
15
|
+
|
|
16
|
+
This review targets Tier 1-2 documentation only. Stories (`## Stories` section in business flows) are created in step 3 (`erp-kit-app-3-plan`). A `- TBD` placeholder in the Stories section is expected and correct at this stage — do **not** flag it as a broken link, missing content, or incomplete documentation.
|
|
17
|
+
|
|
10
18
|
## Instructions
|
|
11
19
|
|
|
12
20
|
1. Read the application README at the path above
|
|
13
21
|
2. Read ALL actor docs and business flow docs at the paths above
|
|
14
22
|
3. Cross-reference actors, flows, and requirements for internal consistency
|
|
15
|
-
4.
|
|
23
|
+
4. **Verify** that none of your recommendations would violate the schema constraints above
|
|
24
|
+
5. Return results as markdown per the Output Format section
|
|
16
25
|
|
|
17
26
|
## Consistency Checks
|
|
18
27
|
|
|
@@ -29,26 +29,36 @@ Define shared context for all agents:
|
|
|
29
29
|
- `APP_NAME`: basename of APP_ROOT
|
|
30
30
|
- `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
|
|
31
31
|
- `ACTOR_DOCS`: glob `<APP_ROOT>/docs/actors/*.md`
|
|
32
|
+
- `MODULE_OVERVIEW`: output of `erp-kit doc modules`
|
|
32
33
|
|
|
33
34
|
Verify at least `BUSINESS_FLOW_DOCS` is non-empty. If no business flow docs exist, stop with: "No business flow docs found under <APP_ROOT>/docs/. Run erp-kit-app-1-requirements first."
|
|
34
35
|
|
|
36
|
+
Collect module overview:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
erp-kit doc modules
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This returns each module's name, overview, command/query/model counts, and dependencies. Save the full output as `MODULE_OVERVIEW` — all three agents receive it.
|
|
43
|
+
|
|
35
44
|
## Step 2: Dispatch Agents (parallelize if possible)
|
|
36
45
|
|
|
37
46
|
Launch 3 Agent tool calls in parallel — one per extraction concern.
|
|
38
|
-
Each agent receives: APP_NAME, relevant doc file paths.
|
|
47
|
+
Each agent receives: APP_NAME, relevant doc file paths, and MODULE_OVERVIEW.
|
|
39
48
|
|
|
40
|
-
| Agent | Prompt Template | Inputs
|
|
41
|
-
| ----- | ---------------------------------------------------------------------- |
|
|
42
|
-
| 1 | [references/story-extraction.md](references/story-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
43
|
-
| 2 | [references/screen-extraction.md](references/screen-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
44
|
-
| 3 | [references/resolver-extraction.md](references/resolver-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
49
|
+
| Agent | Prompt Template | Inputs |
|
|
50
|
+
| ----- | ---------------------------------------------------------------------- | --------------------------------------------------------- |
|
|
51
|
+
| 1 | [references/story-extraction.md](references/story-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
|
|
52
|
+
| 2 | [references/screen-extraction.md](references/screen-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
|
|
53
|
+
| 3 | [references/resolver-extraction.md](references/resolver-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS, MODULE_OVERVIEW |
|
|
45
54
|
|
|
46
55
|
For each agent:
|
|
47
56
|
|
|
48
57
|
1. Read the prompt template file
|
|
49
58
|
2. Replace `{{APP_NAME}}` with the resolved app name
|
|
50
59
|
3. Replace `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
|
|
51
|
-
4.
|
|
60
|
+
4. Replace `{{MODULE_OVERVIEW}}` with the output from `erp-kit doc modules`
|
|
61
|
+
5. Dispatch the agent with the filled prompt
|
|
52
62
|
|
|
53
63
|
## Step 3: Aggregate & Present Plan
|
|
54
64
|
|
|
@@ -59,43 +69,33 @@ After ALL agents return:
|
|
|
59
69
|
- Stories to create (with actor, flow, scenario patterns)
|
|
60
70
|
- Screens to create (with type, fields, actions)
|
|
61
71
|
- Resolvers to create (with operation type, module mapping)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
## Step 4: Check Module Dependencies
|
|
72
|
+
## Step 4: Resolve Module Gaps
|
|
65
73
|
|
|
66
|
-
|
|
74
|
+
Step 2's resolver agent mapped resolvers to erp-kit modules using `MODULE_OVERVIEW` and flagged any operations that could not be mapped as module gaps.
|
|
67
75
|
|
|
68
|
-
|
|
69
|
-
ls packages/erp-kit/src/modules/
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
For each resolver that references a module command, check the module and command exist:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
ls packages/erp-kit/src/modules/<module-name>/docs/commands/
|
|
76
|
-
```
|
|
76
|
+
If there are no gaps, proceed to Step 5.
|
|
77
77
|
|
|
78
|
-
**If
|
|
78
|
+
**If resolvers require functionality that no erp-kit module provides:**
|
|
79
79
|
|
|
80
|
-
1.
|
|
81
|
-
2. Create
|
|
82
|
-
3. Return to this step after modules
|
|
80
|
+
1. Group the unmapped operations by domain to identify what custom modules are needed
|
|
81
|
+
2. Create each custom module using `erp-kit-module-1-requirements` skill
|
|
82
|
+
3. Return to this step after the custom modules are ready
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
For resolvers that reference erp-kit modules, use `MODULE_OVERVIEW` as the source of truth. For resolvers that reference custom modules, use the custom module's own documentation.
|
|
85
85
|
|
|
86
86
|
## Step 5: Scaffold & Populate
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
Scaffold using `erp-kit` CLI:
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
# Tier 3: Stories
|
|
92
|
-
erp-kit app
|
|
92
|
+
erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
|
|
93
93
|
|
|
94
94
|
# Tier 3: Screens
|
|
95
|
-
erp-kit app
|
|
95
|
+
erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
|
|
96
96
|
|
|
97
97
|
# Tier 4: Resolvers
|
|
98
|
-
erp-kit
|
|
98
|
+
erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
Fill scaffolded docs with details from agent extraction results.
|
|
@@ -117,15 +117,12 @@ Read-only stories should have `None` under `## Resolvers`.
|
|
|
117
117
|
## Step 6: Validate
|
|
118
118
|
|
|
119
119
|
```bash
|
|
120
|
-
|
|
120
|
+
erp-kit app check -p {APP_ROOT}
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
## Naming Conventions
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
- Story heading: Title Case of story name (after `--`)
|
|
127
|
-
- Screen filename: kebab-case, noun-focused (e.g., `supplier-list.md`)
|
|
128
|
-
- Resolver filename: camelCase action-verb (e.g., `createSupplierInvitation.md`)
|
|
125
|
+
See [erp-kit-app-shared/references/naming-conventions.md](../erp-kit-app-shared/references/naming-conventions.md).
|
|
129
126
|
|
|
130
127
|
## Schema Reference
|
|
131
128
|
|
|
@@ -6,11 +6,23 @@ App: {{APP_NAME}}
|
|
|
6
6
|
Actor docs: {{ACTOR_DOCS}}
|
|
7
7
|
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
8
8
|
|
|
9
|
+
## Available Modules
|
|
10
|
+
|
|
11
|
+
The following modules are available in erp-kit. Use this to map resolvers to real module commands.
|
|
12
|
+
|
|
13
|
+
{{MODULE_OVERVIEW}}
|
|
14
|
+
|
|
15
|
+
To inspect a specific module's commands in detail, run:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
erp-kit doc module <module-name> command <command-name>
|
|
19
|
+
```
|
|
20
|
+
|
|
9
21
|
## Instructions
|
|
10
22
|
|
|
11
23
|
1. Read ALL actor docs at the paths above
|
|
12
24
|
2. Read ALL business flow docs at the paths above
|
|
13
|
-
3. Identify GraphQL resolvers needed for each business flow
|
|
25
|
+
3. Identify GraphQL resolvers needed for each business flow, using the module overview and `erp-kit doc module <name> command` for detail
|
|
14
26
|
4. Return results as a structured markdown report
|
|
15
27
|
|
|
16
28
|
## Extraction Rules
|
|
@@ -21,43 +33,12 @@ For each business flow step that modifies data:
|
|
|
21
33
|
|
|
22
34
|
1. Identify the operation type (create, update, delete, approve, etc.)
|
|
23
35
|
2. Map to a resolver name using camelCase action-verb convention
|
|
24
|
-
3. Identify the module command the resolver will call
|
|
36
|
+
3. Identify the module command the resolver will call. If no erp-kit module covers the domain, flag it as a module gap.
|
|
25
37
|
4. Extract inputs, outputs, and error scenarios
|
|
26
38
|
|
|
27
39
|
### Operation → Resolver Mapping
|
|
28
40
|
|
|
29
|
-
|
|
30
|
-
| -------------------- | ------------- | ---------------------- |
|
|
31
|
-
| Create/Add entity | Mutation | `create<Entity>` |
|
|
32
|
-
| Update/Modify entity | Mutation | `update<Entity>` |
|
|
33
|
-
| Delete/Remove entity | Mutation | `delete<Entity>` |
|
|
34
|
-
| Activate entity | Mutation | `activate<Entity>` |
|
|
35
|
-
| Deactivate entity | Mutation | `deactivate<Entity>` |
|
|
36
|
-
| Assign X to Y | Mutation | `assign<X>To<Y>` |
|
|
37
|
-
| Submit/Approve | Mutation | `submit<Entity>` etc. |
|
|
38
|
-
| View/List/Get | Query | Built-in (no resolver) |
|
|
39
|
-
|
|
40
|
-
### Built-in vs Custom
|
|
41
|
-
|
|
42
|
-
| Category | Description | Implementation |
|
|
43
|
-
| -------------------- | ---------------------------------------- | -------------------- |
|
|
44
|
-
| **Custom resolvers** | Mutations that call module commands | Write resolver files |
|
|
45
|
-
| **Built-in queries** | List and get operations for reading data | Automatic, no code |
|
|
46
|
-
|
|
47
|
-
Prefer built-in queries over custom resolvers for list/get operations.
|
|
48
|
-
|
|
49
|
-
### Module Command Mapping
|
|
50
|
-
|
|
51
|
-
For each resolver, identify which erp-kit module provides the command:
|
|
52
|
-
|
|
53
|
-
| Resolver Operation | Typical Module |
|
|
54
|
-
| ------------------ | --------------------- |
|
|
55
|
-
| User invite/roles | `user-management` |
|
|
56
|
-
| Supplier CRUD | `supplier-management` |
|
|
57
|
-
| Document handling | `document-management` |
|
|
58
|
-
| Task workflows | `task-management` |
|
|
59
|
-
| Item CRUD | `item-management` |
|
|
60
|
-
| Unit/currency | `primitives` |
|
|
41
|
+
See [erp-kit-app-shared/references/resolver-classification.md](../../erp-kit-app-shared/references/resolver-classification.md) for the full operation → resolver mapping table and custom vs built-in classification.
|
|
61
42
|
|
|
62
43
|
### Resolver Content
|
|
63
44
|
|
|
@@ -96,12 +77,17 @@ For each resolver:
|
|
|
96
77
|
|
|
97
78
|
List entities that only need built-in list/get queries (no custom resolver needed).
|
|
98
79
|
|
|
99
|
-
### Module
|
|
80
|
+
### Module Gaps
|
|
81
|
+
|
|
82
|
+
List any operations that could not be mapped to an existing erp-kit module. These will require a custom module. For each gap:
|
|
100
83
|
|
|
101
|
-
|
|
84
|
+
- **Operation:** what the flow requires
|
|
85
|
+
- **Suggested custom module:** proposed module name and domain
|
|
86
|
+
- **Suggested command:** proposed command name
|
|
102
87
|
|
|
103
88
|
### Summary
|
|
104
89
|
|
|
105
90
|
- Total custom resolvers
|
|
106
91
|
- Total built-in queries
|
|
107
92
|
- Resolvers per module (table)
|
|
93
|
+
- Module gaps (if any)
|
|
@@ -6,12 +6,25 @@ App: {{APP_NAME}}
|
|
|
6
6
|
Actor docs: {{ACTOR_DOCS}}
|
|
7
7
|
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
8
8
|
|
|
9
|
+
## Available Modules
|
|
10
|
+
|
|
11
|
+
The following modules are available in erp-kit. Use this to understand which entities exist and what operations are available.
|
|
12
|
+
|
|
13
|
+
{{MODULE_OVERVIEW}}
|
|
14
|
+
|
|
15
|
+
To inspect a specific module's model (domain description, state transitions, invariants, commands), run:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
erp-kit doc module <module-name> model <model-name>
|
|
19
|
+
```
|
|
20
|
+
|
|
9
21
|
## Instructions
|
|
10
22
|
|
|
11
23
|
1. Read ALL actor docs at the paths above
|
|
12
24
|
2. Read ALL business flow docs at the paths above
|
|
13
25
|
3. Identify screens needed for each business flow
|
|
14
|
-
4.
|
|
26
|
+
4. For screens that display or edit module entities, use `erp-kit doc module <name> model` to understand the entity's domain
|
|
27
|
+
5. Return results as a structured markdown report
|
|
15
28
|
|
|
16
29
|
## Extraction Rules
|
|
17
30
|
|
|
@@ -63,6 +76,7 @@ For each screen:
|
|
|
63
76
|
|
|
64
77
|
- **Screen:** `<screen-name>`
|
|
65
78
|
- **Type:** ListView / Form / DetailView
|
|
79
|
+
- **Module source:** which module's model provides the data (if applicable)
|
|
66
80
|
- **Fields/Columns:** bulleted list of fields with types
|
|
67
81
|
- **Actions:** bulleted list of actions
|
|
68
82
|
- **Referenced by stories:** which stories use this screen
|
|
@@ -6,6 +6,12 @@ App: {{APP_NAME}}
|
|
|
6
6
|
Actor docs: {{ACTOR_DOCS}}
|
|
7
7
|
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
8
8
|
|
|
9
|
+
## Available Modules
|
|
10
|
+
|
|
11
|
+
The following modules are available in erp-kit. Use this to determine whether a story needs custom resolvers or can rely on built-in queries.
|
|
12
|
+
|
|
13
|
+
{{MODULE_OVERVIEW}}
|
|
14
|
+
|
|
9
15
|
## Instructions
|
|
10
16
|
|
|
11
17
|
1. Read ALL actor docs at the paths above
|
|
@@ -49,10 +55,10 @@ For each story, extract:
|
|
|
49
55
|
|
|
50
56
|
### Resolver Classification
|
|
51
57
|
|
|
52
|
-
For each story, determine:
|
|
58
|
+
For each story, determine using the module overview:
|
|
53
59
|
|
|
54
60
|
- **Needs resolvers**: Story involves create/update/delete operations → mark as `- TBD` for resolvers
|
|
55
|
-
- **Read-only**: Story only views/lists data → mark as `None` for resolvers
|
|
61
|
+
- **Read-only**: Story only views/lists data and built-in queries suffice → mark as `None` for resolvers
|
|
56
62
|
|
|
57
63
|
## Naming Convention
|
|
58
64
|
|
|
@@ -160,18 +160,9 @@ Numbered list of actionable fixes, grouped by priority:
|
|
|
160
160
|
2. Fix broken links
|
|
161
161
|
3. Remove or link orphans
|
|
162
162
|
|
|
163
|
-
## Link Format Reference
|
|
164
|
-
|
|
165
|
-
| From | To | Format |
|
|
166
|
-
| ------------- | ------------- | ----------------------------------- |
|
|
167
|
-
| Business Flow | Story | `./story/<actor>--<name>.md` |
|
|
168
|
-
| Business Flow | Actor | `../../actors/<actor>.md` |
|
|
169
|
-
| Actor | Business Flow | `../business-flow/<flow>/README.md` |
|
|
170
|
-
| Story | Screen | `../../../screen/<screen>.md` |
|
|
171
|
-
| Story | Resolver | `../../../resolver/<name>.md` |
|
|
172
|
-
|
|
173
163
|
## References
|
|
174
164
|
|
|
165
|
+
- [Link format reference](../erp-kit-app-shared/references/link-format-reference.md)
|
|
175
166
|
- [Parity report format](references/parity-report-format.md)
|
|
176
167
|
- For plan creation, see erp-kit-app-3-plan
|
|
177
168
|
- For implementation, see erp-kit-app-5-impl-backend
|
|
@@ -27,9 +27,13 @@ All four tiers of documentation must exist:
|
|
|
27
27
|
## Workflow
|
|
28
28
|
|
|
29
29
|
```
|
|
30
|
-
ANALYZE DOCS → MODULE WIRING → CONFIG → RESOLVERS → GENERATED FILES →
|
|
30
|
+
ANALYZE DOCS → MODULE WIRING → CONFIG → RESOLVERS → GENERATED FILES → DEPLOY
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
### Incremental Verification
|
|
34
|
+
|
|
35
|
+
Run `pnpm lint` and `pnpm typecheck` after each of Phase 2, 3, and 4. Fix errors before moving on.
|
|
36
|
+
|
|
33
37
|
### Phase 1: Analyze Documentation
|
|
34
38
|
|
|
35
39
|
Read all resolver and screen specs to build a complete picture:
|
|
@@ -38,14 +42,7 @@ Read all resolver and screen specs to build a complete picture:
|
|
|
38
42
|
2. **Screen docs** (`docs/screen/*.md`) — Identify screen types (ListView, Form, DetailView) and their fields/columns/actions
|
|
39
43
|
3. **Command source types** — For each module command the resolver calls, read the input type at `node_modules/@tailor-platform/erp-kit/src/modules/<module>/command/<commandName>.ts`. Do not invent fields that don't exist in the command, and preserve the required/optional distinction.
|
|
40
44
|
|
|
41
|
-
Classify resolvers
|
|
42
|
-
|
|
43
|
-
| Category | Description | Implementation |
|
|
44
|
-
| -------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
45
|
-
| **Custom resolvers** | Mutations that call module commands (create, update, activate, deactivate, assign) | Write `createResolver()` files |
|
|
46
|
-
| **Built-in queries** | List and get operations for reading data | Handled automatically by `gqlOperations: "query"` in config — no code needed |
|
|
47
|
-
|
|
48
|
-
Prefer built-in queries over custom resolvers for list/get operations where possible.
|
|
45
|
+
Classify resolvers per [erp-kit-app-shared/references/resolver-classification.md](../erp-kit-app-shared/references/resolver-classification.md).
|
|
49
46
|
|
|
50
47
|
### Phase 2: Wire Modules (`src/modules.ts`)
|
|
51
48
|
|
|
@@ -72,10 +69,12 @@ Key points:
|
|
|
72
69
|
|
|
73
70
|
### Phase 4: Implement Backend Resolvers and Executors
|
|
74
71
|
|
|
75
|
-
Write one file per resolver under `src/
|
|
72
|
+
Write one file per resolver under `src/resolvers/`, one per executor under `executors/`.
|
|
76
73
|
|
|
77
74
|
**Read [resolver & executor patterns reference](references/resolver-patterns.md).**
|
|
78
75
|
|
|
76
|
+
For each resolver, check whether its spec (`docs/resolver/*.md`) documents error codes. If it does, implement a `switch(result.error.code)` block — do not use generic `throw result.error`.
|
|
77
|
+
|
|
79
78
|
Do not directly mutate module-owned tables via Kysely — always use module commands.
|
|
80
79
|
|
|
81
80
|
### Phase 5: Generated Files
|
|
@@ -83,15 +82,7 @@ Do not directly mutate module-owned tables via Kysely — always use module comm
|
|
|
83
82
|
- **Kysely types** (`src/generated/kysely-tailordb.ts`) — Auto-generated by `pnpm generate` after deployment. Before deployment, create a minimal placeholder so the codebase typechecks.
|
|
84
83
|
- **Seed data** (`seed/`) — `exec.mjs` runner + `data/*.jsonl` (records) and `data/*.schema.ts` (validation). Create seed records for initial data (permissions, roles, test users, etc.). Seeded users must have concrete permission keys required by the wired modules.
|
|
85
84
|
|
|
86
|
-
### Phase 6:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
cd <app-root>/backend
|
|
90
|
-
pnpm lint
|
|
91
|
-
pnpm typecheck
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Phase 7: Deploy Backend & Next Steps
|
|
85
|
+
### Phase 6: Deploy Backend & Next Steps
|
|
95
86
|
|
|
96
87
|
Frontend implementation requires a deployed backend (for GraphQL schema generation). Prompt the user to:
|
|
97
88
|
|
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
# Application Config
|
|
2
2
|
|
|
3
|
-
`tailor.config.ts` defines the Tailor application configuration.
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
export default defineConfig({
|
|
7
|
-
name: "<app-name>",
|
|
8
|
-
cors: ["http://localhost:5173", website.url],
|
|
9
|
-
db: {
|
|
10
|
-
"main-db": {
|
|
11
|
-
files: [`./src/modules.ts`],
|
|
12
|
-
gqlOperations: "query",
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
resolver: {
|
|
16
|
-
"main-resolver": { files: [`./src/modules/**/resolvers/**/*.ts`] },
|
|
17
|
-
},
|
|
18
|
-
executor: { files: [`./src/modules/**/executors/**/*.ts`] },
|
|
19
|
-
auth: auth,
|
|
20
|
-
idp: [idp],
|
|
21
|
-
staticWebsites: [website],
|
|
22
|
-
});
|
|
23
|
-
```
|
|
3
|
+
`tailor.config.ts` defines the Tailor application configuration. Refer to existing examples in the codebase for the full config structure.
|
|
24
4
|
|
|
25
5
|
Key points:
|
|
26
6
|
|
|
@@ -30,7 +10,6 @@ Key points:
|
|
|
30
10
|
|
|
31
11
|
## Auth configuration
|
|
32
12
|
|
|
33
|
-
- Define IdP (`defineIdp`), Auth (`defineAuth`), and static website (`defineStaticWebSite`) using Tailor SDK
|
|
34
13
|
- Prefer stable default naming: auth `default`, IdP `default`, OAuth2 client `default`
|
|
35
14
|
- `userProfile.type` must reference the `user` DB type from `modules.ts`
|
|
36
15
|
- `userProfile.usernameField`: stable unique field (e.g., `email`)
|
|
@@ -42,18 +42,27 @@ body: async (context) => {
|
|
|
42
42
|
|
|
43
43
|
### Error handling
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
Resolver specs document error codes the command can return. When codes are documented, add a `case` for every documented code — generic `throw result.error` loses context for the frontend. The error code is a discriminated union, so TypeScript enforces exhaustive handling without a `default` branch.
|
|
46
|
+
|
|
47
|
+
**Do this:**
|
|
46
48
|
|
|
47
49
|
```ts
|
|
48
50
|
if (!result.ok) {
|
|
49
51
|
switch (result.error.code) {
|
|
50
|
-
case "
|
|
51
|
-
throw new Error(`
|
|
52
|
-
|
|
52
|
+
case "INSUFFICIENT_STOCK":
|
|
53
|
+
throw new Error(`Stock insufficient for item ${context.input.itemId}`);
|
|
54
|
+
case "ORDER_ALREADY_CONFIRMED":
|
|
55
|
+
throw new Error("Cannot modify a confirmed order");
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
```
|
|
56
59
|
|
|
60
|
+
**Not this:**
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
if (!result.ok) throw result.error;
|
|
64
|
+
```
|
|
65
|
+
|
|
57
66
|
Do not directly mutate module-owned tables via Kysely — always use module commands.
|
|
58
67
|
|
|
59
68
|
---
|
|
@@ -43,6 +43,8 @@ Run `pnpm generate` in the frontend directory to fetch the GraphQL schema from t
|
|
|
43
43
|
|
|
44
44
|
### Phase 3: Implement Frontend Pages
|
|
45
45
|
|
|
46
|
+
Run `pnpm lint`, `pnpm typecheck`, and `pnpm gql-tada:check` regularly during implementation. Fix errors before moving on.
|
|
47
|
+
|
|
46
48
|
Create pages driven by screen spec docs. Each screen type has a standard implementation pattern.
|
|
47
49
|
|
|
48
50
|
**Read [pages reference](references/pages.md) for the full pattern catalog.**
|
|
@@ -70,5 +72,8 @@ Key frontend patterns:
|
|
|
70
72
|
cd <app-root>/frontend
|
|
71
73
|
pnpm lint
|
|
72
74
|
pnpm typecheck
|
|
75
|
+
pnpm gql-tada:check
|
|
73
76
|
pnpm build
|
|
74
77
|
```
|
|
78
|
+
|
|
79
|
+
After verification passes, proceed to implementation review with `/erp-kit-app-7-impl-review`.
|