@tailor-platform/erp-kit 0.2.1 → 0.3.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 +18 -0
- package/README.md +154 -80
- package/dist/cli.mjs +1742 -0
- package/package.json +16 -14
- package/schemas/app-compose/story.yml +12 -0
- package/schemas/module/command.yml +9 -0
- package/schemas/module/module.yml +4 -0
- package/schemas/module/query.yml +9 -0
- package/skills/erp-kit-app-1-requirements/SKILL.md +22 -11
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +103 -0
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +71 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +74 -0
- package/skills/erp-kit-app-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +154 -0
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +89 -0
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +74 -0
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +86 -0
- package/skills/erp-kit-app-4-plan-review/SKILL.md +168 -0
- package/skills/erp-kit-app-4-plan-review/references/actor-flow-parity.md +73 -0
- package/skills/erp-kit-app-4-plan-review/references/business-flow-story-parity.md +86 -0
- package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +69 -0
- package/skills/erp-kit-app-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +83 -0
- package/skills/erp-kit-app-4-plan-review/references/story-screen-parity.md +73 -0
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +98 -0
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +38 -0
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +48 -0
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +68 -0
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +74 -0
- package/skills/{erp-kit-app-5-implementation/references/frontend.md → erp-kit-app-6-impl-frontend/references/pages.md} +8 -90
- package/skills/erp-kit-app-7-impl-review/SKILL.md +176 -0
- package/skills/erp-kit-app-7-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +84 -0
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +86 -0
- package/skills/erp-kit-app-7-impl-review/references/screen-doc-code-parity.md +86 -0
- 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 +126 -0
- package/skills/erp-kit-module-1-requirements/references/boundary-analysis.md +51 -0
- package/skills/erp-kit-module-1-requirements/references/erp-research.md +57 -0
- package/skills/erp-kit-module-1-requirements/references/feature-doc.md +61 -0
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +112 -0
- package/skills/erp-kit-module-2-requirements-review/references/best-practices-check.md +79 -0
- package/skills/erp-kit-module-2-requirements-review/references/boundary-consistency-check.md +70 -0
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +107 -0
- package/skills/erp-kit-module-3-plan/references/command-extraction.md +87 -0
- package/skills/erp-kit-module-3-plan/references/model-extraction.md +72 -0
- package/skills/{erp-kit-module-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +15 -1
- package/skills/erp-kit-module-3-plan/references/query-extraction.md +59 -0
- package/skills/erp-kit-module-4-plan-review/SKILL.md +158 -0
- package/skills/erp-kit-module-4-plan-review/references/command-model-consistency.md +46 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-command-parity.md +97 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-model-parity.md +47 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-query-parity.md +70 -0
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-module-5-impl/SKILL.md +120 -0
- package/skills/erp-kit-module-5-impl/references/command-impl.md +68 -0
- package/skills/erp-kit-module-5-impl/references/exports.md +10 -0
- package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +2 -2
- package/skills/erp-kit-module-5-impl/references/model-impl.md +45 -0
- package/skills/erp-kit-module-5-impl/references/query-impl.md +53 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +187 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-code-parity.md +92 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +93 -0
- package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +95 -0
- package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/errors.md +2 -2
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-module-6-impl-review/references/model-doc-code-parity.md +80 -0
- package/skills/erp-kit-module-shared/SKILL.md +1 -1
- package/skills/erp-kit-module-shared/references/commands.md +1 -1
- package/skills/erp-kit-module-shared/references/errors.md +13 -10
- package/skills/erp-kit-module-shared/references/queries.md +110 -37
- package/skills/erp-kit-module-shared/references/structure.md +1 -1
- package/skills/erp-kit-module-shared/references/testing.md +10 -0
- package/skills/erp-kit-update/SKILL.md +4 -4
- package/src/app.ts +1 -1
- package/src/commands/app/index.ts +57 -24
- package/src/commands/check.ts +1 -1
- package/src/commands/generate-doc.test.ts +63 -0
- package/src/commands/generate-doc.ts +98 -0
- package/src/commands/index.ts +16 -5
- package/src/commands/init-module.test.ts +43 -0
- package/src/commands/init-module.ts +74 -0
- package/src/commands/init.test.ts +22 -69
- package/src/commands/init.ts +28 -115
- package/src/commands/lib/distribute.test.ts +126 -0
- package/src/commands/lib/distribute.ts +129 -0
- package/src/commands/module/generate.ts +33 -13
- package/src/commands/module/index.ts +18 -28
- package/src/commands/parse-doc-test-cases.ts +55 -0
- package/src/commands/sync-check.test.ts +173 -0
- package/src/commands/sync-check.ts +103 -2
- package/src/commands/update.test.ts +87 -0
- package/src/commands/update.ts +41 -0
- package/src/generator/generate-code-boilerplate.test.ts +142 -0
- package/src/generator/generate-code.test.ts +47 -12
- package/src/generator/generate-code.ts +123 -20
- package/src/integration.test.ts +3 -3
- package/src/module.ts +14 -97
- package/src/modules/item-management/README.md +8 -0
- package/src/modules/item-management/command/activateItem.generated.ts +1 -1
- package/src/modules/item-management/command/activateItem.test.ts +12 -18
- package/src/modules/item-management/command/activateItem.ts +9 -5
- package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/assignItemToTaxonomy.test.ts +10 -24
- package/src/modules/item-management/command/assignItemToTaxonomy.ts +19 -16
- package/src/modules/item-management/command/createItem.generated.ts +1 -1
- package/src/modules/item-management/command/createItem.test.ts +11 -11
- package/src/modules/item-management/command/createItem.ts +16 -7
- package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.test.ts +9 -9
- package/src/modules/item-management/command/createTaxonomyNode.ts +33 -14
- package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/deactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/deactivateItem.ts +9 -5
- package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
- package/src/modules/item-management/command/deleteItem.test.ts +10 -16
- package/src/modules/item-management/command/deleteItem.ts +9 -5
- package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/deleteTaxonomyNode.test.ts +10 -16
- package/src/modules/item-management/command/deleteTaxonomyNode.ts +22 -12
- package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.test.ts +10 -10
- package/src/modules/item-management/command/moveTaxonomyNode.ts +63 -19
- package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/reactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/reactivateItem.ts +9 -5
- package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/removeItemFromTaxonomy.test.ts +9 -16
- package/src/modules/item-management/command/removeItemFromTaxonomy.ts +11 -6
- package/src/modules/item-management/command/updateItem.generated.ts +1 -1
- package/src/modules/item-management/command/updateItem.test.ts +16 -16
- package/src/modules/item-management/command/updateItem.ts +11 -6
- package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/updateTaxonomyNode.test.ts +14 -20
- package/src/modules/item-management/command/updateTaxonomyNode.ts +9 -6
- package/src/modules/item-management/docs/commands/ActivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/AssignItemToTaxonomy.md +7 -0
- package/src/modules/item-management/docs/commands/CreateItem.md +10 -0
- package/src/modules/item-management/docs/commands/CreateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/commands/DeactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/DeleteItem.md +7 -0
- package/src/modules/item-management/docs/commands/DeleteTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/commands/MoveTaxonomyNode.md +10 -0
- package/src/modules/item-management/docs/commands/ReactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/RemoveItemFromTaxonomy.md +5 -0
- package/src/modules/item-management/docs/commands/UpdateItem.md +15 -0
- package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/queries/CalculateNodeDepth.md +8 -0
- package/src/modules/item-management/docs/queries/CalculateSubtreeDepth.md +7 -0
- package/src/modules/item-management/docs/queries/DetectCircularReference.md +9 -0
- package/src/modules/item-management/docs/queries/GetItem.md +9 -0
- package/src/modules/item-management/docs/queries/GetItemTaxonomyAssignment.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeAssignments.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeChildren.md +6 -0
- package/src/modules/item-management/index.ts +0 -51
- package/src/modules/item-management/lib/errors.generated.ts +24 -24
- package/src/modules/item-management/lib/permissions.generated.ts +1 -1
- package/src/modules/item-management/lib/types.ts +1 -1
- package/src/modules/item-management/module.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.test.ts +21 -6
- package/src/modules/item-management/query/calculateNodeDepth.ts +2 -2
- package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateSubtreeDepth.test.ts +17 -5
- package/src/modules/item-management/query/calculateSubtreeDepth.ts +2 -2
- package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
- package/src/modules/item-management/query/detectCircularReference.test.ts +25 -7
- package/src/modules/item-management/query/detectCircularReference.ts +4 -4
- package/src/modules/item-management/query/getItem.generated.ts +1 -1
- package/src/modules/item-management/query/getItem.test.ts +25 -7
- package/src/modules/item-management/query/getItem.ts +2 -2
- package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
- package/src/modules/item-management/query/getItemTaxonomyAssignment.test.ts +9 -3
- package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNode.test.ts +17 -5
- package/src/modules/item-management/query/getTaxonomyNode.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.test.ts +9 -3
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeChildren.test.ts +13 -4
- package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +2 -2
- package/src/modules/item-management/tailor.config.ts +6 -4
- package/src/modules/item-management/tailor.d.ts +13 -0
- package/src/modules/primitives/README.md +8 -0
- package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/activateCategory.test.ts +8 -18
- package/src/modules/primitives/command/activateCategory.ts +9 -5
- package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/activateCurrency.test.ts +8 -18
- package/src/modules/primitives/command/activateCurrency.ts +9 -5
- package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/activateUnit.test.ts +8 -15
- package/src/modules/primitives/command/activateUnit.ts +9 -5
- package/src/modules/primitives/command/createCategory.generated.ts +1 -1
- package/src/modules/primitives/command/createCategory.test.ts +29 -44
- package/src/modules/primitives/command/createCategory.ts +9 -5
- package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/createCurrency.test.ts +53 -78
- package/src/modules/primitives/command/createCurrency.ts +9 -6
- package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
- package/src/modules/primitives/command/createExchangeRate.test.ts +59 -97
- package/src/modules/primitives/command/createExchangeRate.ts +13 -7
- package/src/modules/primitives/command/createUnit.generated.ts +1 -1
- package/src/modules/primitives/command/createUnit.test.ts +59 -90
- package/src/modules/primitives/command/createUnit.ts +9 -6
- package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCategory.test.ts +15 -33
- package/src/modules/primitives/command/deactivateCategory.ts +9 -5
- package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCurrency.test.ts +12 -26
- package/src/modules/primitives/command/deactivateCurrency.ts +9 -5
- package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateUnit.test.ts +15 -30
- package/src/modules/primitives/command/deactivateUnit.ts +14 -7
- package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +18 -40
- package/src/modules/primitives/command/setBaseCurrency.ts +15 -7
- package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.test.ts +22 -44
- package/src/modules/primitives/command/setReferenceUnit.ts +21 -9
- package/src/modules/primitives/docs/commands/ActivateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateUnit.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCurrency.md +10 -0
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +11 -0
- package/src/modules/primitives/docs/commands/CreateUnit.md +10 -0
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +7 -0
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +7 -0
- package/src/modules/primitives/docs/queries/ConvertAmount.md +14 -0
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +13 -0
- package/src/modules/primitives/docs/queries/GetBaseCurrency.md +5 -0
- package/src/modules/primitives/docs/queries/GetCurrency.md +7 -0
- package/src/modules/primitives/docs/queries/GetUnit.md +7 -0
- package/src/modules/primitives/docs/queries/GetUoMCategory.md +7 -0
- package/src/modules/primitives/docs/queries/ListUnitsByCategory.md +15 -5
- package/src/modules/primitives/index.ts +0 -49
- package/src/modules/primitives/lib/errors.generated.ts +23 -23
- package/src/modules/primitives/lib/permissions.generated.ts +1 -1
- package/src/modules/primitives/lib/types.ts +1 -1
- package/src/modules/primitives/module.ts +1 -1
- package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
- package/src/modules/primitives/query/convertAmount.test.ts +110 -77
- package/src/modules/primitives/query/convertAmount.ts +61 -47
- package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.test.ts +99 -69
- package/src/modules/primitives/query/convertQuantity.ts +12 -10
- package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.test.ts +10 -4
- package/src/modules/primitives/query/getBaseCurrency.ts +2 -2
- package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getCurrency.test.ts +17 -5
- package/src/modules/primitives/query/getCurrency.ts +2 -2
- package/src/modules/primitives/query/getUnit.generated.ts +1 -1
- package/src/modules/primitives/query/getUnit.test.ts +17 -5
- package/src/modules/primitives/query/getUnit.ts +2 -2
- package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
- package/src/modules/primitives/query/getUoMCategory.test.ts +17 -5
- package/src/modules/primitives/query/getUoMCategory.ts +2 -2
- package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
- package/src/modules/primitives/query/listUnitsByCategory.test.ts +80 -0
- package/src/modules/primitives/query/listUnitsByCategory.ts +19 -3
- package/src/modules/primitives/tailor.config.ts +6 -4
- package/src/modules/primitives/tailor.d.ts +13 -0
- package/src/modules/product-management/README.md +52 -0
- package/src/modules/product-management/command/activateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/activateProduct.test.ts +40 -0
- package/src/modules/product-management/command/activateProduct.ts +42 -0
- package/src/modules/product-management/command/assignProductToCategory.generated.ts +6 -0
- package/src/modules/product-management/command/assignProductToCategory.test.ts +90 -0
- package/src/modules/product-management/command/assignProductToCategory.ts +62 -0
- package/src/modules/product-management/command/createProduct.generated.ts +6 -0
- package/src/modules/product-management/command/createProduct.test.ts +149 -0
- package/src/modules/product-management/command/createProduct.ts +73 -0
- package/src/modules/product-management/command/createProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttribute.test.ts +70 -0
- package/src/modules/product-management/command/createProductAttribute.ts +53 -0
- package/src/modules/product-management/command/createProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttributeValue.test.ts +68 -0
- package/src/modules/product-management/command/createProductAttributeValue.ts +63 -0
- package/src/modules/product-management/command/createProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/createProductCategory.test.ts +135 -0
- package/src/modules/product-management/command/createProductCategory.ts +82 -0
- package/src/modules/product-management/command/deactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/deactivateProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProduct.test.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttribute.test.ts +49 -0
- package/src/modules/product-management/command/deleteProductAttribute.ts +45 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.test.ts +71 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.ts +68 -0
- package/src/modules/product-management/command/deleteProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductCategory.test.ts +74 -0
- package/src/modules/product-management/command/deleteProductCategory.ts +53 -0
- package/src/modules/product-management/command/generateVariants.generated.ts +6 -0
- package/src/modules/product-management/command/generateVariants.test.ts +365 -0
- package/src/modules/product-management/command/generateVariants.ts +168 -0
- package/src/modules/product-management/command/moveProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/moveProductCategory.test.ts +170 -0
- package/src/modules/product-management/command/moveProductCategory.ts +124 -0
- package/src/modules/product-management/command/reactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/reactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/reactivateProduct.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.generated.ts +6 -0
- package/src/modules/product-management/command/removeProductFromCategory.test.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.ts +32 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +6 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +206 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.ts +102 -0
- package/src/modules/product-management/command/updateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/updateProduct.test.ts +168 -0
- package/src/modules/product-management/command/updateProduct.ts +95 -0
- package/src/modules/product-management/command/updateProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttribute.test.ts +101 -0
- package/src/modules/product-management/command/updateProductAttribute.ts +68 -0
- package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttributeValue.test.ts +80 -0
- package/src/modules/product-management/command/updateProductAttributeValue.ts +58 -0
- package/src/modules/product-management/command/updateProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductCategory.test.ts +80 -0
- package/src/modules/product-management/command/updateProductCategory.ts +66 -0
- package/src/modules/product-management/db/product.ts +47 -0
- package/src/modules/product-management/db/productAttribute.ts +26 -0
- package/src/modules/product-management/db/productAttributeAssignment.ts +58 -0
- package/src/modules/product-management/db/productAttributeValue.ts +39 -0
- package/src/modules/product-management/db/productCategory.ts +34 -0
- package/src/modules/product-management/db/productCategoryAssignment.ts +49 -0
- package/src/modules/product-management/db/productVariant.ts +52 -0
- package/src/modules/product-management/docs/commands/ActivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/AssignProductToCategory.md +43 -0
- package/src/modules/product-management/docs/commands/CreateProduct.md +48 -0
- package/src/modules/product-management/docs/commands/CreateProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/CreateProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/CreateProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/DeactivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProduct.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductCategory.md +43 -0
- package/src/modules/product-management/docs/commands/GenerateVariants.md +68 -0
- package/src/modules/product-management/docs/commands/MoveProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/ReactivateProduct.md +38 -0
- package/src/modules/product-management/docs/commands/RemoveProductFromCategory.md +34 -0
- package/src/modules/product-management/docs/commands/SetProductAttributeAssignment.md +62 -0
- package/src/modules/product-management/docs/commands/UpdateProduct.md +61 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +46 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttributeValue.md +47 -0
- package/src/modules/product-management/docs/commands/UpdateProductCategory.md +46 -0
- package/src/modules/product-management/docs/features/attribute-management.md +48 -0
- package/src/modules/product-management/docs/features/product-category.md +71 -0
- package/src/modules/product-management/docs/features/product-lifecycle.md +66 -0
- package/src/modules/product-management/docs/features/variant-generation.md +77 -0
- package/src/modules/product-management/docs/models/Product.md +58 -0
- package/src/modules/product-management/docs/models/ProductAttribute.md +37 -0
- package/src/modules/product-management/docs/models/ProductAttributeAssignment.md +41 -0
- package/src/modules/product-management/docs/models/ProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/models/ProductCategory.md +46 -0
- package/src/modules/product-management/docs/models/ProductCategoryAssignment.md +37 -0
- package/src/modules/product-management/docs/models/ProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/CalculateCategoryDepth.md +47 -0
- package/src/modules/product-management/docs/queries/DetectCategoryCircularReference.md +51 -0
- package/src/modules/product-management/docs/queries/GetProduct.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttribute.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/queries/GetProductCategory.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductCategoryAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/ListAttributeAssignmentsByAttribute.md +34 -0
- package/src/modules/product-management/docs/queries/ListCategoryAssignmentsByProduct.md +35 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeValues.md +36 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryChildren.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductVariants.md +34 -0
- package/src/modules/product-management/generated/enums.ts +9 -0
- package/src/modules/product-management/generated/kysely-tailordb.ts +100 -0
- package/src/modules/product-management/index.ts +2 -0
- package/src/modules/product-management/lib/_db_deps.ts +17 -0
- package/src/modules/product-management/lib/errors.generated.ts +152 -0
- package/src/modules/product-management/lib/permissions.generated.ts +25 -0
- package/src/modules/product-management/lib/types.ts +51 -0
- package/src/modules/product-management/module.ts +201 -0
- package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +5 -0
- package/src/modules/product-management/query/calculateCategoryDepth.test.ts +72 -0
- package/src/modules/product-management/query/calculateCategoryDepth.ts +37 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +5 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.test.ts +72 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.ts +44 -0
- package/src/modules/product-management/query/getProduct.generated.ts +5 -0
- package/src/modules/product-management/query/getProduct.test.ts +59 -0
- package/src/modules/product-management/query/getProduct.ts +18 -0
- package/src/modules/product-management/query/getProductAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttribute.test.ts +59 -0
- package/src/modules/product-management/query/getProductAttribute.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeValue.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeValue.test.ts +31 -0
- package/src/modules/product-management/query/getProductAttributeValue.ts +16 -0
- package/src/modules/product-management/query/getProductCategory.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategory.test.ts +59 -0
- package/src/modules/product-management/query/getProductCategory.ts +18 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductVariant.generated.ts +5 -0
- package/src/modules/product-management/query/getProductVariant.test.ts +43 -0
- package/src/modules/product-management/query/getProductVariant.ts +20 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.test.ts +31 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +16 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +5 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.test.ts +31 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeValues.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeValues.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeValues.ts +17 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryChildren.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryChildren.ts +16 -0
- package/src/modules/product-management/query/listProductVariants.generated.ts +5 -0
- package/src/modules/product-management/query/listProductVariants.test.ts +31 -0
- package/src/modules/product-management/query/listProductVariants.ts +16 -0
- package/src/modules/product-management/tailor.config.ts +13 -0
- package/src/modules/product-management/tailor.d.ts +13 -0
- package/src/modules/product-management/testing/fixtures.ts +151 -0
- package/src/modules/user-management/README.md +9 -3
- package/src/modules/user-management/command/activateUser.generated.ts +1 -1
- package/src/modules/user-management/command/activateUser.test.ts +12 -65
- package/src/modules/user-management/command/activateUser.ts +5 -20
- package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
- package/src/modules/user-management/command/assignPermissionToRole.test.ts +25 -60
- package/src/modules/user-management/command/assignPermissionToRole.ts +5 -24
- package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
- package/src/modules/user-management/command/assignRoleToUser.test.ts +35 -87
- package/src/modules/user-management/command/assignRoleToUser.ts +5 -24
- package/src/modules/user-management/command/createPermission.generated.ts +1 -1
- package/src/modules/user-management/command/createPermission.test.ts +23 -33
- package/src/modules/user-management/command/createPermission.ts +4 -5
- package/src/modules/user-management/command/createRole.generated.ts +1 -1
- package/src/modules/user-management/command/createRole.test.ts +17 -27
- package/src/modules/user-management/command/createRole.ts +4 -5
- package/src/modules/user-management/command/createUser.generated.ts +1 -1
- package/src/modules/user-management/command/createUser.test.ts +31 -118
- package/src/modules/user-management/command/createUser.ts +7 -25
- package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/deactivateUser.test.ts +12 -65
- package/src/modules/user-management/command/deactivateUser.ts +6 -21
- package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/reactivateUser.test.ts +13 -66
- package/src/modules/user-management/command/reactivateUser.ts +5 -20
- package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
- package/src/modules/user-management/command/revokePermissionFromRole.test.ts +24 -62
- package/src/modules/user-management/command/revokePermissionFromRole.ts +5 -24
- package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
- package/src/modules/user-management/command/revokeRoleFromUser.test.ts +24 -60
- package/src/modules/user-management/command/revokeRoleFromUser.ts +5 -24
- package/src/modules/user-management/docs/commands/ActivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/AssignPermissionToRole.md +7 -0
- package/src/modules/user-management/docs/commands/AssignRoleToUser.md +9 -0
- package/src/modules/user-management/docs/commands/CreatePermission.md +12 -0
- package/src/modules/user-management/docs/commands/CreateRole.md +9 -0
- package/src/modules/user-management/docs/commands/CreateUser.md +11 -0
- package/src/modules/user-management/docs/commands/DeactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/ReactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/RevokePermissionFromRole.md +7 -0
- package/src/modules/user-management/docs/commands/RevokeRoleFromUser.md +7 -0
- package/src/modules/user-management/index.ts +0 -30
- package/src/modules/user-management/lib/errors.generated.ts +14 -14
- package/src/modules/user-management/lib/permissions.generated.ts +1 -2
- package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -3
- package/src/modules/user-management/lib/types.ts +1 -1
- package/src/modules/user-management/module.ts +2 -7
- package/src/modules/user-management/tailor.config.ts +6 -4
- package/src/modules/user-management/tailor.d.ts +13 -0
- package/src/modules/user-management/testing/fixtures.ts +1 -20
- package/src/schemas.ts +1 -1
- package/src/{modules/shared → shared}/defineCommand.test.ts +23 -7
- package/src/{modules/shared → shared}/defineCommand.ts +19 -10
- package/src/{modules/shared/internal.ts → shared/index.ts} +9 -1
- package/src/shared/pagination.test.ts +43 -0
- package/src/shared/pagination.ts +22 -0
- package/src/{modules/shared → shared}/types.ts +13 -0
- package/src/{modules/testing → testing}/index.ts +14 -7
- package/src/testing.ts +1 -1
- package/src/util.ts +8 -0
- package/templates/config/license.config.json +4 -0
- package/templates/scaffold/app/backend/.env.example +1 -0
- package/templates/scaffold/app/backend/__dot__gitignore +4 -0
- package/templates/scaffold/app/backend/eslint.config.js +32 -0
- package/templates/scaffold/app/backend/package.json +31 -0
- package/templates/scaffold/app/backend/seed/data/AuditEvent.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/Role.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Role.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/User.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/_User.schema.ts +30 -0
- package/templates/scaffold/app/backend/seed/exec.mjs +659 -0
- package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +3 -0
- package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +3 -0
- package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +83 -0
- package/templates/scaffold/app/backend/src/modules.ts +9 -0
- package/templates/scaffold/app/backend/src/resolvers/createUser.ts +46 -0
- package/templates/scaffold/app/backend/tailor.config.ts +68 -0
- package/templates/scaffold/app/backend/tailor.d.ts +15 -0
- package/templates/scaffold/app/backend/tsconfig.json +19 -0
- package/templates/scaffold/app/docs/actors/.gitkeep +0 -0
- package/templates/scaffold/app/docs/business-flow/.gitkeep +0 -0
- package/templates/scaffold/app/docs/resolver/.gitkeep +0 -0
- package/templates/scaffold/app/docs/screen/.gitkeep +0 -0
- package/templates/scaffold/app/frontend/.env.example +2 -0
- package/templates/scaffold/app/frontend/__dot__gitignore +3 -0
- package/templates/scaffold/app/frontend/components.json +23 -0
- package/templates/scaffold/app/frontend/eslint.config.js +48 -0
- package/templates/scaffold/app/frontend/index.html +13 -0
- package/templates/scaffold/app/frontend/package.json +53 -0
- package/templates/scaffold/app/frontend/scripts/generate-graphql.mjs +6 -0
- package/templates/scaffold/app/frontend/src/App.tsx +58 -0
- package/templates/scaffold/app/frontend/src/components/composed/empty-state.tsx +26 -0
- package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +28 -0
- package/templates/scaffold/app/frontend/src/components/composed/loading.tsx +13 -0
- package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +39 -0
- package/templates/scaffold/app/frontend/src/components/ui/button.tsx +60 -0
- package/templates/scaffold/app/frontend/src/components/ui/card.tsx +75 -0
- package/templates/scaffold/app/frontend/src/components/ui/form.tsx +152 -0
- package/templates/scaffold/app/frontend/src/components/ui/input.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/label.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/spinner.tsx +16 -0
- package/templates/scaffold/app/frontend/src/components/ui/table.tsx +90 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +103 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1235 -0
- package/templates/scaffold/app/frontend/src/graphql/index.ts +15 -0
- package/templates/scaffold/app/frontend/src/index.css +5 -0
- package/templates/scaffold/app/frontend/src/lib/auth-client.ts +17 -0
- package/templates/scaffold/app/frontend/src/lib/utils.ts +6 -0
- package/templates/scaffold/app/frontend/src/main.tsx +10 -0
- package/templates/scaffold/app/frontend/src/pages/page.tsx +20 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +97 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +58 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +51 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +101 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +99 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +61 -0
- package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +21 -0
- package/templates/scaffold/app/frontend/tsconfig.app.json +35 -0
- package/templates/scaffold/app/frontend/tsconfig.json +16 -0
- package/templates/scaffold/app/frontend/tsconfig.node.json +23 -0
- package/templates/scaffold/app/frontend/vite.config.ts +23 -0
- package/templates/scaffold/module/command/.gitkeep +0 -0
- package/templates/scaffold/module/db/.gitkeep +0 -0
- package/templates/scaffold/module/executor/.gitkeep +0 -0
- package/templates/scaffold/module/generated/.gitkeep +0 -0
- package/templates/scaffold/module/index.ts +2 -0
- package/templates/scaffold/module/lib/errors.ts +1 -0
- package/templates/scaffold/module/lib/types.ts +4 -0
- package/templates/scaffold/module/module.ts +7 -0
- package/templates/scaffold/module/permissions.ts +3 -0
- package/templates/scaffold/module/query/.gitkeep +0 -0
- package/templates/scaffold/module/tailor.config.ts +13 -0
- package/templates/scaffold/module/testing/fixtures.ts +1 -0
- package/templates/workflows/erp-kit-check.yml +37 -0
- package/dist/cli.js +0 -1654
- package/skills/erp-kit-app-2-breakdown/SKILL.md +0 -88
- package/skills/erp-kit-app-3-doc-review/SKILL.md +0 -112
- package/skills/erp-kit-app-4-impl-spec/SKILL.md +0 -116
- package/skills/erp-kit-app-5-implementation/SKILL.md +0 -149
- package/skills/erp-kit-app-5-implementation/references/backend.md +0 -232
- package/skills/erp-kit-module-1-docs/SKILL.md +0 -111
- package/skills/erp-kit-module-2-feature-breakdown/SKILL.md +0 -76
- package/skills/erp-kit-module-3-doc-review/SKILL.md +0 -294
- package/skills/erp-kit-module-4-tdd/SKILL.md +0 -94
- package/skills/erp-kit-module-4-tdd/references/exports.md +0 -8
- package/skills/erp-kit-module-5-impl-review/SKILL.md +0 -410
- package/src/commands/scaffold-templates.ts +0 -65
- package/src/commands/scaffold.test.ts +0 -171
- package/src/commands/scaffold.ts +0 -140
- package/src/modules/shared/index.ts +0 -1
- package/src/modules/user-management/command/logAuditEvent.generated.ts +0 -6
- package/src/modules/user-management/command/logAuditEvent.test.ts +0 -187
- package/src/modules/user-management/command/logAuditEvent.ts +0 -56
- package/src/modules/user-management/db/auditEvent.ts +0 -47
- package/src/modules/user-management/docs/commands/LogAuditEvent.md +0 -37
- package/src/modules/user-management/docs/features/audit-trail.md +0 -80
- package/src/modules/user-management/docs/models/AuditEvent.md +0 -36
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/cross-module-dependency.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/db-relations.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/models.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/commands.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/testing.md +0 -0
- /package/src/modules/{product-management → audit}/.gitkeep +0 -0
- /package/src/{modules/shared → shared}/createContext.test.ts +0 -0
- /package/src/{modules/shared → shared}/createContext.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.test.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.test.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.ts +0 -0
- /package/src/{modules/shared → shared}/entityTypes.ts +0 -0
- /package/src/{modules/shared → shared}/errors.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.test.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.ts +0 -0
- /package/src/{modules/shared → shared}/result.ts +0 -0
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: erp-kit-module-1-docs
|
|
3
|
-
description: Create ERP module documentation following framework schemas. Use when starting a new module, documenting an existing module, or when user asks to create module docs, feature docs, or design module features. Guides collaborative research, scoping, and iterative feature breakdown.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Module Documentation Workflow
|
|
7
|
-
|
|
8
|
-
Collaborative workflow for creating ERP module documentation. Human and AI work together through research, scoping, design validation, and iterative refinement.
|
|
9
|
-
|
|
10
|
-
## Workflow Phases
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
RESEARCH → SCOPE → DESIGN → CREATE → REVIEW
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### Phase 1: Research
|
|
17
|
-
|
|
18
|
-
Study established ERP solutions for the module domain:
|
|
19
|
-
|
|
20
|
-
1. **Web search** Odoo, Oracle ERP Cloud, SAP for the domain (e.g., "Odoo inventory management features")
|
|
21
|
-
2. **Fetch documentation** from official sources when available
|
|
22
|
-
3. **Identify** common features, models, workflows, compliance requirements
|
|
23
|
-
4. **Summarize** findings before proceeding
|
|
24
|
-
|
|
25
|
-
Key ERP references:
|
|
26
|
-
|
|
27
|
-
- Odoo: https://www.odoo.com/documentation/19.0/applications.html
|
|
28
|
-
- Oracle: https://docs.oracle.com/en/cloud/saas/index.html
|
|
29
|
-
- SAP: Search SAP Docs
|
|
30
|
-
|
|
31
|
-
### Phase 2: Scope
|
|
32
|
-
|
|
33
|
-
Present scope options to user. Use AskUserQuestion:
|
|
34
|
-
|
|
35
|
-
| Option | Description |
|
|
36
|
-
| ---------------------- | ----------------------------------------------------------------------- |
|
|
37
|
-
| **Minimal** | Core entities only, basic CRUD, no workflows |
|
|
38
|
-
| **Core (Recommended)** | Essential features for production use, foundational for other modules |
|
|
39
|
-
| **Comprehensive** | Full feature set including advanced workflows, compliance, integrations |
|
|
40
|
-
|
|
41
|
-
Wait for user selection before proceeding.
|
|
42
|
-
|
|
43
|
-
### Phase 3: Design
|
|
44
|
-
|
|
45
|
-
Present features incrementally for validation:
|
|
46
|
-
|
|
47
|
-
1. **List proposed features** as a table (feature name, purpose)
|
|
48
|
-
2. **Wait for user approval** of feature list
|
|
49
|
-
3. For each feature, briefly describe:
|
|
50
|
-
- What it does
|
|
51
|
-
- Key scenarios
|
|
52
|
-
4. **Ask**: "Does this feature breakdown look right?"
|
|
53
|
-
|
|
54
|
-
Keep descriptions concise (~100-200 words per section). Do not present all details at once.
|
|
55
|
-
|
|
56
|
-
### Phase 4: Create
|
|
57
|
-
|
|
58
|
-
Generate documentation following framework schemas.
|
|
59
|
-
|
|
60
|
-
**File structure:**
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
modules/<module-name>/
|
|
64
|
-
├── README.md # module.yml schema
|
|
65
|
-
└── docs/
|
|
66
|
-
└── features/
|
|
67
|
-
└── <feature-name>.md # feature.yml schema
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**Naming conventions:**
|
|
71
|
-
|
|
72
|
-
- Feature files: kebab-case (e.g., `role-based-access-control.md`)
|
|
73
|
-
- Headings: Title Case
|
|
74
|
-
|
|
75
|
-
Create with `erp-kit` CLI:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
erp-kit scaffold --modules-root modules module <module-name>
|
|
79
|
-
erp-kit scaffold --modules-root modules feature <module-name> <feature-name>
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Phase 5: Review
|
|
83
|
-
|
|
84
|
-
After creating docs, user reviews and may request changes:
|
|
85
|
-
|
|
86
|
-
**Split detection**: If a feature covers multiple distinct workflows, split into separate feature files.
|
|
87
|
-
|
|
88
|
-
**Iteration pattern:**
|
|
89
|
-
|
|
90
|
-
1. User identifies issue (e.g., "X is too broad, split it")
|
|
91
|
-
2. Create new feature file for split-out content
|
|
92
|
-
3. Remove split content from original file
|
|
93
|
-
4. Update README.md feature list if needed
|
|
94
|
-
|
|
95
|
-
Continue iterating until user approves.
|
|
96
|
-
|
|
97
|
-
# Framework Schemas Reference
|
|
98
|
-
|
|
99
|
-
Schemas are bundled in `@tailor-platform/erp-kit`.
|
|
100
|
-
|
|
101
|
-
## Validation
|
|
102
|
-
|
|
103
|
-
Always run before completing:
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
pnpm run module:doc:check
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## References
|
|
110
|
-
|
|
111
|
-
- [Module structure](../erp-kit-module-shared/references/structure.md)
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: erp-kit-module-2-feature-breakdown
|
|
3
|
-
description: Use when breaking down a feature spec into model, command, and query documentation. Triggers on feature implementation planning, creating model docs, creating command docs, creating query docs, or when user references model.yml/command.yml schemas.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Feature Breakdown to Model/Command/Query Docs
|
|
7
|
-
|
|
8
|
-
Convert feature specifications into structured model, command, and query documentation following framework schemas.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
- User has a feature spec (e.g., `docs/features/*.md`) and wants implementation docs
|
|
13
|
-
- User asks to create model, command, or query documentation
|
|
14
|
-
- User references `model.yml` or `command.yml` schemas
|
|
15
|
-
|
|
16
|
-
## Workflow
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
ANALYZE → SCAFFOLD → POPULATE → VALIDATE
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### 1. Analyze
|
|
23
|
-
|
|
24
|
-
Read the feature spec and identify:
|
|
25
|
-
|
|
26
|
-
- **Models**: Entities with state, fields, relationships
|
|
27
|
-
- **Commands**: Operations that change state (look for verbs in state diagrams)
|
|
28
|
-
- **Queries**: Read-only operations for external consumers — lookups, conversions, aggregations. See [CQRS read rule](../erp-kit-module-shared/references/commands.md#command-side-reads-cqrs-separation)
|
|
29
|
-
|
|
30
|
-
### 2. Scaffold
|
|
31
|
-
|
|
32
|
-
For each model, command, and query, scaffold the documentation files using `erp-kit` CLI:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
erp-kit scaffold --modules-root modules model <module-name> <model-name>
|
|
36
|
-
erp-kit scaffold --modules-root modules command <module-name> <command-name>
|
|
37
|
-
erp-kit scaffold --modules-root modules query <module-name> <query-name>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 3. Populate
|
|
41
|
-
|
|
42
|
-
Fill in the scaffolded docs with details analyzed from Step 1.
|
|
43
|
-
|
|
44
|
-
### 4. Validate
|
|
45
|
-
|
|
46
|
-
Run `pnpm run module:doc:check` and fix any violations.
|
|
47
|
-
|
|
48
|
-
## Schema Quick Reference
|
|
49
|
-
|
|
50
|
-
Schemas are bundled in `@tailor-platform/erp-kit` (model.yml, command.yml).
|
|
51
|
-
|
|
52
|
-
## Common Patterns
|
|
53
|
-
|
|
54
|
-
| Feature Element | Documentation Type |
|
|
55
|
-
| --------------------- | -------------------------------- |
|
|
56
|
-
| Entity with fields | Model doc |
|
|
57
|
-
| State machine | Model doc with State Transitions |
|
|
58
|
-
| Verb in state diagram | Command doc |
|
|
59
|
-
| CRUD operation | Command doc |
|
|
60
|
-
| Validation logic | Command doc Business Rules |
|
|
61
|
-
| Data lookup | Query doc |
|
|
62
|
-
| Unit/currency convert | Query doc |
|
|
63
|
-
| Computed aggregation | Query doc |
|
|
64
|
-
|
|
65
|
-
## Validation
|
|
66
|
-
|
|
67
|
-
Always run before completing:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
pnpm run module:doc:check
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## References
|
|
74
|
-
|
|
75
|
-
- [Command naming convention](references/naming.md)
|
|
76
|
-
- [Module structure](../erp-kit-module-shared/references/structure.md)
|
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: erp-kit-module-3-doc-review
|
|
3
|
-
description: Review feature parity between feature documentation and command/model/query documentation. Use when validating that all feature scenarios are covered by command docs, all read operations have query docs, and that all required models exist.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Feature Parity Review Workflow
|
|
7
|
-
|
|
8
|
-
Review **documentation consistency** between feature specs and command/model/query docs.
|
|
9
|
-
|
|
10
|
-
## Purpose
|
|
11
|
-
|
|
12
|
-
Verify that feature documentation (high-level business requirements) is properly covered by command documentation (write operations), query documentation (read operations), and model documentation (data structures).
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
Feature Docs (What) → Command Docs (How) → Model Docs (With What)
|
|
16
|
-
↓ ↓ ↓
|
|
17
|
-
Scenarios Business Rules Data Structures
|
|
18
|
-
Process Flows Error Scenarios Relationships
|
|
19
|
-
Test Cases Process Flows Constraints
|
|
20
|
-
Query Docs (Read)
|
|
21
|
-
↓
|
|
22
|
-
Lookups, Conversions
|
|
23
|
-
Aggregations
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## When to Use
|
|
27
|
-
|
|
28
|
-
- After writing feature documentation, check for gaps in command/model/query documentation
|
|
29
|
-
- After writing command/model/query documentation, verify consistency with features
|
|
30
|
-
- Quality check during documentation review
|
|
31
|
-
|
|
32
|
-
## Workflow
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
FEATURE DOCS → COMMAND DOCS → QUERY DOCS → MODEL DOCS → COMPARE → REPORT
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Step-by-Step
|
|
39
|
-
|
|
40
|
-
### 1. Read Feature Documentation
|
|
41
|
-
|
|
42
|
-
Read ALL feature docs:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
modules/<module-name>/docs/features/*.md
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 2. Read Command Documentation
|
|
49
|
-
|
|
50
|
-
Read ALL command docs:
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
modules/<module-name>/docs/commands/*.md
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### 3. Read Query Documentation
|
|
57
|
-
|
|
58
|
-
Read ALL query docs:
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
modules/<module-name>/docs/queries/*.md
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 4. Read Model Documentation
|
|
65
|
-
|
|
66
|
-
Read ALL model docs:
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
modules/<module-name>/docs/models/*.md
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 5. Feature → Command Parity Check
|
|
73
|
-
|
|
74
|
-
For each feature's scenarios and test cases:
|
|
75
|
-
|
|
76
|
-
| Check Item | Question |
|
|
77
|
-
| ---------------------- | -------------------------------------------------------------------------- |
|
|
78
|
-
| Command existence | Does a command doc exist to implement the scenario? |
|
|
79
|
-
| Business rule coverage | Are feature test cases covered by command business rules? |
|
|
80
|
-
| Error handling | Are expected error cases from feature included in command error scenarios? |
|
|
81
|
-
| Process flow alignment | Does feature process flow match command process flow? |
|
|
82
|
-
|
|
83
|
-
#### How to Check
|
|
84
|
-
|
|
85
|
-
1. List all scenario patterns from feature
|
|
86
|
-
2. Identify required operations (verbs) for each scenario: "Add", "Update", "Delete", "Set default", etc.
|
|
87
|
-
3. Verify corresponding command doc exists
|
|
88
|
-
4. Map feature test cases to command business rules / error scenarios
|
|
89
|
-
|
|
90
|
-
### 6. Feature → Query Parity Check
|
|
91
|
-
|
|
92
|
-
For each read operation implied by the feature:
|
|
93
|
-
|
|
94
|
-
| Check Item | Question |
|
|
95
|
-
| --------------- | --------------------------------------------------------------------- |
|
|
96
|
-
| Query existence | Does a query doc exist for lookups, conversions, or aggregations? |
|
|
97
|
-
| Input coverage | Are all lookup dimensions documented (by id, by unique field, by FK)? |
|
|
98
|
-
| Error handling | Are error scenarios for missing data documented? |
|
|
99
|
-
|
|
100
|
-
#### How to Check
|
|
101
|
-
|
|
102
|
-
1. Identify read-only operations in the feature: "look up", "get", "list", "convert", "calculate"
|
|
103
|
-
2. Verify corresponding query doc exists in `docs/queries/`
|
|
104
|
-
3. Check that query docs have error scenarios where applicable
|
|
105
|
-
|
|
106
|
-
### 7. Feature → Model Parity Check
|
|
107
|
-
|
|
108
|
-
For each entity mentioned in feature:
|
|
109
|
-
|
|
110
|
-
| Check Item | Question |
|
|
111
|
-
| ---------------- | ------------------------------------------------------------------ |
|
|
112
|
-
| Model existence | Does a model doc exist for entities mentioned in feature? |
|
|
113
|
-
| State management | Do feature state transitions match model state transitions? |
|
|
114
|
-
| Relationships | Are relationships shown in feature defined in model relationships? |
|
|
115
|
-
|
|
116
|
-
### 8. Command → Model Consistency Check
|
|
117
|
-
|
|
118
|
-
For each command doc:
|
|
119
|
-
|
|
120
|
-
| Check Item | Question |
|
|
121
|
-
| -------------------------- | -------------------------------------------------------------- |
|
|
122
|
-
| Target model | Does a model doc exist for the model that command operates on? |
|
|
123
|
-
| State transition alignment | Do state changes by command match model state transitions? |
|
|
124
|
-
|
|
125
|
-
### 9. Report Findings
|
|
126
|
-
|
|
127
|
-
```markdown
|
|
128
|
-
## Feature Parity Review Report
|
|
129
|
-
|
|
130
|
-
**Module:** <module-name>
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
### 1. Feature → Command Coverage
|
|
135
|
-
|
|
136
|
-
| Feature | Scenarios | Required Commands | Documented Commands | Gap |
|
|
137
|
-
| ----------- | ----------- | ---------------------------------- | ------------------------- | ------------------ |
|
|
138
|
-
| <feature-1> | N scenarios | <cmd-a>, <cmd-b>, <cmd-c>, <cmd-d> | <cmd-a>, <cmd-b>, <cmd-c> | ❌ <cmd-d> missing |
|
|
139
|
-
| <feature-2> | N scenarios | <cmd-e>, <cmd-f>, <cmd-g> | - | ❌ No command docs |
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
### 2. Feature → Model Coverage
|
|
144
|
-
|
|
145
|
-
| Feature | Required Models | Documented Models | Gap |
|
|
146
|
-
| ----------- | -------------------- | -------------------- | --- |
|
|
147
|
-
| <feature-1> | <Model-A> | <Model-A> | ✅ |
|
|
148
|
-
| <feature-2> | <Model-B>, <Model-A> | <Model-B>, <Model-A> | ✅ |
|
|
149
|
-
| <feature-3> | <Model-C>, <Model-A> | <Model-C>, <Model-A> | ✅ |
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
### 3. Test Case → Business Rule Mapping
|
|
154
|
-
|
|
155
|
-
| Feature | Test Case | Covered by Command | Status |
|
|
156
|
-
| ----------- | ------------------------------------------ | ----------------------- | ----------------- |
|
|
157
|
-
| <feature-1> | "<test case description from feature doc>" | <cmd-a> (business rule) | ✅ |
|
|
158
|
-
| <feature-1> | "<test case description from feature doc>" | <cmd-c> (business rule) | ✅ |
|
|
159
|
-
| <feature-2> | "<test case description from feature doc>" | - | ❌ No command doc |
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### 4. Missing Documentation
|
|
164
|
-
|
|
165
|
-
#### Missing Command Docs
|
|
166
|
-
|
|
167
|
-
| Feature | Expected Command | Purpose |
|
|
168
|
-
| ----------- | ---------------- | --------------------- |
|
|
169
|
-
| <feature-2> | <cmd-e> | <purpose description> |
|
|
170
|
-
| <feature-2> | <cmd-f> | <purpose description> |
|
|
171
|
-
| <feature-2> | <cmd-g> | <purpose description> |
|
|
172
|
-
|
|
173
|
-
#### Missing Query Docs
|
|
174
|
-
|
|
175
|
-
| Feature | Expected Query | Purpose |
|
|
176
|
-
| ----------- | -------------- | --------------------- |
|
|
177
|
-
| <feature-1> | <query-a> | <purpose description> |
|
|
178
|
-
|
|
179
|
-
#### Missing Model Docs
|
|
180
|
-
|
|
181
|
-
(none found)
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
### 5. Inconsistencies
|
|
186
|
-
|
|
187
|
-
| Type | Location | Issue |
|
|
188
|
-
| ------------------------- | -------------------------------------- | ----------------------------------------------------------------- |
|
|
189
|
-
| State transition mismatch | <feature-1> feature vs <Model-A> model | Feature shows "<cmd-x>" but no command doc exists |
|
|
190
|
-
| Missing error scenario | <feature-2> feature | "<error case from test cases>" has no corresponding command error |
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
### 6. Summary
|
|
195
|
-
|
|
196
|
-
| Aspect | Status | Details |
|
|
197
|
-
| -------------------------- | ------ | ------------------------------------------- |
|
|
198
|
-
| Feature → Command Coverage | ⚠️ | X/Y features have complete command coverage |
|
|
199
|
-
| Feature → Query Coverage | ⚠️ | X/Y read operations have query docs |
|
|
200
|
-
| Feature → Model Coverage | ✅ | All required models documented |
|
|
201
|
-
| Test Case Coverage | ⚠️ | X/Y test cases mapped to business rules |
|
|
202
|
-
| Documentation Consistency | ⚠️ | N inconsistencies found |
|
|
203
|
-
|
|
204
|
-
### 7. Recommendations
|
|
205
|
-
|
|
206
|
-
1. **Create missing command docs:**
|
|
207
|
-
- List all missing commands grouped by feature
|
|
208
|
-
|
|
209
|
-
2. **Add missing business rules to existing command docs:**
|
|
210
|
-
- Feature test cases not yet mapped to command business rules
|
|
211
|
-
3. **Resolve inconsistencies:**
|
|
212
|
-
- Align state transitions between feature and model docs
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Common Gaps
|
|
216
|
-
|
|
217
|
-
### Feature → Command
|
|
218
|
-
|
|
219
|
-
- **Orphaned scenarios**: Feature describes operation but no command doc exists
|
|
220
|
-
- **Missing CRUD**: Feature implies create/update/delete but only some are documented
|
|
221
|
-
- **Implicit commands**: Feature scenario requires helper command not documented
|
|
222
|
-
- **Default handling**: Feature mentions "default" selection but no setDefault command
|
|
223
|
-
|
|
224
|
-
### Feature → Query
|
|
225
|
-
|
|
226
|
-
- **Missing query docs**: Feature implies read operation but no query doc exists
|
|
227
|
-
- **Missing conversions**: Feature mentions unit/currency conversion but no query doc
|
|
228
|
-
- **Missing lookups**: Feature requires data retrieval not covered by a query doc
|
|
229
|
-
|
|
230
|
-
### Feature → Model
|
|
231
|
-
|
|
232
|
-
- **Missing models**: Feature references entity with no model doc
|
|
233
|
-
- **State mismatch**: Feature shows states not in model's state diagram
|
|
234
|
-
- **Relationship gaps**: Feature implies relationship not in model doc
|
|
235
|
-
|
|
236
|
-
### Test Case → Business Rule
|
|
237
|
-
|
|
238
|
-
- **Uncovered test cases**: Feature test case has no corresponding business rule
|
|
239
|
-
- **Missing error scenarios**: Feature error case not in command's error scenarios
|
|
240
|
-
- **Validation gaps**: Feature constraint not enforced by any command
|
|
241
|
-
|
|
242
|
-
## Quick Reference: Extraction Patterns
|
|
243
|
-
|
|
244
|
-
### From Feature Docs
|
|
245
|
-
|
|
246
|
-
```markdown
|
|
247
|
-
## Scenario Patterns
|
|
248
|
-
|
|
249
|
-
- **Add <entity>**: ... → Command: add<Entity> / create<Entity>
|
|
250
|
-
- **Change default <entity>**: ... → Command: setDefault<Entity>
|
|
251
|
-
|
|
252
|
-
## Test Cases
|
|
253
|
-
|
|
254
|
-
- Adding a <entity> with valid data creates it in active status
|
|
255
|
-
→ Business rule in add<Entity>
|
|
256
|
-
- Only one <entity> can be default per <parent> at a time
|
|
257
|
-
→ Business rule in setDefault<Entity>
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### Expected Command Docs for Feature
|
|
261
|
-
|
|
262
|
-
See [command naming convention](../erp-kit-module-2-feature-breakdown/references/naming.md) for the full rule, disambiguation guide, and banned verbs.
|
|
263
|
-
|
|
264
|
-
| Feature Operation | Expected Command Doc | Notes |
|
|
265
|
-
| -------------------- | -------------------- | ------------------------------ |
|
|
266
|
-
| "Create X" / "Add X" | `createX` | Never `addX` |
|
|
267
|
-
| "Update X" | `updateX` | |
|
|
268
|
-
| "Delete X" | `deleteX` | Hard delete only |
|
|
269
|
-
| "Deactivate X" | `deactivateX` | Soft-disable (reversible) |
|
|
270
|
-
| "Activate X" | `activateX` | Enable entity |
|
|
271
|
-
| "Reactivate X" | `reactivateX` | Re-enable after deactivation |
|
|
272
|
-
| "Set default X" | `setDefaultX` | Singular value/reference |
|
|
273
|
-
| "Assign X to Y" | `assignXToY` | Never `addXToY` |
|
|
274
|
-
| "Remove X from Y" | `removeXFromY` | Generic relationship unlinking |
|
|
275
|
-
| "Revoke X from Y" | `revokeXFromY` | RBAC/security domain only |
|
|
276
|
-
| "Move X" | `moveX` | Hierarchy position change |
|
|
277
|
-
| "Log X" | `logX` | Append-only audit/event |
|
|
278
|
-
|
|
279
|
-
**Banned verbs** — flag as naming violation if found:
|
|
280
|
-
`archive`, `unarchive`, `disable`, `enable`, `add...To...`, `unlink`
|
|
281
|
-
|
|
282
|
-
### Expected Query Docs for Feature
|
|
283
|
-
|
|
284
|
-
| Feature Operation | Expected Query Doc |
|
|
285
|
-
| ----------------- | ------------------- |
|
|
286
|
-
| "Get X" | GetX |
|
|
287
|
-
| "Look up X by Y" | GetX (with Y input) |
|
|
288
|
-
| "List X by Y" | ListXsByY |
|
|
289
|
-
| "Convert X" | ConvertX |
|
|
290
|
-
| "Calculate X" | CalculateX |
|
|
291
|
-
|
|
292
|
-
## References
|
|
293
|
-
|
|
294
|
-
For implementation patterns (models, commands, testing), see erp-kit-module-4-tdd.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: erp-kit-module-4-tdd
|
|
3
|
-
description: Use when implementing features in any module under modules/. Triggers on TDD workflow, domain command implementation, adding new database models, creating test fixtures, or implementing business logic commands.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# TDD Implementation for Module Development
|
|
7
|
-
|
|
8
|
-
Guide for implementing features in modules using Test-Driven Development.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
- Implementing new domain commands in any module
|
|
13
|
-
- Implementing read-only queries in any module
|
|
14
|
-
- Adding database models with `@tailor-platform/sdk`
|
|
15
|
-
- Creating tests with `@tailor-platform/erp-kit` testing utilities
|
|
16
|
-
- Implementing business logic (CRUD, state transitions, relationships)
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
DOCS → MODELS → GENERATE → FIXTURES → TESTS → IMPLEMENT → EXPORT → VERIFY
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Step-by-Step
|
|
25
|
-
|
|
26
|
-
### 1. Write Command/Query Docs
|
|
27
|
-
|
|
28
|
-
Write markdown specs under `docs/commands/*.md` and `docs/queries/*.md`. These are the source of truth for error scenarios, permissions, and generated code. See erp-kit-module-1-docs, erp-kit-module-2-feature-breakdown, and erp-kit-module-3-doc-review for documentation workflow.
|
|
29
|
-
|
|
30
|
-
### 2. Database Models (`db/`)
|
|
31
|
-
|
|
32
|
-
**Read [models rules](references/models.md) and [db-relations rules](references/db-relations.md) before writing any model.**
|
|
33
|
-
|
|
34
|
-
Key patterns: factory function, `db.fields.timestamps()`, `.description()` on fields, `.relation()` for foreign keys.
|
|
35
|
-
|
|
36
|
-
### 3. Generate Code
|
|
37
|
-
|
|
38
|
-
**Read [generated code rules](references/generated-code.md) for what gets generated and what you write by hand.**
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# Generate kysely types from models
|
|
42
|
-
pnpm generate
|
|
43
|
-
|
|
44
|
-
# Generate errors, permissions, and command/query shells from docs
|
|
45
|
-
erp-kit module generate code --root <root> <module>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Generated `.generated.ts` files provide: error classes, permission definitions, and command/query shells. Never edit these files.
|
|
49
|
-
|
|
50
|
-
### 4. Test Fixtures (`testing/fixtures.ts`)
|
|
51
|
-
|
|
52
|
-
**Read [testing rules](../erp-kit-module-shared/references/testing.md) before writing fixtures or tests.**
|
|
53
|
-
|
|
54
|
-
### 5. Write Tests First (`command/*.test.ts`)
|
|
55
|
-
|
|
56
|
-
Same reference: [testing rules](../erp-kit-module-shared/references/testing.md).
|
|
57
|
-
|
|
58
|
-
Key patterns: `createMockDb<DB>()`, fixed IDs `"entity-1"`, cover all doc branches.
|
|
59
|
-
|
|
60
|
-
### 6. Implement Commands (`command/*.ts`)
|
|
61
|
-
|
|
62
|
-
**Read [commands rules](../erp-kit-module-shared/references/commands.md) before implementing.**
|
|
63
|
-
|
|
64
|
-
Key patterns: export `run` function, generated shell wraps with `defineCommand(permissions.xxx, run)`, generic `CF` for custom fields, validate → query → mutate.
|
|
65
|
-
|
|
66
|
-
### 7. Implement Queries (`query/*.ts`)
|
|
67
|
-
|
|
68
|
-
**Read [queries rules](../erp-kit-module-shared/references/queries.md) before implementing.**
|
|
69
|
-
|
|
70
|
-
Key patterns: `defineQuery`, `ReadonlyDB<DB>`, `QueryContext`. Generated queries handle simple lookups; write custom queries for joins, aggregations, complex filters.
|
|
71
|
-
|
|
72
|
-
### 8. Export (`index.ts`)
|
|
73
|
-
|
|
74
|
-
**Read [exports rules](references/exports.md) for export order.**
|
|
75
|
-
|
|
76
|
-
### 9. Verify
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
pnpm generate # Regenerate types if models changed
|
|
80
|
-
pnpm lint # Check code style
|
|
81
|
-
pnpm typecheck # Verify TypeScript types
|
|
82
|
-
pnpm test # Run all tests
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## References
|
|
86
|
-
|
|
87
|
-
- [Module structure](../erp-kit-module-shared/references/structure.md)
|
|
88
|
-
- [Model patterns](references/models.md)
|
|
89
|
-
- [Database relations](references/db-relations.md)
|
|
90
|
-
- [Command patterns](../erp-kit-module-shared/references/commands.md)
|
|
91
|
-
- [Query patterns](../erp-kit-module-shared/references/queries.md)
|
|
92
|
-
- [Generated code](references/generated-code.md)
|
|
93
|
-
- [Testing patterns](../erp-kit-module-shared/references/testing.md)
|
|
94
|
-
- [Export order](references/exports.md)
|