ApiLogicServer 15.0.65__py3-none-any.whl → 15.1.0__py3-none-any.whl

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.
Files changed (519) hide show
  1. api_logic_server_cli/api_logic_server.py +2 -2
  2. api_logic_server_cli/database/basic_demo.sqlite +0 -0
  3. api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md +25 -2
  4. api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
  5. api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
  6. api_logic_server_cli/prototypes/manager/.vscode/launch.json +2 -1
  7. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/For_VSCode.dockerfile +10 -0
  8. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/devcontainer.json +64 -0
  9. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/readme.md +1 -0
  10. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/setup.sh +10 -0
  11. api_logic_server_cli/prototypes/manager/samples/basic_demo/.env +4 -0
  12. api_logic_server_cli/prototypes/manager/samples/basic_demo/.github/.copilot-instructions.md +581 -0
  13. api_logic_server_cli/prototypes/manager/samples/basic_demo/.gitignore +9 -0
  14. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/ApiLogicServer.xml +24 -0
  15. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Report_Behave_Logic.xml +24 -0
  16. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Run_Behave.xml +24 -0
  17. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Windows_Run_Behave.xml +24 -0
  18. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run___No_Security.xml +25 -0
  19. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run_docker.xml +59 -0
  20. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/launch.json +314 -0
  21. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/settings.json +40 -0
  22. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/venv_init.sh +64 -0
  23. api_logic_server_cli/prototypes/manager/samples/basic_demo/_config.yml +8 -0
  24. api_logic_server_cli/prototypes/manager/samples/basic_demo/_layouts/redirect.html +15 -0
  25. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/__init__.py +0 -0
  26. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/auto_discovery.py +27 -0
  27. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_discovery.py +97 -0
  28. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_expose_api_models.py +53 -0
  29. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/new_service.py +21 -0
  30. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/newer_service.py +21 -0
  31. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/ontimize_api.py +495 -0
  32. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/order_b2b_service.py +60 -0
  33. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/system.py +77 -0
  34. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/customize_api.py +63 -0
  35. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/expose_api_models.py +52 -0
  36. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/json_encoder.py +17 -0
  37. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/readme_customize_api.md +103 -0
  38. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/api_utils.py +171 -0
  39. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/custom_endpoint.py +1085 -0
  40. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/expression_parser.py +685 -0
  41. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_csv_report.py +41 -0
  42. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_pdf_report.py +215 -0
  43. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/opt_locking.py +158 -0
  44. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/readme.md +225 -0
  45. api_logic_server_cli/prototypes/manager/samples/basic_demo/api_logic_server_run.py +162 -0
  46. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/__init__.py +0 -0
  47. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/activate_logicbank.py +46 -0
  48. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/config.py +772 -0
  49. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/default.env +16 -0
  50. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging-reduced.yml +112 -0
  51. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging.yml +123 -0
  52. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/mypy.ini +25 -0
  53. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/server_setup.py +459 -0
  54. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/api/api_discovery/openapi.py +92 -0
  55. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/config/default.env +13 -0
  56. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/db.sqlite +0 -0
  57. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/models.py +130 -0
  58. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/docs/mcp_learning/mcp_discovery.json +108 -0
  59. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/cocktail-napkin.jpg +0 -0
  60. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/declare_logic.py +106 -0
  61. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/email_request.py +49 -0
  62. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/simple_constraints.py +25 -0
  63. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/security/declare_security.py +60 -0
  64. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/admin.yaml +162 -0
  65. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/home.js +48 -0
  66. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README.md +17 -0
  67. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README_create_react_app.md +70 -0
  68. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package-lock.json +18469 -0
  69. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package.json +47 -0
  70. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/favicon.ico +0 -0
  71. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/index.html +43 -0
  72. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo192.png +0 -0
  73. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo512.png +0 -0
  74. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/manifest.json +25 -0
  75. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/robots.txt +3 -0
  76. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.css +38 -0
  77. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.js +61 -0
  78. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.test.js +8 -0
  79. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config-reference.js +527 -0
  80. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config.js +527 -0
  81. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer-reference.js +216 -0
  82. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer.js +230 -0
  83. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Item.js +170 -0
  84. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Order.js +207 -0
  85. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Product.js +140 -0
  86. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysEmail.js +157 -0
  87. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysMcp.js +110 -0
  88. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/app_loader.js +24 -0
  89. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.css +13 -0
  90. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.js +17 -0
  91. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/logo.svg +1 -0
  92. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +5 -0
  93. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  94. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +25 -0
  95. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  96. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +116 -0
  97. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +116 -0
  98. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  99. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +11 -0
  100. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  101. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  102. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  103. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  104. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +9 -0
  105. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/reportWebVitals.js +13 -0
  106. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/setupTests.js +5 -0
  107. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/__init__.py +0 -0
  108. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/alembic_run.py +98 -0
  109. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/env.py +78 -0
  110. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/readme_alembic.md +36 -0
  111. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/script.py.mako +24 -0
  112. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/ae6a5c2fdc47_autogenerated.py +34 -0
  113. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/readme.md +1 -0
  114. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic.ini +103 -0
  115. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/authentication_db.sqlite +0 -0
  116. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/bind_dbs.py +25 -0
  117. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/customize_models.py +19 -0
  118. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/authentication_models.py +183 -0
  119. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/auto_discovery.py +27 -0
  120. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db.sqlite +0 -0
  121. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db_debug/db_debug.py +90 -0
  122. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_db.sqlite +0 -0
  123. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_models.py +58 -0
  124. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/models.py +132 -0
  125. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/system/SAFRSBaseX.py +139 -0
  126. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/alp_init.py +40 -0
  127. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/readme.md +13 -0
  128. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/response2code.py +148 -0
  129. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/test_data_preamble.py +83 -0
  130. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.Dockerfile +65 -0
  131. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.sql +112 -0
  132. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_postgres.sql +57 -0
  133. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-azure/azure-deploy.sh +98 -0
  134. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose-dev-local.yml +38 -0
  135. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose.sh +34 -0
  136. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.dockerfile +20 -0
  137. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.sh +67 -0
  138. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/env.list +35 -0
  139. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/run_image.sh +23 -0
  140. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/docker-compose-standard-image.yml +33 -0
  141. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/env.list +55 -0
  142. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.mv.db +0 -0
  143. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.trace.db +236 -0
  144. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-realm.json +1807 -0
  145. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-users-0.json +24 -0
  146. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-realm.json +1953 -0
  147. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-users-0.json +23 -0
  148. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/tmp/kc-gzip-cache/nnbna/js/keycloak.js.gz +0 -0
  149. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-dev-network.yml +31 -0
  150. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-nginx.yml +48 -0
  151. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose.yml +24 -0
  152. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-realm.json +1898 -0
  153. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-users-0.json +319 -0
  154. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-realm.json +1953 -0
  155. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-users-0.json +23 -0
  156. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/cert.pem +25 -0
  157. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/key.pem +28 -0
  158. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/nginx.conf +73 -0
  159. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_nginx.txt +0 -0
  160. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_no_nginx.txt +0 -0
  161. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/auth_provider.py +80 -0
  162. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/unused-docker-compose-keycloak.sh +13 -0
  163. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/python-anywhere/python_anywhere_wsgi.py +116 -0
  164. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/readme-devops.md +31 -0
  165. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/db.dbml +14 -0
  166. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/graphics/readme.md +12 -0
  167. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic/readme.md +19 -0
  168. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic_suggestions/readme_logic_suggestions.md +3 -0
  169. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp.prompt +39 -0
  170. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp_schema.json +30 -0
  171. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/models-not-code.png +0 -0
  172. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/runtime engines.png +0 -0
  173. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/system-creation-vibe.md +158 -0
  174. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_1_context.prompt.md +43 -0
  175. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_2_functionality.prompt.md +69 -0
  176. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_3_architecture.prompt.md +29 -0
  177. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_bank_api.prompt +342 -0
  178. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_example.py +41 -0
  179. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_map.prompt.md +13 -0
  180. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_tree.prompt.md +10 -0
  181. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_consumer.py +60 -0
  182. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_producer.py +127 -0
  183. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_readme.md +3 -0
  184. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_context_results.txt +142 -0
  185. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_discovery_response.json +150 -0
  186. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_request.prompt +46 -0
  187. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_schema.txt +47 -0
  188. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response.json +34 -0
  189. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response_get.json +18 -0
  190. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_client_executor.py +545 -0
  191. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_server_discovery.json +9 -0
  192. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/readme-mcp.md +9 -0
  193. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/N8N_WebHook_from_ApiLogicServer.json +394 -0
  194. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_producer.py +172 -0
  195. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_readme.md +67 -0
  196. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/OrderB2BMapper.py +54 -0
  197. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/row_dict_maps_readme.md +3 -0
  198. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/FlaskKafka.py +105 -0
  199. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/RowDictMapper.py +416 -0
  200. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/api/api_discovery/order_b2b.py +92 -0
  201. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/database/db.sqlite +0 -0
  202. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/docs/er_diagram.png +0 -0
  203. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderB2B.py +36 -0
  204. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderShipping.py +30 -0
  205. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/logic/declare_logic.py +147 -0
  206. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/ui/admin/admin.yaml +175 -0
  207. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declarative-vs-procedural-comparison.html +110 -0
  208. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declare_logic.py +81 -0
  209. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/load_verify_rules.py +217 -0
  210. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/app_integration.py +23 -0
  211. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/auto_discovery.py +52 -0
  212. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/check_credit.py +44 -0
  213. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/mcp_client_executor_request.py +50 -0
  214. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/readme_logic_discovery.md +9 -0
  215. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/use_case.py +31 -0
  216. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/credit_service.py +204 -0
  217. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.md +295 -0
  218. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.png +0 -0
  219. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/readme_logic.md +249 -0
  220. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme.md +495 -0
  221. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_project.md +43 -0
  222. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_standard.md +492 -0
  223. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_vibe.md +353 -0
  224. api_logic_server_cli/prototypes/manager/samples/basic_demo/requirements.txt +3 -0
  225. api_logic_server_cli/prototypes/manager/samples/basic_demo/run.ps1 +30 -0
  226. api_logic_server_cli/prototypes/manager/samples/basic_demo/run.sh +55 -0
  227. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/__init__.py +0 -0
  228. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/__init__.py +0 -0
  229. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/abstract_authentication_provider.py +34 -0
  230. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/keycloak/auth_provider.py +238 -0
  231. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider.py +161 -0
  232. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider_no_swagger.py +98 -0
  233. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/sql/auth_provider.py +127 -0
  234. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/declare_security.py +49 -0
  235. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/readme_security.md +16 -0
  236. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authentication.py +129 -0
  237. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authorization.py +473 -0
  238. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/custom_swagger.json +62 -0
  239. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/__init__.py +0 -0
  240. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/__init__.py +0 -0
  241. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_logic_report.py +256 -0
  242. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_run.py +64 -0
  243. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/about.feature +12 -0
  244. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/about.py +20 -0
  245. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/test_utils.py +133 -0
  246. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/logs/behave.log +0 -0
  247. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +4 -0
  248. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +75 -0
  249. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Sample.md +1180 -0
  250. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/basic/server_test.py +33 -0
  251. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/readme_test.md +395 -0
  252. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/__init__.py +0 -0
  253. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin.yaml +173 -0
  254. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin_loader.py +217 -0
  255. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/authentication_admin.yaml +99 -0
  256. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/home.js +48 -0
  257. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/mcp_admin.yaml +53 -0
  258. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.browserslistrc +12 -0
  259. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.dockerignore +47 -0
  260. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.editorconfig +16 -0
  261. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.eslintrc.json +51 -0
  262. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.gitignore +47 -0
  263. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/README.md +42 -0
  264. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/angular.json +206 -0
  265. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/app_model.yaml +303 -0
  266. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/docker-compose-ontimize.yml +54 -0
  267. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/protractor.conf.js +32 -0
  268. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.e2e-spec.ts +23 -0
  269. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.po.ts +11 -0
  270. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/tsconfig.json +13 -0
  271. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/karma.conf.js +32 -0
  272. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/nginx/nginx.conf +29 -0
  273. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/ngsw-config.json +29 -0
  274. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package-lock.json +22651 -0
  275. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package.json +69 -0
  276. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app-routing.module.ts +25 -0
  277. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.html +1 -0
  278. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.scss +1 -0
  279. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.spec.ts +35 -0
  280. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.ts +9 -0
  281. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.config.ts +43 -0
  282. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.module.ts +37 -0
  283. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login-routing.module.ts +12 -0
  284. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.html +58 -0
  285. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.scss +155 -0
  286. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.ts +81 -0
  287. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.module.ts +18 -0
  288. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.theme.scss +51 -0
  289. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer-routing.module.ts +37 -0
  290. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer.module.ts +19 -0
  291. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.html +90 -0
  292. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.scss +0 -0
  293. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.ts +32 -0
  294. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.html +44 -0
  295. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.scss +0 -0
  296. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.ts +23 -0
  297. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.html +26 -0
  298. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.scss +0 -0
  299. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.ts +18 -0
  300. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item-routing.module.ts +30 -0
  301. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item.module.ts +19 -0
  302. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.html +72 -0
  303. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.scss +0 -0
  304. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.ts +32 -0
  305. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.html +55 -0
  306. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.scss +0 -0
  307. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.ts +23 -0
  308. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.html +60 -0
  309. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.scss +0 -0
  310. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.ts +18 -0
  311. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order-routing.module.ts +37 -0
  312. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order.module.ts +19 -0
  313. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.html +114 -0
  314. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.scss +0 -0
  315. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.ts +32 -0
  316. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.html +48 -0
  317. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.scss +0 -0
  318. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.ts +23 -0
  319. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.html +43 -0
  320. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.scss +0 -0
  321. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.ts +18 -0
  322. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product-routing.module.ts +37 -0
  323. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product.module.ts +19 -0
  324. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.html +91 -0
  325. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.scss +0 -0
  326. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.ts +32 -0
  327. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.html +35 -0
  328. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.scss +0 -0
  329. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.ts +23 -0
  330. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.html +20 -0
  331. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.scss +0 -0
  332. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.ts +18 -0
  333. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about-routing.module.ts +13 -0
  334. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.html +39 -0
  335. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.scss +35 -0
  336. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.ts +17 -0
  337. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.module.ts +18 -0
  338. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.theme.scss +14 -0
  339. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home-routing.module.ts +17 -0
  340. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.html +1 -0
  341. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.scss +3 -0
  342. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.ts +21 -0
  343. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.module.ts +18 -0
  344. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-routing.module.ts +32 -0
  345. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-theme.scss +56 -0
  346. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.html +8 -0
  347. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.scss +1 -0
  348. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.ts +20 -0
  349. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.module.ts +22 -0
  350. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings-routing.module.ts +14 -0
  351. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.html +14 -0
  352. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.scss +44 -0
  353. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.ts +46 -0
  354. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.module.ts +18 -0
  355. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.html +1 -0
  356. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.scss +0 -0
  357. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.ts +16 -0
  358. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.html +1 -0
  359. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.scss +0 -0
  360. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.ts +16 -0
  361. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.html +1 -0
  362. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.scss +0 -0
  363. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.ts +16 -0
  364. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.html +1 -0
  365. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.scss +0 -0
  366. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.ts +16 -0
  367. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.menu.config.ts +45 -0
  368. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.services.config.ts +5 -0
  369. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/constant.ts +4 -0
  370. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/shared.module.ts +15 -0
  371. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/.gitkeep +0 -0
  372. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/app.scss +20 -0
  373. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/loader.css +173 -0
  374. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/en.json +44 -0
  375. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/es.json +42 -0
  376. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize128.png +0 -0
  377. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize16.png +0 -0
  378. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize256.png +0 -0
  379. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize32.png +0 -0
  380. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize48.png +0 -0
  381. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize64.png +0 -0
  382. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize72.png +0 -0
  383. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize96.png +0 -0
  384. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/github.png +0 -0
  385. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/login_bg.png +0 -0
  386. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image-transparent.png +0 -0
  387. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image.png +0 -0
  388. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize.png +0 -0
  389. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize_web_log.png +0 -0
  390. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.png +0 -0
  391. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.svg +1 -0
  392. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.png +0 -0
  393. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.svg +1 -0
  394. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/user_profile.png +0 -0
  395. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/domchange.js +110 -0
  396. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/keyboard.js +24 -0
  397. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.prod.ts +11 -0
  398. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.ts +15 -0
  399. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/favicon.ico +0 -0
  400. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/index.html +30 -0
  401. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/main.ts +15 -0
  402. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/manifest.webmanifest +59 -0
  403. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/polyfills.ts +66 -0
  404. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/styles.scss +1 -0
  405. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/test.ts +16 -0
  406. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.app.json +18 -0
  407. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.json +25 -0
  408. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.spec.json +18 -0
  409. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/andrew.jpg +0 -0
  410. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/anne.jpg +0 -0
  411. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/janet.jpg +0 -0
  412. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/laura.jpg +0 -0
  413. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/margaret.jpg +0 -0
  414. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/michael.jpg +0 -0
  415. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/nancy.jpg +0 -0
  416. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/robert.jpg +0 -0
  417. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/steven.jpg +0 -0
  418. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/beverages.gif +0 -0
  419. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/cereals.gif +0 -0
  420. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/condiments.gif +0 -0
  421. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/confections.gif +0 -0
  422. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/diary.gif +0 -0
  423. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/meat.gif +0 -0
  424. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/produce.gif +0 -0
  425. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/seafood.gif +0 -0
  426. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README.md +16 -0
  427. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README_create_react_app.md +70 -0
  428. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package-lock.json +18469 -0
  429. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package.json +47 -0
  430. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/favicon.ico +0 -0
  431. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/index.html +43 -0
  432. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo192.png +0 -0
  433. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo512.png +0 -0
  434. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/manifest.json +25 -0
  435. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/robots.txt +3 -0
  436. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.css +38 -0
  437. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.js +80 -0
  438. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.test.js +8 -0
  439. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Config.js +527 -0
  440. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Customer.js +218 -0
  441. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Item.js +190 -0
  442. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Order.js +189 -0
  443. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Product.js +159 -0
  444. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/app_loader.js +24 -0
  445. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.css +13 -0
  446. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.js +17 -0
  447. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/logo.svg +1 -0
  448. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +5 -0
  449. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  450. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +25 -0
  451. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  452. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.js +116 -0
  453. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +116 -0
  454. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  455. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +11 -0
  456. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  457. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  458. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  459. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  460. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +9 -0
  461. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/reportWebVitals.js +13 -0
  462. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/setupTests.js +5 -0
  463. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README.md +20 -0
  464. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README_create_react_app.md +72 -0
  465. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package-lock.json +18469 -0
  466. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package.json +47 -0
  467. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/product-cards.png +0 -0
  468. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/favicon.ico +0 -0
  469. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/index.html +43 -0
  470. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo192.png +0 -0
  471. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo512.png +0 -0
  472. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/manifest.json +25 -0
  473. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/robots.txt +3 -0
  474. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.css +38 -0
  475. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.js +80 -0
  476. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.test.js +8 -0
  477. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Config.js +527 -0
  478. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Customer.js +218 -0
  479. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Item.js +190 -0
  480. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Order.js +189 -0
  481. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Product.js +241 -0
  482. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/app_loader.js +24 -0
  483. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.css +13 -0
  484. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.js +17 -0
  485. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/logo.svg +1 -0
  486. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +5 -0
  487. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  488. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +25 -0
  489. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +25 -0
  490. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +116 -0
  491. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +116 -0
  492. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +7 -0
  493. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +11 -0
  494. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  495. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  496. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  497. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  498. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +9 -0
  499. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/reportWebVitals.js +13 -0
  500. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/setupTests.js +5 -0
  501. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/bar_chart.jinja +64 -0
  502. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/content.html +3 -0
  503. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/py.py +121 -0
  504. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/readme_venv.md +20 -0
  505. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/requirements-no-cli.txt +33 -0
  506. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv-linux.sh +28 -0
  507. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.ps1 +21 -0
  508. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.sh +28 -0
  509. api_logic_server_cli/prototypes/manager/samples/dbs/readme_dbs.md +4 -4
  510. api_logic_server_cli/prototypes/manager/samples/readme_samples.md +13 -6
  511. api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace +3 -2
  512. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/METADATA +1 -1
  513. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/RECORD +517 -17
  514. api_logic_server_cli/prototypes/manager/.vscode/.copilot-instructions.md +0 -58
  515. api_logic_server_cli/prototypes/manager/.vscode/ApiLogicServer.code-workspace +0 -15
  516. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/WHEEL +0 -0
  517. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/entry_points.txt +0 -0
  518. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/licenses/LICENSE +0 -0
  519. {apilogicserver-15.0.65.dist-info → apilogicserver-15.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,33 @@
1
+ from pathlib import Path
2
+ import requests
3
+ import logging
4
+ import subprocess
5
+ import socket
6
+
7
+
8
+ def prt(msg: any) -> None:
9
+ print(msg)
10
+
11
+
12
+ def get_project_dir() -> str:
13
+ """
14
+ :return: ApiLogicServer dir, eg, /Users/val/dev/ApiLogicServer
15
+ """
16
+ path = Path(__file__)
17
+ parent_path = path.parent
18
+ parent_path = parent_path.parent
19
+ return parent_path
20
+
21
+
22
+ def server_tests(host, port, version):
23
+ """ called by api_logic_server_run.py, for any tests on server start
24
+ args
25
+ host - server host
26
+ port - server port
27
+ version - ApiLogicServer version
28
+ """
29
+ ... # Your Code Goes Here
30
+
31
+ if __name__ == "__main__":
32
+ # only to run when not called via 'import' here
33
+ server_tests("localhost", "5656", "v0")
@@ -0,0 +1,395 @@
1
+ # API Logic Server Testing Guide
2
+
3
+ ## Overview
4
+
5
+ This directory contains comprehensive tests for API Logic Server projects, designed to validate business logic rules, API endpoints, security, and data integrity. The testing framework emphasizes **business logic validation** through declarative rules rather than just basic CRUD operations.
6
+
7
+ ## 🎯 What Gets Tested
8
+
9
+ - **Business Logic Rules**: Declarative rules for sums, formulas, constraints, and events
10
+ - **API Endpoints**: REST API functionality and JSON:API compliance
11
+ - **Security**: Authentication, authorization, and role-based access control
12
+ - **Data Integrity**: Database constraints, cascading updates, and transactions
13
+ - **Integration**: Logic engine, database, and API layer integration
14
+
15
+ ## 📁 Test Structure
16
+
17
+ ```
18
+ test/
19
+ ├── readme_test.md # This guide
20
+ ├── api_logic_server_behave/ # Primary BDD testing framework
21
+ │ ├── behave_run.py # Main test runner
22
+ │ ├── behave_logic_report.py # Report generator
23
+ │ ├── features/ # Gherkin feature files
24
+ │ │ ├── *.feature # Business logic test scenarios
25
+ │ │ └── steps/ # Python step implementations
26
+ │ ├── logs/ # Test execution logs
27
+ │ └── reports/ # Generated test reports
28
+ └── basic/ # Simple server tests
29
+ ├── server_test.py # Basic API functionality tests
30
+ └── results/ # Basic test results
31
+ ```
32
+
33
+ ## 🚀 Running Tests
34
+
35
+ ### Prerequisites
36
+ 1. **Start API Logic Server**: `python api_logic_server_run.py` or press F5
37
+ 2. **Install behave**: `pip install behave` (if not already installed)
38
+ 3. **Database State**: Tests restore data automatically, but if tests fail mid-execution, restore your database from backup
39
+
40
+ ### Primary Testing Method: Behave (BDD)
41
+
42
+ ```bash
43
+ # From project root
44
+ cd test/api_logic_server_behave
45
+ python behave_run.py
46
+
47
+ # Or in VS Code
48
+ # Use "Behave Run" configuration (F5)
49
+ # In Debug Console, select "Behave Run" from dropdown (not server log)
50
+ ```
51
+
52
+ ### Alternative: Basic Server Tests
53
+
54
+ ```bash
55
+ # From project root
56
+ cd test/basic
57
+ python server_test.py go
58
+ ```
59
+
60
+ **Note**: Basic tests require `SECURITY_ENABLED = False` in `config/config.py`
61
+
62
+ ## 📝 Common Test Scenarios
63
+
64
+ API Logic Server projects typically test these business patterns:
65
+
66
+ ### Core Business Logic
67
+ - **State Management**: Entity status changes and their cascading effects
68
+ - **Credit/Limit Checking**: Validation against business constraints
69
+ - **Balance/Total Calculations**: Automatic sum and formula derivations
70
+ - **Inventory/Resource Management**: Allocation and availability tracking
71
+ - **Notifications**: Email alerts and external system integration
72
+ - **Constraint Validation**: Business rule enforcement
73
+
74
+ *Example: In Northwind, order ready/not-ready states affect customer balances through automatic sum rules.*
75
+
76
+ ### Entity Management
77
+ - **Audit Trails**: Automatic logging of critical changes
78
+ - **Derived Attributes**: Calculated fields and transformations
79
+ - **Business Rules**: Validation and constraint enforcement
80
+
81
+ *Example: Employee salary changes create audit records and validate minimum raise amounts.*
82
+
83
+ ### Security Testing
84
+ - **Authentication**: Login/logout functionality
85
+ - **Role-Based Access**: Permission validation
86
+ - **Data Filtering**: Row-level security based on user roles
87
+
88
+ ## 🧪 Test Data Strategy
89
+
90
+ ### Testing Business Logic Derivations
91
+
92
+ **Best Practice for Derivation Testing:**
93
+
94
+ When testing business logic derivations (sums, formulas, constraints), follow this pattern:
95
+
96
+ 1. **Read Initial State**: Capture the starting values before the transaction
97
+ 2. **Execute Transaction**: Perform the business operation (create order, update quantity, etc.)
98
+ 3. **Read Final State**: Capture the resulting values after business logic execution
99
+ 4. **Compare Changes**: Verify the differences match expected derivation behavior
100
+
101
+ ```python
102
+ @when('Customer places order for ${amount:d}')
103
+ def step_impl(context, amount):
104
+ # 1. Read initial state
105
+ customer_response = requests.get(f"{BASE_URL}/api/Customer/1")
106
+ context.initial_balance = customer_response.json()['data']['attributes']['balance']
107
+
108
+ # 2. Execute transaction
109
+ order_data = {"customer_id": 1, "amount_total": amount}
110
+ context.response = requests.post(f"{BASE_URL}/api/Order", json=order_data)
111
+
112
+ @then('Customer balance increases by ${expected_increase:d}')
113
+ def step_impl(context, expected_increase):
114
+ # 3. Read final state
115
+ customer_response = requests.get(f"{BASE_URL}/api/Customer/1")
116
+ final_balance = customer_response.json()['data']['attributes']['balance']
117
+
118
+ # 4. Compare changes
119
+ actual_increase = final_balance - context.initial_balance
120
+ assert actual_increase == expected_increase, f"Balance changed by {actual_increase}, expected {expected_increase}"
121
+ ```
122
+
123
+ **Why This Approach Works:**
124
+ - ✅ **Independent of Initial Data**: Tests work regardless of starting database state
125
+ - ✅ **Focuses on Business Logic**: Verifies the rule behavior, not absolute values
126
+ - ✅ **Robust Against Multiple Runs**: Tests remain valid after repeated execution
127
+ - ✅ **Clear Intent**: Shows exactly what the business rule should accomplish
128
+
129
+ ### Identifying Test Data
130
+ When creating tests, identify stable test entities in your database:
131
+
132
+ 1. **Key Business Entities**: Main domain objects (customers, orders, products, etc.)
133
+ 2. **Known State**: Entities with predictable initial values
134
+ 3. **Relationships**: Connected entities that demonstrate rule cascading
135
+ 4. **Edge Cases**: Boundary conditions for constraints and validations
136
+
137
+ ### Test Data Documentation
138
+ Document your test data in comments or separate files:
139
+
140
+ ```python
141
+ """
142
+ Test Data Used:
143
+ - Primary Customer: [CustomerID] with [known balance/status]
144
+ - Test Order: [OrderID] with [known amount]
145
+ - Test Employee: [EmployeeID] with [known salary]
146
+ - Constraint Limits: [specific values that trigger validations]
147
+ """
148
+ ```
149
+
150
+ ## 🔧 For Developers
151
+
152
+ ### Adding New Tests
153
+
154
+ 1. **Identify Business Scenario**: What business rule or process needs testing?
155
+ 2. **Create Feature File**: Add `.feature` file in `features/` using Gherkin syntax
156
+ 3. **Implement Steps**: Create corresponding `.py` file in `features/steps/`
157
+ 4. **Use Test Utilities**: Import `test_utils.py` for common functions
158
+ 5. **Follow Patterns**: Reference existing tests for authentication, logging, and assertions
159
+
160
+ ### Generic Feature Structure
161
+
162
+ ```gherkin
163
+ Feature: [Business Process Name]
164
+
165
+ Scenario: [Specific Business Rule Test]
166
+ Given [Initial business state]
167
+ When [Business action is performed]
168
+ Then [Expected business outcome occurs]
169
+ And [Additional validations]
170
+ ```
171
+
172
+ ### Generic Step Implementation Pattern
173
+
174
+ ```python
175
+ # features/steps/[feature_name].py
176
+ from behave import *
177
+ import test_utils
178
+ import requests
179
+ import json
180
+ from dotmap import DotMap
181
+
182
+ @given('[Initial business state]')
183
+ def step_impl(context):
184
+ # Get initial state of your key business entities
185
+ # Store in context for later comparison
186
+ context.initial_state = get_entity_state(entity_id)
187
+
188
+ @when('[Business action is performed]')
189
+ def step_impl(context):
190
+ # Perform the business operation via API
191
+ header = test_utils.login() # Get auth header if needed
192
+
193
+ # Make API call (POST, PATCH, DELETE, etc.)
194
+ api_url = f'http://localhost:5656/api/[YourEntity]/[id]/'
195
+ response = requests.patch(url=api_url, json=your_data, headers=header)
196
+
197
+ # Store response for validation
198
+ context.response = response
199
+
200
+ @then('[Expected business outcome occurs]')
201
+ def step_impl(context):
202
+ # Verify the business rule executed correctly
203
+ # Check entity state changes, calculated fields, etc.
204
+ final_state = get_entity_state(entity_id)
205
+ assert final_state.calculated_field == expected_value
206
+ ```
207
+
208
+ ## 🤖 For GitHub Copilot
209
+
210
+ When generating tests for API Logic Server projects:
211
+
212
+ ### Key Patterns to Follow
213
+
214
+ 1. **Focus on Business Logic**: Test declarative rules, not just CRUD operations
215
+ 2. **Use Behave Framework**: Create `.feature` files with Gherkin syntax
216
+ 3. **Test Rule Execution**: Verify LogicBank rules fire and produce correct results
217
+ 4. **Test Constraints**: Verify business rule violations are properly caught
218
+ 5. **Check Cascading Updates**: Ensure changes propagate through rule chains
219
+ 6. **Include Authentication**: Use proper auth headers for API calls
220
+
221
+ ### Common Test Utilities
222
+
223
+ ```python
224
+ import test_utils
225
+
226
+ # Authentication (handles both SQL and Keycloak)
227
+ header = test_utils.login(user='username') # Returns auth header dict
228
+
229
+ # Logging (appears in console and scenario log files)
230
+ test_utils.prt("Test message", "scenario_name")
231
+
232
+ # Typical API call patterns
233
+ r = requests.get(url=api_url, headers=header)
234
+ r = requests.post(url=api_url, json=data, headers=header)
235
+ r = requests.patch(url=api_url, json=data, headers=header)
236
+ r = requests.delete(url=api_url, headers=header)
237
+ ```
238
+
239
+ ### Business Logic Testing Patterns
240
+
241
+ #### Testing Sum Rules
242
+ ```python
243
+ # Pattern: Test that derived sums update automatically
244
+ # Example: Customer.Balance = sum(Order.AmountTotal where not shipped)
245
+
246
+ @given('Entity with calculated sum field')
247
+ def step_impl(context):
248
+ context.parent_before = get_parent_entity(parent_id)
249
+
250
+ @when('Child entity is modified')
251
+ def step_impl(context):
252
+ # Create/update child entity
253
+ header = test_utils.login()
254
+ child_data = {"amount": 100, "parent_id": parent_id}
255
+ r = requests.post(url=child_api_url, json=child_data, headers=header)
256
+
257
+ @then('Parent sum field updates automatically')
258
+ def step_impl(context):
259
+ parent_after = get_parent_entity(parent_id)
260
+ expected_sum = context.parent_before.sum_field + 100
261
+ assert parent_after.sum_field == expected_sum
262
+ ```
263
+
264
+ #### Testing Constraint Rules
265
+ ```python
266
+ # Pattern: Test that business constraints are enforced
267
+ # Example: Customer.Balance <= Customer.CreditLimit
268
+
269
+ @when('Action violates business constraint')
270
+ def step_impl(context):
271
+ header = test_utils.login()
272
+ # Data that should violate constraint
273
+ violating_data = {"amount": 99999} # Exceeds credit limit
274
+ r = requests.patch(url=api_url, json=violating_data, headers=header)
275
+ context.response = r
276
+
277
+ @then('Constraint violation is detected')
278
+ def step_impl(context):
279
+ assert context.response.status_code >= 400 # Should fail
280
+ error_message = context.response.json()
281
+ assert "constraint" in error_message.get("message", "").lower()
282
+ ```
283
+
284
+ #### Testing Formula Rules
285
+ ```python
286
+ # Pattern: Test that formulas calculate correctly
287
+ # Example: OrderDetail.Amount = Quantity * UnitPrice
288
+
289
+ @when('Formula inputs are changed')
290
+ def step_impl(context):
291
+ header = test_utils.login()
292
+ update_data = {"quantity": 5, "unit_price": 10.50}
293
+ r = requests.patch(url=api_url, json=update_data, headers=header)
294
+
295
+ @then('Formula result updates automatically')
296
+ def step_impl(context):
297
+ updated_entity = get_entity(entity_id)
298
+ expected_amount = 5 * 10.50
299
+ assert updated_entity.amount == expected_amount
300
+ ```
301
+
302
+ ### Security Testing Patterns
303
+
304
+ ```python
305
+ # Test role-based access
306
+ @given('User with specific role')
307
+ def step_impl(context):
308
+ context.auth_header = test_utils.login(user='role_specific_user')
309
+
310
+ @when('User accesses restricted resource')
311
+ def step_impl(context):
312
+ r = requests.get(url=restricted_api_url, headers=context.auth_header)
313
+ context.response = r
314
+
315
+ @then('Access is properly controlled')
316
+ def step_impl(context):
317
+ # Should succeed for authorized users, fail for others
318
+ if user_has_permission:
319
+ assert context.response.status_code == 200
320
+ else:
321
+ assert context.response.status_code in [401, 403]
322
+ ```
323
+
324
+ ### Project-Specific Considerations
325
+
326
+ When creating tests for a specific project:
327
+
328
+ 1. **Identify Key Business Rules**: What are the main business logic rules in `logic/declare_logic.py`?
329
+ 2. **Map Test Scenarios**: Create scenarios that exercise each major rule type
330
+ 3. **Use Domain Language**: Write scenarios in business terms, not technical terms
331
+ 4. **Test Rule Interactions**: Verify that rules work together correctly
332
+ 5. **Include Edge Cases**: Test boundary conditions and error cases
333
+
334
+ ### API Endpoint Patterns
335
+
336
+ ```python
337
+ # Standard API endpoint patterns for any project
338
+ base_url = "http://localhost:5656/api"
339
+
340
+ # Get entity with relationships
341
+ get_url = f"{base_url}/{EntityName}/{entity_id}/?include={RelatedEntity}List"
342
+
343
+ # Create new entity
344
+ post_url = f"{base_url}/{EntityName}/"
345
+ post_data = {"data": {"attributes": {...}, "type": "EntityName"}}
346
+
347
+ # Update existing entity
348
+ patch_url = f"{base_url}/{EntityName}/{entity_id}/"
349
+ patch_data = {"data": {"attributes": {...}, "type": "EntityName", "id": entity_id}}
350
+
351
+ # Delete entity
352
+ delete_url = f"{base_url}/{EntityName}/{entity_id}/"
353
+ ```
354
+
355
+ ## 📊 Test Reports and Logging
356
+
357
+ - **Logic Reports**: Generated in `reports/` showing which rules executed
358
+ - **Behave Output**: Standard BDD test results with pass/fail status
359
+ - **Logic Logs**: Detailed rule execution in `logs/scenario_logic_logs/`
360
+ - **Server Logs**: API request/response details and errors
361
+
362
+ ## 🔍 Debugging Tests
363
+
364
+ ### Common Issues and Solutions
365
+
366
+ 1. **Authentication Failures**: Check `Config.SECURITY_ENABLED` and login credentials
367
+ 2. **Database State**: If tests fail, restore database to clean state
368
+ 3. **Rule Not Firing**: Verify rule syntax in `logic/declare_logic.py`
369
+ 4. **API Errors**: Check server console and `logs/scenario_logic_logs/`
370
+
371
+ ### Debug Steps
372
+
373
+ ```python
374
+ # Add debug logging to your test steps
375
+ test_utils.prt(f"Before: {entity_before}", scenario_name)
376
+ test_utils.prt(f"API Response: {response.text}", scenario_name)
377
+ test_utils.prt(f"After: {entity_after}", scenario_name)
378
+ ```
379
+
380
+ ## ⚠️ Important Notes
381
+
382
+ - **Data Restoration**: Tests automatically restore data, but partial failures may require manual database restore
383
+ - **Security Mode**: Behave tests work with security enabled; basic tests require security disabled
384
+ - **Rule Engine Focus**: Tests specifically validate LogicBank rule execution, not just API responses
385
+ - **Performance Testing**: Tests can include logic optimization verification (rule pruning, etc.)
386
+ - **Concurrent Testing**: Be aware of database locking if running multiple test suites simultaneously
387
+
388
+ ## 🎯 Best Practices
389
+
390
+ 1. **Test Business Logic First**: Focus on rules and constraints before API mechanics
391
+ 2. **Use Meaningful Test Data**: Choose entities and values that clearly demonstrate rule behavior
392
+ 3. **Document Test Scenarios**: Explain the business purpose of each test
393
+ 4. **Keep Tests Independent**: Each scenario should work regardless of other test execution
394
+ 5. **Verify Rule Execution**: Don't just test API responses, verify that business logic actually ran
395
+ 6. **Test Error Cases**: Include scenarios that should fail due to business constraints
@@ -0,0 +1,173 @@
1
+ about:
2
+ date: August 09, 2025 08:12:46
3
+ recent_changes: works with modified safrs-react-admin
4
+ version: 0.0.0
5
+ api_root: '{http_type}://{swagger_host}:{port}/{api}'
6
+ authentication: '{system-default}'
7
+ info:
8
+ number_relationships: 4
9
+ number_tables: 5
10
+ info_toggle_checked: true
11
+ resources:
12
+ Customer:
13
+ attributes:
14
+ - label: ' name*'
15
+ name: name
16
+ search: true
17
+ sort: true
18
+ - name: balance
19
+ type: DECIMAL
20
+ - name: credit_limit
21
+ type: DECIMAL
22
+ - name: email
23
+ - name: email_opt_out
24
+ type: Boolean
25
+ - name: id
26
+ tab_groups:
27
+ - direction: tomany
28
+ fks:
29
+ - customer_id
30
+ name: OrderList
31
+ resource: Order
32
+ - direction: tomany
33
+ fks:
34
+ - customer_id
35
+ name: SysEmailList
36
+ resource: SysEmail
37
+ type: Customer
38
+ user_key: name
39
+ Item:
40
+ attributes:
41
+ - label: ' id*'
42
+ name: id
43
+ search: true
44
+ sort: true
45
+ - name: order_id
46
+ - name: product_id
47
+ required: true
48
+ - name: quantity
49
+ required: true
50
+ - name: amount
51
+ type: DECIMAL
52
+ - name: unit_price
53
+ type: DECIMAL
54
+ tab_groups:
55
+ - direction: toone
56
+ fks:
57
+ - order_id
58
+ name: order
59
+ resource: Order
60
+ - direction: toone
61
+ fks:
62
+ - product_id
63
+ name: product
64
+ resource: Product
65
+ type: Item
66
+ user_key: id
67
+ Order:
68
+ attributes:
69
+ - label: ' id*'
70
+ name: id
71
+ search: true
72
+ sort: true
73
+ - name: customer_id
74
+ required: true
75
+ - name: notes
76
+ - name: CreatedOn
77
+ type: DATE
78
+ - name: amount_total
79
+ type: DECIMAL
80
+ - name: date_shipped
81
+ type: DATE
82
+ tab_groups:
83
+ - direction: tomany
84
+ fks:
85
+ - order_id
86
+ name: ItemList
87
+ resource: Item
88
+ - direction: toone
89
+ fks:
90
+ - customer_id
91
+ name: customer
92
+ resource: Customer
93
+ type: Order
94
+ user_key: id
95
+ Product:
96
+ attributes:
97
+ - label: ' name*'
98
+ name: name
99
+ search: true
100
+ sort: true
101
+ - name: unit_price
102
+ type: DECIMAL
103
+ - name: id
104
+ tab_groups:
105
+ - direction: tomany
106
+ fks:
107
+ - product_id
108
+ name: ItemList
109
+ resource: Item
110
+ type: Product
111
+ user_key: name
112
+ SysEmail:
113
+ attributes:
114
+ - label: ' id*'
115
+ name: id
116
+ search: true
117
+ sort: true
118
+ - name: customer_id
119
+ required: true
120
+ - name: subject
121
+ - name: message
122
+ - name: CreatedOn
123
+ type: DATETIME
124
+ tab_groups:
125
+ - direction: toone
126
+ fks:
127
+ - customer_id
128
+ name: customer
129
+ resource: Customer
130
+ type: SysEmail
131
+ user_key: id
132
+ mcp-SysMcp:
133
+ attributes:
134
+ - name: request
135
+ type: textarea
136
+ - label: ' id*'
137
+ name: id
138
+ search: true
139
+ sort: true
140
+ show_when: isInserting == false
141
+ type: SysMcp
142
+ user_key: id
143
+ settings:
144
+ HomeJS: /admin-app/home.js
145
+ max_list_columns: 8
146
+ style_guide:
147
+ applicationLocales:
148
+ - en
149
+ - es
150
+ currency_symbol: $
151
+ currency_symbol_position: left
152
+ date_format: LL
153
+ decimal_max: '1000000000'
154
+ decimal_min: '2'
155
+ decimal_separator: .
156
+ detail_mode: tab
157
+ edit_on_mode: dblclick
158
+ exclude_listpicker: false
159
+ include_translation: 'false'
160
+ keycloak_client_id: alsclient
161
+ keycloak_realm: kcals
162
+ keycloak_url: http://localhost:8080
163
+ locale: en
164
+ max_decimal_digits: '4'
165
+ min_decimal_digits: '2'
166
+ new_mode: dialog
167
+ pick_style: list
168
+ row_height: small,
169
+ serviceType: JSONAPI
170
+ startSessionPath: /auth/login
171
+ style: light
172
+ thousand_separator: ','
173
+ use_keycloak: 'false'