cancan-microstack 0.0.1__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 (440) hide show
  1. cancan_microstack/__init__.py +14 -0
  2. cancan_microstack/__version__.py +10 -0
  3. cancan_microstack/assets/__init__.py +6 -0
  4. cancan_microstack/assets/builds/caddy/Caddyfile +187 -0
  5. cancan_microstack/assets/builds/caddy/DEPLOYMENT.md +303 -0
  6. cancan_microstack/assets/builds/caddy/Dockerfile +46 -0
  7. cancan_microstack/assets/builds/caddy/README.md +343 -0
  8. cancan_microstack/assets/builds/caddy/geoip/README.md +5 -0
  9. cancan_microstack/assets/builds/caddy/start.sh +78 -0
  10. cancan_microstack/assets/builds/caddy/waf/coraza.conf +179 -0
  11. cancan_microstack/assets/builds/service/Dockerfile +59 -0
  12. cancan_microstack/assets/builds/service/README.md +13 -0
  13. cancan_microstack/assets/ddl/create_db.sql +22 -0
  14. cancan_microstack/assets/ddl/infra/execution_log_tbl.sql +46 -0
  15. cancan_microstack/assets/ddl/infra/node_instance_tbl.sql +56 -0
  16. cancan_microstack/assets/ddl/infra/service_action_log_tbl.sql +36 -0
  17. cancan_microstack/assets/ddl/infra/service_config_tbl.sql +26 -0
  18. cancan_microstack/assets/ddl/infra/service_info_tbl.sql +45 -0
  19. cancan_microstack/assets/ddl/infra/service_instance_tbl.sql +54 -0
  20. cancan_microstack/assets/ddl/infra/service_operation_tbl.sql +47 -0
  21. cancan_microstack/assets/ddl/infra/workflow_definition_tbl.sql +60 -0
  22. cancan_microstack/assets/ddl/infra/workflow_definition_version_tbl.sql +35 -0
  23. cancan_microstack/assets/ddl/infra/workflow_engine_alert_tbl.sql +34 -0
  24. cancan_microstack/assets/ddl/infra/workflow_run_tbl.sql +52 -0
  25. cancan_microstack/assets/ddl/ops/admin_user_tbl.sql +34 -0
  26. cancan_microstack/assets/ddl/ops/caddy_access_log_tbl.sql +91 -0
  27. cancan_microstack/assets/ddl/ops/caddy_certificate_tbl.sql +59 -0
  28. cancan_microstack/assets/ddl/ops/caddy_rate_limit_tbl.sql +64 -0
  29. cancan_microstack/assets/ddl/ops/caddy_route_tbl.sql +63 -0
  30. cancan_microstack/assets/ddl/ops/caddy_stats_tbl.sql +77 -0
  31. cancan_microstack/assets/ddl/trigger.sql +21 -0
  32. cancan_microstack/assets/docker/docker-compose.infra.yml +401 -0
  33. cancan_microstack/assets/scripts/README.md +195 -0
  34. cancan_microstack/assets/scripts/docker/build_images.sh +44 -0
  35. cancan_microstack/assets/scripts/docker/force_rebuild_images.sh +38 -0
  36. cancan_microstack/assets/scripts/docker/rebuild_all.sh +34 -0
  37. cancan_microstack/assets/scripts/docker/rebuild_compose.sh +61 -0
  38. cancan_microstack/assets/scripts/docker/restart.sh +35 -0
  39. cancan_microstack/assets/scripts/docker/restart_compose.sh +35 -0
  40. cancan_microstack/assets/scripts/docker/start.sh +78 -0
  41. cancan_microstack/assets/scripts/docker/start_all.sh +46 -0
  42. cancan_microstack/assets/scripts/docker/start_compose.sh +66 -0
  43. cancan_microstack/assets/scripts/docker/stop.sh +67 -0
  44. cancan_microstack/assets/scripts/docker/stop_all.sh +38 -0
  45. cancan_microstack/assets/scripts/docker/stop_compose.sh +38 -0
  46. cancan_microstack/assets/scripts/podman/build_images_podman.sh +59 -0
  47. cancan_microstack/assets/scripts/podman/cleanup_podman.sh +25 -0
  48. cancan_microstack/assets/scripts/podman/force_rebuild_images_podman.sh +56 -0
  49. cancan_microstack/assets/scripts/podman/rebuild_all_podman.sh +37 -0
  50. cancan_microstack/assets/scripts/podman/rebuild_compose_podman.sh +60 -0
  51. cancan_microstack/assets/scripts/podman/restart_compose_podman.sh +73 -0
  52. cancan_microstack/assets/scripts/podman/start_all_podman.sh +66 -0
  53. cancan_microstack/assets/scripts/podman/start_compose_podman.sh +80 -0
  54. cancan_microstack/assets/scripts/podman/start_podman.sh +91 -0
  55. cancan_microstack/assets/scripts/podman/stop.sh +73 -0
  56. cancan_microstack/assets/scripts/podman/stop_all_podman.sh +34 -0
  57. cancan_microstack/assets/scripts/podman/stop_compose_podman.sh +58 -0
  58. cancan_microstack/assets/scripts/start_controllersrv.sh +9 -0
  59. cancan_microstack/assets/scripts/utils/check_all_db_tables.sh +104 -0
  60. cancan_microstack/assets/scripts/utils/check_env.sh +177 -0
  61. cancan_microstack/assets/scripts/utils/check_service_management_deployment.sh +225 -0
  62. cancan_microstack/assets/scripts/utils/deploy_service_management.sh +176 -0
  63. cancan_microstack/assets/scripts/utils/force_reload_infrasrv.sh +52 -0
  64. cancan_microstack/assets/scripts/utils/monitor_service_management.sh +187 -0
  65. cancan_microstack/assets/scripts/utils/reset_postgres_volume.sh +68 -0
  66. cancan_microstack/assets/scripts/utils/test_async_operations.sh +141 -0
  67. cancan_microstack/assets/scripts/utils/verify_real_operations.sh +76 -0
  68. cancan_microstack/assets/service/Dockerfile +65 -0
  69. cancan_microstack/assets/www/adminops/assets/AppEmpty.vue_vue_type_script_setup_true_lang-BOKUurnM.js +1 -0
  70. cancan_microstack/assets/www/adminops/assets/ConfigManage-DKV5YOUz.js +1 -0
  71. cancan_microstack/assets/www/adminops/assets/ConfigManage-Y5bhy7wG.css +1 -0
  72. cancan_microstack/assets/www/adminops/assets/ConsoleManage-8ljYvCW2.js +1 -0
  73. cancan_microstack/assets/www/adminops/assets/ConsoleManage-BWpyqbuQ.css +1 -0
  74. cancan_microstack/assets/www/adminops/assets/DashboardNew-B9Nf1OPl.js +1 -0
  75. cancan_microstack/assets/www/adminops/assets/DashboardNew-DYWZKQ1V.css +1 -0
  76. cancan_microstack/assets/www/adminops/assets/LogSearch-CA0Jhe78.js +1 -0
  77. cancan_microstack/assets/www/adminops/assets/LogSearch-CCZfTNPF.css +1 -0
  78. cancan_microstack/assets/www/adminops/assets/LoginView-BId3kP3M.css +1 -0
  79. cancan_microstack/assets/www/adminops/assets/LoginView-BQZTV_Qy.js +1 -0
  80. cancan_microstack/assets/www/adminops/assets/OperationProgressDialog-BdEYwqFq.js +1 -0
  81. cancan_microstack/assets/www/adminops/assets/OperationProgressDialog-D-pASR8G.css +1 -0
  82. cancan_microstack/assets/www/adminops/assets/PageContainer-Byss-yUC.js +1 -0
  83. cancan_microstack/assets/www/adminops/assets/PageContainer-C3nSZwM7.css +1 -0
  84. cancan_microstack/assets/www/adminops/assets/RateLimitManage-BDI8jLpC.css +1 -0
  85. cancan_microstack/assets/www/adminops/assets/RateLimitManage-DJY4NiF-.js +1 -0
  86. cancan_microstack/assets/www/adminops/assets/RouteManage-DaUQ4QLw.css +1 -0
  87. cancan_microstack/assets/www/adminops/assets/RouteManage-w9XCU0UA.js +1 -0
  88. cancan_microstack/assets/www/adminops/assets/ServiceCard-BFzHe6Tw.css +1 -0
  89. cancan_microstack/assets/www/adminops/assets/ServiceCard-BJUhWnA-.js +1 -0
  90. cancan_microstack/assets/www/adminops/assets/ServiceDetail-Cw24WuKp.js +1 -0
  91. cancan_microstack/assets/www/adminops/assets/ServiceDetail-Yum47zdB.css +1 -0
  92. cancan_microstack/assets/www/adminops/assets/ServiceList-C7ryvbhE.js +1 -0
  93. cancan_microstack/assets/www/adminops/assets/ServiceList-Cgd01fUx.css +1 -0
  94. cancan_microstack/assets/www/adminops/assets/ServiceLogs-COpG9H0h.js +1 -0
  95. cancan_microstack/assets/www/adminops/assets/ServiceLogs-H_Alq0cf.css +1 -0
  96. cancan_microstack/assets/www/adminops/assets/StatsOverview-D0TwMQkA.js +39 -0
  97. cancan_microstack/assets/www/adminops/assets/StatsOverview-lqAN6pqM.css +1 -0
  98. cancan_microstack/assets/www/adminops/assets/TotpBindView-CWlAmzFt.js +1 -0
  99. cancan_microstack/assets/www/adminops/assets/TotpBindView-HoQC1lhx.css +1 -0
  100. cancan_microstack/assets/www/adminops/assets/TotpVerifyView-BHN1VtX1.css +1 -0
  101. cancan_microstack/assets/www/adminops/assets/TotpVerifyView-D3w_lZk8.js +1 -0
  102. cancan_microstack/assets/www/adminops/assets/WorkflowCenter-DU_mpIA0.css +1 -0
  103. cancan_microstack/assets/www/adminops/assets/WorkflowCenter-i50rZyxN.js +1 -0
  104. cancan_microstack/assets/www/adminops/assets/WorkflowDesigner-CnHokPL9.js +1 -0
  105. cancan_microstack/assets/www/adminops/assets/WorkflowDesigner-DaZaZpLd.css +1 -0
  106. cancan_microstack/assets/www/adminops/assets/WorkflowRuns-B09hK48c.js +1 -0
  107. cancan_microstack/assets/www/adminops/assets/WorkflowRuns-wGutKIIU.css +1 -0
  108. cancan_microstack/assets/www/adminops/assets/caddy-nnCKf8fG.js +1 -0
  109. cancan_microstack/assets/www/adminops/assets/format-Cuzxgna9.js +1 -0
  110. cancan_microstack/assets/www/adminops/assets/index-CiFlm8oc.js +64 -0
  111. cancan_microstack/assets/www/adminops/assets/index-UW0T1Dkc.css +1 -0
  112. cancan_microstack/assets/www/adminops/assets/service-BYlgGPs_.js +1 -0
  113. cancan_microstack/assets/www/adminops/assets/service-operation-6GzLw2Z1.js +1 -0
  114. cancan_microstack/assets/www/adminops/assets/style-CcIXnQ5y.css +1 -0
  115. cancan_microstack/assets/www/adminops/assets/style-lRnStdGu.js +39 -0
  116. cancan_microstack/assets/www/adminops/assets/useDebounce-BRlqfXqf.js +1 -0
  117. cancan_microstack/assets/www/adminops/assets/workflow-CUXs39Ac.js +1 -0
  118. cancan_microstack/assets/www/adminops/index.html +16 -0
  119. cancan_microstack/assets/www/adminops/vite.svg +1 -0
  120. cancan_microstack/cli/__init__.py +14 -0
  121. cancan_microstack/cli/__main__.py +9 -0
  122. cancan_microstack/cli/main.py +552 -0
  123. cancan_microstack/cmd/__init__.py +54 -0
  124. cancan_microstack/cmd/cancan/__init__.py +12 -0
  125. cancan_microstack/cmd/cancan/run.py +395 -0
  126. cancan_microstack/cmd/controllersrv/__init__.py +0 -0
  127. cancan_microstack/cmd/controllersrv/run.py +131 -0
  128. cancan_microstack/cmd/infrasrv/__init__.py +5 -0
  129. cancan_microstack/cmd/infrasrv/run.py +100 -0
  130. cancan_microstack/cmd/opsbffsrv/__init__.py +5 -0
  131. cancan_microstack/cmd/opsbffsrv/run.py +96 -0
  132. cancan_microstack/core/__init__.py +5 -0
  133. cancan_microstack/core/assets.py +123 -0
  134. cancan_microstack/core/compose_builder.py +102 -0
  135. cancan_microstack/core/doctor.py +152 -0
  136. cancan_microstack/core/microstack.py +71 -0
  137. cancan_microstack/core/runner.py +56 -0
  138. cancan_microstack/core/stack_manager.py +186 -0
  139. cancan_microstack/public/__init__.py +7 -0
  140. cancan_microstack/public/api/__init__.py +1 -0
  141. cancan_microstack/public/api/controllersrv_client.py +277 -0
  142. cancan_microstack/public/api/infrasrv_client.py +404 -0
  143. cancan_microstack/public/const/__init__.py +1 -0
  144. cancan_microstack/public/const/action_consts.py +18 -0
  145. cancan_microstack/public/const/app_consts.py +42 -0
  146. cancan_microstack/public/const/caddy_consts.py +22 -0
  147. cancan_microstack/public/const/controllersrv_consts.py +163 -0
  148. cancan_microstack/public/const/docker_consts.py +15 -0
  149. cancan_microstack/public/const/error.py +56 -0
  150. cancan_microstack/public/const/health_consts.py +52 -0
  151. cancan_microstack/public/const/hook_enums.py +56 -0
  152. cancan_microstack/public/const/logging_enums.py +13 -0
  153. cancan_microstack/public/const/metrics_enums.py +36 -0
  154. cancan_microstack/public/const/monitor_enums.py +26 -0
  155. cancan_microstack/public/const/operation_consts.py +53 -0
  156. cancan_microstack/public/const/opsbffsrv_error.py +92 -0
  157. cancan_microstack/public/const/overrides_consts.py +13 -0
  158. cancan_microstack/public/const/redis.py +17 -0
  159. cancan_microstack/public/const/service_consts.py +15 -0
  160. cancan_microstack/public/const/workflow_consts.py +65 -0
  161. cancan_microstack/public/error.py +41 -0
  162. cancan_microstack/public/logging/__init__.py +0 -0
  163. cancan_microstack/public/logging/initializer.py +109 -0
  164. cancan_microstack/public/logging/mq_handler.py +279 -0
  165. cancan_microstack/public/schemas/__init__.py +1 -0
  166. cancan_microstack/public/schemas/caddy/__init__.py +381 -0
  167. cancan_microstack/public/schemas/caddy/analysis.py +90 -0
  168. cancan_microstack/public/schemas/caddy/route.py +18 -0
  169. cancan_microstack/public/schemas/common.py +79 -0
  170. cancan_microstack/public/schemas/controllersrv/__init__.py +3 -0
  171. cancan_microstack/public/schemas/controllersrv/async_requests.py +30 -0
  172. cancan_microstack/public/schemas/controllersrv/compose_models.py +47 -0
  173. cancan_microstack/public/schemas/controllersrv/const.py +24 -0
  174. cancan_microstack/public/schemas/controllersrv/docker_models.py +45 -0
  175. cancan_microstack/public/schemas/controllersrv/docker_responses.py +104 -0
  176. cancan_microstack/public/schemas/controllersrv/requests.py +54 -0
  177. cancan_microstack/public/schemas/controllersrv/responses.py +124 -0
  178. cancan_microstack/public/schemas/controllersrv/task_models.py +102 -0
  179. cancan_microstack/public/schemas/controllersrv/validation.py +23 -0
  180. cancan_microstack/public/schemas/hook_metrics.py +124 -0
  181. cancan_microstack/public/schemas/hooks.py +39 -0
  182. cancan_microstack/public/schemas/infra/__init__.py +0 -0
  183. cancan_microstack/public/schemas/infra/cleanup.py +25 -0
  184. cancan_microstack/public/schemas/infra/container.py +74 -0
  185. cancan_microstack/public/schemas/infra/enums.py +135 -0
  186. cancan_microstack/public/schemas/infra/health_check.py +42 -0
  187. cancan_microstack/public/schemas/infra/hook_log.py +42 -0
  188. cancan_microstack/public/schemas/infra/operation.py +90 -0
  189. cancan_microstack/public/schemas/infra/overview.py +25 -0
  190. cancan_microstack/public/schemas/infra/push.py +33 -0
  191. cancan_microstack/public/schemas/infra/service_action_log.py +47 -0
  192. cancan_microstack/public/schemas/infra/service_config.py +10 -0
  193. cancan_microstack/public/schemas/infra/service_info.py +69 -0
  194. cancan_microstack/public/schemas/infra/service_instance.py +93 -0
  195. cancan_microstack/public/schemas/infra/service_management.py +152 -0
  196. cancan_microstack/public/schemas/infra/service_operation.py +79 -0
  197. cancan_microstack/public/schemas/infra/service_registry.py +158 -0
  198. cancan_microstack/public/schemas/infra/status_types.py +19 -0
  199. cancan_microstack/public/schemas/infra/workflow.py +566 -0
  200. cancan_microstack/public/schemas/logging/__init__.py +1 -0
  201. cancan_microstack/public/schemas/logging/log_event.py +121 -0
  202. cancan_microstack/public/schemas/opsbffsrv/__init__.py +1 -0
  203. cancan_microstack/public/schemas/opsbffsrv/async_ops.py +17 -0
  204. cancan_microstack/public/schemas/opsbffsrv/db_admin.py +147 -0
  205. cancan_microstack/public/schemas/opsbffsrv/db_init.py +48 -0
  206. cancan_microstack/public/schemas/opsbffsrv/service_config.py +89 -0
  207. cancan_microstack/public/schemas/opsbffsrv/service_logs.py +54 -0
  208. cancan_microstack/public/schemas/service_operation.py +24 -0
  209. cancan_microstack/public/schemas/service_registry.py +40 -0
  210. cancan_microstack/public/types/__init__.py +7 -0
  211. cancan_microstack/public/web/__init__.py +0 -0
  212. cancan_microstack/public/web/config_value.py +105 -0
  213. cancan_microstack/public/web/server.py +385 -0
  214. cancan_microstack/py.typed +0 -0
  215. cancan_microstack/runtime/__init__.py +0 -0
  216. cancan_microstack/runtime/compose_cmd.py +228 -0
  217. cancan_microstack/runtime/host_daemon.py +318 -0
  218. cancan_microstack/runtime/overrides.py +103 -0
  219. cancan_microstack/runtime/resources.py +25 -0
  220. cancan_microstack/runtime/workspace.py +94 -0
  221. cancan_microstack/services/__init__.py +0 -0
  222. cancan_microstack/services/controllersrv/__init__.py +8 -0
  223. cancan_microstack/services/controllersrv/application/__init__.py +0 -0
  224. cancan_microstack/services/controllersrv/application/docker_compose_app.py +427 -0
  225. cancan_microstack/services/controllersrv/conf/__init__.py +0 -0
  226. cancan_microstack/services/controllersrv/conf/config.py +76 -0
  227. cancan_microstack/services/controllersrv/conf/settings.py +54 -0
  228. cancan_microstack/services/controllersrv/domain/__init__.py +0 -0
  229. cancan_microstack/services/controllersrv/domain/docker_compose/__init__.py +0 -0
  230. cancan_microstack/services/controllersrv/domain/docker_compose/docker_compose_domain.py +278 -0
  231. cancan_microstack/services/controllersrv/domain/service_validator.py +327 -0
  232. cancan_microstack/services/controllersrv/domain/task/__init__.py +17 -0
  233. cancan_microstack/services/controllersrv/domain/task/task_queue.py +286 -0
  234. cancan_microstack/services/controllersrv/domain/task/task_worker.py +495 -0
  235. cancan_microstack/services/controllersrv/infrastructure/__init__.py +0 -0
  236. cancan_microstack/services/controllersrv/interface/__init__.py +0 -0
  237. cancan_microstack/services/controllersrv/interface/api/__init__.py +0 -0
  238. cancan_microstack/services/controllersrv/interface/api/docker_control_api.py +470 -0
  239. cancan_microstack/services/controllersrv/router.py +132 -0
  240. cancan_microstack/services/infrasrv/__init__.py +4 -0
  241. cancan_microstack/services/infrasrv/application/__init__.py +0 -0
  242. cancan_microstack/services/infrasrv/application/health_check_app.py +24 -0
  243. cancan_microstack/services/infrasrv/application/logging/__init__.py +1 -0
  244. cancan_microstack/services/infrasrv/application/logging/log_ingestion_service.py +183 -0
  245. cancan_microstack/services/infrasrv/application/service_config.py +22 -0
  246. cancan_microstack/services/infrasrv/application/service_logs_app.py +53 -0
  247. cancan_microstack/services/infrasrv/application/service_management_app.py +689 -0
  248. cancan_microstack/services/infrasrv/application/service_operation_tracker.py +251 -0
  249. cancan_microstack/services/infrasrv/application/service_registry.py +53 -0
  250. cancan_microstack/services/infrasrv/application/workflow/__init__.py +0 -0
  251. cancan_microstack/services/infrasrv/application/workflow/workflow_app.py +991 -0
  252. cancan_microstack/services/infrasrv/application/workflow/workflow_queue.py +302 -0
  253. cancan_microstack/services/infrasrv/application/workflow/workflow_tasks.py +46 -0
  254. cancan_microstack/services/infrasrv/application/workflow/workflow_worker_runtime.py +122 -0
  255. cancan_microstack/services/infrasrv/conf/__init__.py +0 -0
  256. cancan_microstack/services/infrasrv/conf/config.py +98 -0
  257. cancan_microstack/services/infrasrv/domain/__init__.py +0 -0
  258. cancan_microstack/services/infrasrv/domain/health_check/__init__.py +3 -0
  259. cancan_microstack/services/infrasrv/domain/health_check/health_check_domain.py +576 -0
  260. cancan_microstack/services/infrasrv/domain/hooks/__init__.py +19 -0
  261. cancan_microstack/services/infrasrv/domain/hooks/builtin_hooks.py +308 -0
  262. cancan_microstack/services/infrasrv/domain/hooks/hook_registry.py +43 -0
  263. cancan_microstack/services/infrasrv/domain/hooks/hooks_log_utils.py +275 -0
  264. cancan_microstack/services/infrasrv/domain/hooks/init.py +17 -0
  265. cancan_microstack/services/infrasrv/domain/hooks/metrics.py +205 -0
  266. cancan_microstack/services/infrasrv/domain/hooks/pre_registration_hooks.py +490 -0
  267. cancan_microstack/services/infrasrv/domain/registry/__init__.py +0 -0
  268. cancan_microstack/services/infrasrv/domain/registry/service_registry.py +509 -0
  269. cancan_microstack/services/infrasrv/domain/service_config/__init__.py +0 -0
  270. cancan_microstack/services/infrasrv/domain/service_config/service_config.py +50 -0
  271. cancan_microstack/services/infrasrv/domain/service_logs/__init__.py +0 -0
  272. cancan_microstack/services/infrasrv/domain/service_logs/service_logs_domain.py +51 -0
  273. cancan_microstack/services/infrasrv/domain/workflow/__init__.py +4 -0
  274. cancan_microstack/services/infrasrv/domain/workflow/engine.py +159 -0
  275. cancan_microstack/services/infrasrv/domain/workflow/node_handlers.py +509 -0
  276. cancan_microstack/services/infrasrv/domain/workflow/workflow_domain.py +164 -0
  277. cancan_microstack/services/infrasrv/infrastructure/__init__.py +0 -0
  278. cancan_microstack/services/infrasrv/infrastructure/api/__init__.py +0 -0
  279. cancan_microstack/services/infrasrv/infrastructure/api/controllersrv_api.py +165 -0
  280. cancan_microstack/services/infrasrv/infrastructure/cache/__init__.py +0 -0
  281. cancan_microstack/services/infrasrv/infrastructure/cache/service_registry_cache.py +174 -0
  282. cancan_microstack/services/infrasrv/infrastructure/db/__init__.py +0 -0
  283. cancan_microstack/services/infrasrv/infrastructure/db/model/__init__.py +0 -0
  284. cancan_microstack/services/infrasrv/infrastructure/db/model/execution_log_tbl.py +53 -0
  285. cancan_microstack/services/infrasrv/infrastructure/db/model/node_instance_tbl.py +55 -0
  286. cancan_microstack/services/infrasrv/infrastructure/db/model/service_action_log_tbl.py +44 -0
  287. cancan_microstack/services/infrasrv/infrastructure/db/model/service_config_tbl.py +30 -0
  288. cancan_microstack/services/infrasrv/infrastructure/db/model/service_info_tbl.py +59 -0
  289. cancan_microstack/services/infrasrv/infrastructure/db/model/service_instance_tbl.py +88 -0
  290. cancan_microstack/services/infrasrv/infrastructure/db/model/service_operation_tbl.py +73 -0
  291. cancan_microstack/services/infrasrv/infrastructure/db/model/workflow_definition_tbl.py +55 -0
  292. cancan_microstack/services/infrasrv/infrastructure/db/model/workflow_definition_version_tbl.py +43 -0
  293. cancan_microstack/services/infrasrv/infrastructure/db/model/workflow_engine_alert_tbl.py +57 -0
  294. cancan_microstack/services/infrasrv/infrastructure/db/model/workflow_run_tbl.py +56 -0
  295. cancan_microstack/services/infrasrv/infrastructure/db/operate/__init__.py +0 -0
  296. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_action_log_op.py +239 -0
  297. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_config.py +80 -0
  298. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_config_manager.py +198 -0
  299. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_info_op.py +297 -0
  300. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_instance_op.py +688 -0
  301. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_operation_op.py +387 -0
  302. cancan_microstack/services/infrasrv/infrastructure/db/operate/service_registry.py +124 -0
  303. cancan_microstack/services/infrasrv/infrastructure/db/operate/workflow_op.py +804 -0
  304. cancan_microstack/services/infrasrv/infrastructure/ddl_manager.py +31 -0
  305. cancan_microstack/services/infrasrv/infrastructure/mongo/__init__.py +1 -0
  306. cancan_microstack/services/infrasrv/infrastructure/mongo/log_repository.py +129 -0
  307. cancan_microstack/services/infrasrv/interface/__init__.py +0 -0
  308. cancan_microstack/services/infrasrv/interface/api/__init__.py +0 -0
  309. cancan_microstack/services/infrasrv/interface/api/health_check_api.py +29 -0
  310. cancan_microstack/services/infrasrv/interface/api/hooks.py +284 -0
  311. cancan_microstack/services/infrasrv/interface/api/internal.py +49 -0
  312. cancan_microstack/services/infrasrv/interface/api/internal_instance_api.py +265 -0
  313. cancan_microstack/services/infrasrv/interface/api/internal_operation_api.py +206 -0
  314. cancan_microstack/services/infrasrv/interface/api/service_config.py +50 -0
  315. cancan_microstack/services/infrasrv/interface/api/service_logs_api.py +49 -0
  316. cancan_microstack/services/infrasrv/interface/api/service_management_api.py +113 -0
  317. cancan_microstack/services/infrasrv/interface/api/service_registry.py +117 -0
  318. cancan_microstack/services/infrasrv/interface/api/workflow_api.py +303 -0
  319. cancan_microstack/services/infrasrv/interface/schedule/__init__.py +0 -0
  320. cancan_microstack/services/infrasrv/interface/schedule/cleanup.py +13 -0
  321. cancan_microstack/services/infrasrv/interface/schedule/health_check.py +27 -0
  322. cancan_microstack/services/infrasrv/interface/schedule/log_cleanup.py +26 -0
  323. cancan_microstack/services/infrasrv/interface/schedule/operation_tracker.py +25 -0
  324. cancan_microstack/services/infrasrv/interface/schedule/scheduler.py +39 -0
  325. cancan_microstack/services/infrasrv/interface/schedule/workflow_scheduler.py +115 -0
  326. cancan_microstack/services/infrasrv/router.py +341 -0
  327. cancan_microstack/services/opsbffsrv/__init__.py +4 -0
  328. cancan_microstack/services/opsbffsrv/application/__init__.py +0 -0
  329. cancan_microstack/services/opsbffsrv/application/async_operation_app.py +150 -0
  330. cancan_microstack/services/opsbffsrv/application/auth_app.py +285 -0
  331. cancan_microstack/services/opsbffsrv/application/caddy/__init__.py +0 -0
  332. cancan_microstack/services/opsbffsrv/application/caddy/access_log_analysis_app.py +344 -0
  333. cancan_microstack/services/opsbffsrv/application/caddy/access_log_ingestion_service.py +169 -0
  334. cancan_microstack/services/opsbffsrv/application/caddy/certificate_management_app.py +355 -0
  335. cancan_microstack/services/opsbffsrv/application/caddy/rate_limit_management_app.py +496 -0
  336. cancan_microstack/services/opsbffsrv/application/caddy/route_management_app.py +401 -0
  337. cancan_microstack/services/opsbffsrv/application/caddy/stats_aggregation_app.py +364 -0
  338. cancan_microstack/services/opsbffsrv/application/db_admin_app.py +103 -0
  339. cancan_microstack/services/opsbffsrv/application/db_init_app.py +283 -0
  340. cancan_microstack/services/opsbffsrv/application/logging/__init__.py +1 -0
  341. cancan_microstack/services/opsbffsrv/application/logging/log_query_app.py +28 -0
  342. cancan_microstack/services/opsbffsrv/application/service_config.py +158 -0
  343. cancan_microstack/services/opsbffsrv/application/service_logs_app.py +74 -0
  344. cancan_microstack/services/opsbffsrv/application/service_registry.py +36 -0
  345. cancan_microstack/services/opsbffsrv/application/workflow_ops_app.py +730 -0
  346. cancan_microstack/services/opsbffsrv/conf/__init__.py +0 -0
  347. cancan_microstack/services/opsbffsrv/conf/config.py +224 -0
  348. cancan_microstack/services/opsbffsrv/domain/__init__.py +0 -0
  349. cancan_microstack/services/opsbffsrv/domain/auth/__init__.py +0 -0
  350. cancan_microstack/services/opsbffsrv/domain/auth/admin_init.py +38 -0
  351. cancan_microstack/services/opsbffsrv/domain/auth/auth_domain.py +108 -0
  352. cancan_microstack/services/opsbffsrv/domain/caddy/__init__.py +0 -0
  353. cancan_microstack/services/opsbffsrv/domain/caddy/access_log_analysis.py +358 -0
  354. cancan_microstack/services/opsbffsrv/domain/caddy/certificate_management.py +325 -0
  355. cancan_microstack/services/opsbffsrv/domain/caddy/default_routes.py +53 -0
  356. cancan_microstack/services/opsbffsrv/domain/caddy/rate_limit_management.py +308 -0
  357. cancan_microstack/services/opsbffsrv/domain/caddy/route_management.py +279 -0
  358. cancan_microstack/services/opsbffsrv/domain/caddy/stats_aggregation.py +654 -0
  359. cancan_microstack/services/opsbffsrv/domain/db_admin/__init__.py +0 -0
  360. cancan_microstack/services/opsbffsrv/domain/db_admin/db_admin_domain.py +118 -0
  361. cancan_microstack/services/opsbffsrv/domain/db_init/__init__.py +3 -0
  362. cancan_microstack/services/opsbffsrv/domain/db_init/db_init_domain.py +358 -0
  363. cancan_microstack/services/opsbffsrv/domain/logging/__init__.py +1 -0
  364. cancan_microstack/services/opsbffsrv/domain/logging/log_query_domain.py +99 -0
  365. cancan_microstack/services/opsbffsrv/domain/service_config/__init__.py +0 -0
  366. cancan_microstack/services/opsbffsrv/domain/service_config/service_config.py +81 -0
  367. cancan_microstack/services/opsbffsrv/domain/service_registry/__init__.py +0 -0
  368. cancan_microstack/services/opsbffsrv/domain/service_registry/service_registry.py +292 -0
  369. cancan_microstack/services/opsbffsrv/infrastructure/__init__.py +0 -0
  370. cancan_microstack/services/opsbffsrv/infrastructure/api/__init__.py +0 -0
  371. cancan_microstack/services/opsbffsrv/infrastructure/api/infrasrv_api.py +242 -0
  372. cancan_microstack/services/opsbffsrv/infrastructure/auth/__init__.py +0 -0
  373. cancan_microstack/services/opsbffsrv/infrastructure/auth/captcha_service.py +67 -0
  374. cancan_microstack/services/opsbffsrv/infrastructure/auth/password_service.py +12 -0
  375. cancan_microstack/services/opsbffsrv/infrastructure/auth/redis_store.py +131 -0
  376. cancan_microstack/services/opsbffsrv/infrastructure/auth/totp_service.py +59 -0
  377. cancan_microstack/services/opsbffsrv/infrastructure/caddy/__init__.py +0 -0
  378. cancan_microstack/services/opsbffsrv/infrastructure/caddy/access_log_parser.py +307 -0
  379. cancan_microstack/services/opsbffsrv/infrastructure/caddy/admin_api_client.py +678 -0
  380. cancan_microstack/services/opsbffsrv/infrastructure/caddy/ip_geo_locator.py +176 -0
  381. cancan_microstack/services/opsbffsrv/infrastructure/db/__init__.py +0 -0
  382. cancan_microstack/services/opsbffsrv/infrastructure/db/model/__init__.py +0 -0
  383. cancan_microstack/services/opsbffsrv/infrastructure/db/model/admin_user_tbl.py +33 -0
  384. cancan_microstack/services/opsbffsrv/infrastructure/db/model/caddy_access_log_tbl.py +90 -0
  385. cancan_microstack/services/opsbffsrv/infrastructure/db/model/caddy_certificate_tbl.py +65 -0
  386. cancan_microstack/services/opsbffsrv/infrastructure/db/model/caddy_rate_limit_tbl.py +69 -0
  387. cancan_microstack/services/opsbffsrv/infrastructure/db/model/caddy_route_tbl.py +66 -0
  388. cancan_microstack/services/opsbffsrv/infrastructure/db/model/caddy_stats_tbl.py +78 -0
  389. cancan_microstack/services/opsbffsrv/infrastructure/db/model/service_action_log_tbl.py +44 -0
  390. cancan_microstack/services/opsbffsrv/infrastructure/db/model/service_config_tbl.py +30 -0
  391. cancan_microstack/services/opsbffsrv/infrastructure/db/model/service_info_tbl.py +51 -0
  392. cancan_microstack/services/opsbffsrv/infrastructure/db/model/service_instance_tbl.py +68 -0
  393. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/__init__.py +0 -0
  394. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/admin_user_operate.py +59 -0
  395. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/caddy_access_log.py +531 -0
  396. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/caddy_certificate.py +451 -0
  397. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/caddy_rate_limit.py +360 -0
  398. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/caddy_route.py +271 -0
  399. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/caddy_stats.py +343 -0
  400. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/service_action_log_op.py +57 -0
  401. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/service_config.py +86 -0
  402. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/service_info_op.py +79 -0
  403. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/service_instance.py +58 -0
  404. cancan_microstack/services/opsbffsrv/infrastructure/db/operate/service_registry.py +138 -0
  405. cancan_microstack/services/opsbffsrv/infrastructure/ddl_manager.py +31 -0
  406. cancan_microstack/services/opsbffsrv/infrastructure/mongo/__init__.py +1 -0
  407. cancan_microstack/services/opsbffsrv/infrastructure/mongo/log_query_repository.py +87 -0
  408. cancan_microstack/services/opsbffsrv/interface/__init__.py +0 -0
  409. cancan_microstack/services/opsbffsrv/interface/api/__init__.py +0 -0
  410. cancan_microstack/services/opsbffsrv/interface/api/async_operation_api.py +137 -0
  411. cancan_microstack/services/opsbffsrv/interface/api/auth_api.py +113 -0
  412. cancan_microstack/services/opsbffsrv/interface/api/caddy/__init__.py +3 -0
  413. cancan_microstack/services/opsbffsrv/interface/api/caddy/access_log_api.py +174 -0
  414. cancan_microstack/services/opsbffsrv/interface/api/caddy/certificate_api.py +235 -0
  415. cancan_microstack/services/opsbffsrv/interface/api/caddy/rate_limit_api.py +302 -0
  416. cancan_microstack/services/opsbffsrv/interface/api/caddy/route_api.py +250 -0
  417. cancan_microstack/services/opsbffsrv/interface/api/caddy/stats_api.py +243 -0
  418. cancan_microstack/services/opsbffsrv/interface/api/db_admin_api.py +62 -0
  419. cancan_microstack/services/opsbffsrv/interface/api/db_init_api.py +109 -0
  420. cancan_microstack/services/opsbffsrv/interface/api/instance_management_api.py +165 -0
  421. cancan_microstack/services/opsbffsrv/interface/api/log_query_api.py +41 -0
  422. cancan_microstack/services/opsbffsrv/interface/api/mongo_express_proxy_api.py +181 -0
  423. cancan_microstack/services/opsbffsrv/interface/api/pgweb_proxy_api.py +154 -0
  424. cancan_microstack/services/opsbffsrv/interface/api/rabbitmq_mgmt_proxy_api.py +518 -0
  425. cancan_microstack/services/opsbffsrv/interface/api/redis_commander_proxy_api.py +133 -0
  426. cancan_microstack/services/opsbffsrv/interface/api/service_config.py +146 -0
  427. cancan_microstack/services/opsbffsrv/interface/api/service_logs_api.py +81 -0
  428. cancan_microstack/services/opsbffsrv/interface/api/service_registry.py +66 -0
  429. cancan_microstack/services/opsbffsrv/interface/api/workflow_ops_api.py +413 -0
  430. cancan_microstack/services/opsbffsrv/interface/middleware/__init__.py +0 -0
  431. cancan_microstack/services/opsbffsrv/interface/middleware/auth_middleware.py +52 -0
  432. cancan_microstack/services/opsbffsrv/router.py +901 -0
  433. cancan_microstack/utils/__init__.py +1 -0
  434. cancan_microstack/utils/container_env.py +218 -0
  435. cancan_microstack-0.0.1.dist-info/METADATA +155 -0
  436. cancan_microstack-0.0.1.dist-info/RECORD +440 -0
  437. cancan_microstack-0.0.1.dist-info/WHEEL +5 -0
  438. cancan_microstack-0.0.1.dist-info/entry_points.txt +2 -0
  439. cancan_microstack-0.0.1.dist-info/licenses/LICENSE +21 -0
  440. cancan_microstack-0.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,46 @@
1
+ -- 执行审计日志表
2
+ -- Stores detailed logs for each attempt of a node instance execution.
3
+
4
+ BEGIN;
5
+
6
+ CREATE TABLE IF NOT EXISTS execution_log_tbl (
7
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
8
+ node_instance_id UUID NOT NULL REFERENCES node_instance_tbl(id),
9
+
10
+ attempt_no INTEGER NOT NULL,
11
+
12
+ -- Snapshots
13
+ request_snapshot JSONB,
14
+ response_snapshot JSONB,
15
+
16
+ status VARCHAR(20), -- SUCCESS, FAILURE, TIMEOUT
17
+ error_detail TEXT,
18
+
19
+ -- Standard fields
20
+ flag SMALLINT DEFAULT 0,
21
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
22
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
23
+
24
+ -- Execution-specific timestamps
25
+ start_time TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
26
+ end_time TIMESTAMPTZ,
27
+ duration_ms INTEGER
28
+ );
29
+
30
+ -- Indexes
31
+ CREATE INDEX IF NOT EXISTS idx_exec_log_node_instance ON execution_log_tbl(node_instance_id);
32
+
33
+ -- 提升按更新时间查询效率
34
+ CREATE INDEX idx_execution_log_tbl_update_time ON execution_log_tbl (update_time);
35
+
36
+ -- Comments
37
+ COMMENT ON TABLE execution_log_tbl IS '执行审计日志表,记录每个节点实例每次尝试的详细日志';
38
+ COMMENT ON COLUMN execution_log_tbl.attempt_no IS '第几次尝试';
39
+ COMMENT ON COLUMN execution_log_tbl.request_snapshot IS '动作快照 (请求前)';
40
+ COMMENT ON COLUMN execution_log_tbl.response_snapshot IS '结果快照 (响应后)';
41
+ COMMENT ON COLUMN execution_log_tbl.status IS '执行结果状态: SUCCESS, FAILURE, TIMEOUT';
42
+ COMMENT ON COLUMN execution_log_tbl.flag IS '标志位 (0:正常, 1:已删除)';
43
+ COMMENT ON COLUMN execution_log_tbl.created_time IS '记录创建时间';
44
+ COMMENT ON COLUMN execution_log_tbl.update_time IS '记录最后更新时间';
45
+
46
+ COMMIT;
@@ -0,0 +1,56 @@
1
+ -- 节点运行实例表
2
+ -- Stores each execution instance of a node within a workflow run.
3
+
4
+ BEGIN;
5
+
6
+ CREATE TABLE IF NOT EXISTS node_instance_tbl (
7
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
8
+ run_id UUID NOT NULL REFERENCES workflow_run_tbl(id),
9
+
10
+ -- Corresponds to the key in the JSON graph (e.g. "step_1")
11
+ node_id VARCHAR(50) NOT NULL,
12
+
13
+ -- Loop iteration number (defaults to 1)
14
+ loop_index INTEGER NOT NULL DEFAULT 1,
15
+
16
+ status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
17
+
18
+ -- Data flow
19
+ input_data JSONB DEFAULT '{}', -- Input parameters for this node
20
+ final_output JSONB DEFAULT '{}', -- Result produced by this node
21
+
22
+ -- Statistics
23
+ attempt_count INTEGER DEFAULT 0,
24
+ error_msg TEXT,
25
+
26
+ -- Standard fields
27
+ flag SMALLINT DEFAULT 0,
28
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
29
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
30
+ );
31
+
32
+ -- Indexes
33
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_node_instance_unique ON node_instance_tbl(run_id, node_id, loop_index);
34
+ CREATE INDEX IF NOT EXISTS idx_node_instance_run_id ON node_instance_tbl(run_id);
35
+ CREATE INDEX IF NOT EXISTS idx_node_instance_status ON node_instance_tbl(status);
36
+
37
+ -- 提升按更新时间查询效率
38
+ CREATE INDEX idx_node_instance_tbl_update_time ON node_instance_tbl (update_time);
39
+
40
+ -- Auto-update timestamp trigger
41
+ CREATE TRIGGER t_upd_node_instance_tbl
42
+ BEFORE UPDATE ON node_instance_tbl
43
+ FOR EACH ROW
44
+ EXECUTE PROCEDURE upd_timestamp();
45
+
46
+ -- Comments
47
+ COMMENT ON TABLE node_instance_tbl IS '节点运行实例表,记录工作流中每个节点的执行状态';
48
+ COMMENT ON COLUMN node_instance_tbl.loop_index IS '循环轮次 (默认为 1)';
49
+ COMMENT ON COLUMN node_instance_tbl.input_data IS '进入该节点时的入参';
50
+ COMMENT ON COLUMN node_instance_tbl.final_output IS '该节点产出的结果';
51
+ COMMENT ON COLUMN node_instance_tbl.status IS '节点状态: PENDING, RUNNING, SUCCESS, FAILURE, SKIPPED, SUSPENDED, RETRYING, CANCELLED';
52
+ COMMENT ON COLUMN node_instance_tbl.flag IS '标志位 (0:正常, 1:已删除)';
53
+ COMMENT ON COLUMN node_instance_tbl.created_time IS '记录创建时间';
54
+ COMMENT ON COLUMN node_instance_tbl.update_time IS '记录最后更新时间';
55
+
56
+ COMMIT;
@@ -0,0 +1,36 @@
1
+ -- 服务行为日志表(service_action_log_tbl)
2
+ -- 记录服务实例的所有关键行为:上线、下线、重启、扩缩容等
3
+
4
+ CREATE TABLE IF NOT EXISTS service_action_log_tbl (
5
+ id SERIAL PRIMARY KEY,
6
+ service_name VARCHAR(100) NOT NULL, -- 服务名称
7
+ instance_id VARCHAR(50), -- 实例ID(可为空,如果是服务级别操作)
8
+ action_type VARCHAR(50) NOT NULL, -- 行为类型:register, deregister, heartbeat, health_check_fail, restart, scale, rebuild
9
+ action_status VARCHAR(20) NOT NULL, -- 行为状态:success, failed, in_progress
10
+ action_detail JSONB DEFAULT '{}', -- 行为详情(JSON格式)
11
+ error_message TEXT, -- 错误信息(如果失败)
12
+ triggered_by VARCHAR(50) DEFAULT 'system', -- 触发者:system, user, auto
13
+ action_metadata JSONB DEFAULT '{}', -- 行为附加元数据
14
+ flag SMALLINT DEFAULT 0, -- 标志位
15
+ created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
16
+ update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
17
+ );
18
+
19
+ -- 创建索引
20
+ CREATE INDEX idx_service_action_log_service_name ON service_action_log_tbl(service_name);
21
+ CREATE INDEX idx_service_action_log_instance_id ON service_action_log_tbl(instance_id);
22
+ CREATE INDEX idx_service_action_log_action_type ON service_action_log_tbl(action_type);
23
+ CREATE INDEX idx_service_action_log_action_status ON service_action_log_tbl(action_status);
24
+ CREATE INDEX idx_service_action_log_created_time ON service_action_log_tbl(created_time DESC);
25
+
26
+ -- 添加更新时间触发器
27
+ CREATE TRIGGER update_service_action_log_update_time
28
+ BEFORE UPDATE ON service_action_log_tbl
29
+ FOR EACH ROW
30
+ EXECUTE FUNCTION update_modified_column();
31
+
32
+ -- 添加注释
33
+ COMMENT ON TABLE service_action_log_tbl IS '服务行为日志表,记录服务实例的所有关键行为';
34
+ COMMENT ON COLUMN service_action_log_tbl.action_type IS '行为类型:register(注册), deregister(注销), heartbeat(心跳), health_check_fail(健康检查失败), restart(重启), scale(扩缩容), rebuild(重建)';
35
+ COMMENT ON COLUMN service_action_log_tbl.action_status IS '行为状态:success(成功), failed(失败), in_progress(进行中)';
36
+ COMMENT ON COLUMN service_action_log_tbl.triggered_by IS '触发者:system(系统自动), user(用户手动), auto(自动化策略)';
@@ -0,0 +1,26 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE service_config_tbl
4
+ (
5
+ id BIGSERIAL PRIMARY KEY,
6
+ service_name VARCHAR NOT NULL,
7
+ conf_key VARCHAR NOT NULL,
8
+ conf_value TEXT,
9
+ flag SMALLINT DEFAULT 0,
10
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
11
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
12
+ );
13
+
14
+ CREATE UNIQUE INDEX uk_service_config_tbl_service_name_conf_key ON service_config_tbl (service_name, conf_key);
15
+
16
+ -- 提升按更新时间查询效率
17
+ CREATE INDEX idx_service_config_tbl_update_time ON service_config_tbl (update_time);
18
+
19
+ -- 自动更新时间戳触发器
20
+ CREATE TRIGGER t_upd_service_config_tbl
21
+ BEFORE UPDATE
22
+ ON service_config_tbl
23
+ FOR EACH ROW
24
+ EXECUTE PROCEDURE upd_timestamp();
25
+
26
+ COMMIT;
@@ -0,0 +1,45 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE service_info_tbl
4
+ (
5
+ id BIGSERIAL PRIMARY KEY,
6
+ service_name VARCHAR(100) NOT NULL,
7
+ description TEXT,
8
+ service_type VARCHAR(50) DEFAULT 'business',
9
+ health_check_path VARCHAR(255) DEFAULT '/internal/health',
10
+ service_metadata JSONB DEFAULT '{}',
11
+ expected_status VARCHAR(20) DEFAULT 'running',
12
+ desired_replicas SMALLINT DEFAULT 1,
13
+ actual_replicas SMALLINT DEFAULT 0,
14
+ last_scale_at TIMESTAMP WITH TIME ZONE,
15
+ scale_policy JSONB DEFAULT '{}',
16
+ registered_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
17
+ last_registered_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
18
+ flag SMALLINT DEFAULT 0,
19
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
20
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
21
+ );
22
+
23
+ -- 唯一索引
24
+ CREATE UNIQUE INDEX uk_service_info_tbl_service_name ON service_info_tbl (service_name);
25
+
26
+ -- 提升按更新时间查询效率
27
+ CREATE INDEX idx_service_info_tbl_update_time ON service_info_tbl (update_time);
28
+
29
+ -- 服务类型索引
30
+ CREATE INDEX idx_service_info_tbl_service_type ON service_info_tbl (service_type);
31
+
32
+ -- 标志位索引
33
+ CREATE INDEX idx_service_info_tbl_flag ON service_info_tbl (flag);
34
+
35
+ -- 期望状态索引
36
+ CREATE INDEX idx_service_info_tbl_expected_status ON service_info_tbl (expected_status);
37
+
38
+ -- 自动更新时间戳触发器
39
+ CREATE TRIGGER t_upd_service_info_tbl
40
+ BEFORE UPDATE
41
+ ON service_info_tbl
42
+ FOR EACH ROW
43
+ EXECUTE PROCEDURE upd_timestamp();
44
+
45
+ COMMIT;
@@ -0,0 +1,54 @@
1
+ BEGIN;
2
+
3
+ -- 服务实例表:记录所有服务实例的详细信息和状态
4
+ -- Service Instance Table: Records detailed info and status of all service instances
5
+ CREATE TABLE service_instance_tbl
6
+ (
7
+ id BIGSERIAL PRIMARY KEY,
8
+ service_name VARCHAR(100) NOT NULL,
9
+ instance_id VARCHAR(64) NOT NULL,
10
+ container_name VARCHAR(100) DEFAULT '', -- 允许为空,非容器环境可能没有
11
+ compose_service_name VARCHAR(100) DEFAULT '',
12
+ host VARCHAR(100) NOT NULL,
13
+ port INTEGER NOT NULL,
14
+ internal_port INTEGER NOT NULL DEFAULT 8080,
15
+ status VARCHAR(20) NOT NULL DEFAULT 'UP', -- UP, DOWN, STARTING, etc.
16
+ expected_status VARCHAR(20) DEFAULT 'UP', -- 期望状态 / Expected status
17
+ health_check_url VARCHAR(255), -- 健康检查 URL (实例级)
18
+ health_status VARCHAR(20) DEFAULT 'unknown', -- healthy, unhealthy, unknown
19
+ last_health_check TIMESTAMP WITH TIME ZONE,
20
+ last_heartbeat TIMESTAMP WITH TIME ZONE, -- 最后心跳时间
21
+ consecutive_failures SMALLINT DEFAULT 0,
22
+ last_health_error TEXT,
23
+ started_at TIMESTAMP WITH TIME ZONE,
24
+ stopped_at TIMESTAMP WITH TIME ZONE,
25
+ restart_count INT DEFAULT 0,
26
+ cpu_limit VARCHAR,
27
+ memory_limit VARCHAR,
28
+ instance_metadata JSONB DEFAULT '{}'::JSONB,
29
+ flag SMALLINT DEFAULT 0,
30
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
31
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
32
+ );
33
+
34
+ -- 唯一索引:实例ID全局唯一
35
+ CREATE UNIQUE INDEX uk_service_instance_tbl_instance_id ON service_instance_tbl (instance_id);
36
+
37
+ -- 复合索引:服务维度的实例查询
38
+ CREATE INDEX idx_service_instance_tbl_service_instance ON service_instance_tbl (service_name, instance_id);
39
+
40
+ -- 状态/健康索引,便于统计聚合
41
+ CREATE INDEX idx_service_instance_tbl_status ON service_instance_tbl (service_name, status);
42
+ CREATE INDEX idx_service_instance_tbl_health_status ON service_instance_tbl (service_name, health_status);
43
+
44
+ -- 心跳索引 (用于清理过期实例)
45
+ CREATE INDEX idx_service_instance_tbl_last_heartbeat ON service_instance_tbl (service_name, last_heartbeat);
46
+
47
+ -- 自动更新时间戳触发器
48
+ CREATE TRIGGER t_upd_service_instance_tbl
49
+ BEFORE UPDATE
50
+ ON service_instance_tbl
51
+ FOR EACH ROW
52
+ EXECUTE PROCEDURE upd_timestamp();
53
+
54
+ COMMIT;
@@ -0,0 +1,47 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE service_operation_tbl
4
+ (
5
+ id BIGSERIAL PRIMARY KEY,
6
+ operation_id VARCHAR NOT NULL,
7
+ operation_type VARCHAR(20) NOT NULL,
8
+ service_name VARCHAR(100) NOT NULL,
9
+ operation_params JSONB DEFAULT '{}',
10
+ status VARCHAR(20) NOT NULL,
11
+ started_at TIMESTAMP WITH TIME ZONE,
12
+ completed_at TIMESTAMP WITH TIME ZONE,
13
+ result JSONB DEFAULT '{}',
14
+ error_message TEXT,
15
+ retry_count SMALLINT DEFAULT 0,
16
+ max_retries SMALLINT DEFAULT 3,
17
+ last_retry_at TIMESTAMP WITH TIME ZONE,
18
+ initiated_by VARCHAR(100),
19
+ initiated_from VARCHAR(100),
20
+ flag SMALLINT DEFAULT 0,
21
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
22
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
23
+ );
24
+
25
+ -- 唯一索引
26
+ CREATE UNIQUE INDEX uk_service_operation_tbl_operation_id ON service_operation_tbl (operation_id);
27
+
28
+ -- 提升按更新时间查询效率
29
+ CREATE INDEX idx_service_operation_tbl_update_time ON service_operation_tbl (update_time);
30
+
31
+ -- 服务操作查询索引 (用于查询特定服务的操作历史)
32
+ CREATE INDEX idx_service_operation_tbl_service_operation ON service_operation_tbl (service_name, operation_type, status);
33
+
34
+ -- 状态和时间索引 (用于查询待处理/超时的操作)
35
+ CREATE INDEX idx_service_operation_tbl_status_created ON service_operation_tbl (status, created_time);
36
+
37
+ -- 时间范围查询索引 (用于清理历史数据)
38
+ CREATE INDEX idx_service_operation_tbl_created_time ON service_operation_tbl (created_time DESC);
39
+
40
+ -- 自动更新时间戳触发器
41
+ CREATE TRIGGER t_upd_service_operation_tbl
42
+ BEFORE UPDATE
43
+ ON service_operation_tbl
44
+ FOR EACH ROW
45
+ EXECUTE PROCEDURE upd_timestamp();
46
+
47
+ COMMIT;
@@ -0,0 +1,60 @@
1
+ -- 工作流定义表
2
+ -- Stores the definition of a workflow, including its graph structure and node configurations.
3
+
4
+ BEGIN;
5
+
6
+ CREATE TABLE IF NOT EXISTS workflow_definition_tbl (
7
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
8
+ name VARCHAR(255) NOT NULL,
9
+ description TEXT,
10
+
11
+ -- Cron expression for scheduled runs
12
+ schedule VARCHAR(100),
13
+
14
+ -- UI data from the frontend (node coordinates, connections, etc.)
15
+ graph_data JSONB DEFAULT '{}',
16
+
17
+ global_context JSONB DEFAULT '{}',
18
+
19
+ -- Core logic configuration (flattened map of nodes, keyed by node ID)
20
+ nodes_config JSONB NOT NULL DEFAULT '{}',
21
+
22
+ -- Whether the workflow is active (for scanner pickup)
23
+ is_active BOOLEAN DEFAULT FALSE,
24
+
25
+ -- Definition level versioning metadata
26
+ version INTEGER NOT NULL DEFAULT 1,
27
+ change_summary VARCHAR(255),
28
+
29
+ -- Standard fields
30
+ flag SMALLINT DEFAULT 0,
31
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
32
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
33
+ );
34
+
35
+ -- Indexes
36
+ CREATE INDEX IF NOT EXISTS idx_workflow_def_active ON workflow_definition_tbl(is_active);
37
+ CREATE INDEX IF NOT EXISTS idx_workflow_def_schedule ON workflow_definition_tbl(schedule);
38
+
39
+ -- 提升按更新时间查询效率
40
+ CREATE INDEX idx_workflow_definition_tbl_update_time ON workflow_definition_tbl (update_time);
41
+
42
+ -- Auto-update timestamp trigger
43
+ CREATE TRIGGER t_upd_workflow_definition_tbl
44
+ BEFORE UPDATE ON workflow_definition_tbl
45
+ FOR EACH ROW
46
+ EXECUTE PROCEDURE upd_timestamp();
47
+
48
+ -- Comments
49
+ COMMENT ON TABLE workflow_definition_tbl IS '工作流定义表,存储工作流的静态结构和配置';
50
+ COMMENT ON COLUMN workflow_definition_tbl.schedule IS '用于定时触发的 Cron 表达式';
51
+ COMMENT ON COLUMN workflow_definition_tbl.graph_data IS '前端 UI 数据 (节点坐标, 连线等)';
52
+ COMMENT ON COLUMN workflow_definition_tbl.nodes_config IS '核心逻辑配置 (扁平化的节点 Map, key为节点ID)。支持的节点类型: START, ACTION, TRANSFORM, LOGIC, FORK (并行分支), JOIN, LOOP, END';
53
+ COMMENT ON COLUMN workflow_definition_tbl.is_active IS '是否启用 (决定调度器是否扫描)';
54
+ COMMENT ON COLUMN workflow_definition_tbl.version IS '工作流定义版本号,配置变更时自增';
55
+ COMMENT ON COLUMN workflow_definition_tbl.change_summary IS '版本变更说明';
56
+ COMMENT ON COLUMN workflow_definition_tbl.flag IS '标志位 (0:正常, 1:已删除)';
57
+ COMMENT ON COLUMN workflow_definition_tbl.created_time IS '记录创建时间';
58
+ COMMENT ON COLUMN workflow_definition_tbl.update_time IS '记录最后更新时间';
59
+
60
+ COMMIT;
@@ -0,0 +1,35 @@
1
+ BEGIN;
2
+
3
+ -- 工作流定义版本快照表 / Workflow definition history table
4
+ CREATE TABLE IF NOT EXISTS workflow_definition_version_tbl (
5
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
6
+ workflow_id UUID NOT NULL REFERENCES workflow_definition_tbl(id),
7
+ version INTEGER NOT NULL,
8
+ name VARCHAR(255) NOT NULL,
9
+ description TEXT,
10
+ schedule VARCHAR(100),
11
+ graph_data JSONB DEFAULT '{}',
12
+ nodes_config JSONB NOT NULL DEFAULT '{}',
13
+ global_context JSONB DEFAULT '{}',
14
+ is_active BOOLEAN DEFAULT FALSE,
15
+ change_summary VARCHAR(255),
16
+
17
+ -- Standard fields
18
+ flag SMALLINT DEFAULT 0,
19
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
20
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
21
+ );
22
+
23
+ CREATE UNIQUE INDEX IF NOT EXISTS uk_workflow_definition_version_tbl ON workflow_definition_version_tbl(workflow_id, version);
24
+
25
+ -- Auto-update timestamp trigger
26
+ CREATE TRIGGER t_upd_workflow_definition_version_tbl
27
+ BEFORE UPDATE ON workflow_definition_version_tbl
28
+ FOR EACH ROW
29
+ EXECUTE PROCEDURE upd_timestamp();
30
+
31
+ COMMENT ON TABLE workflow_definition_version_tbl IS '工作流版本快照表,记录每次发布或回滚后的定义快照';
32
+ COMMENT ON COLUMN workflow_definition_version_tbl.version IS '对应 workflow_definition_tbl 的版本号';
33
+ COMMENT ON COLUMN workflow_definition_version_tbl.change_summary IS '版本变更说明(回滚/发布原因)';
34
+
35
+ COMMIT;
@@ -0,0 +1,34 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE workflow_engine_alert_tbl
4
+ (
5
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
6
+ run_id UUID REFERENCES workflow_run_tbl (id),
7
+ node_id VARCHAR(64) NOT NULL,
8
+ loop_index INTEGER NOT NULL DEFAULT 1,
9
+ severity VARCHAR(16) NOT NULL,
10
+ category VARCHAR(32) NOT NULL,
11
+ reason VARCHAR(255) NOT NULL,
12
+ detail JSONB,
13
+ status VARCHAR(16) NOT NULL DEFAULT 'OPEN',
14
+ acknowledged_by VARCHAR(64),
15
+ acknowledged_at TIMESTAMP WITH TIME ZONE,
16
+ resolved_by VARCHAR(64),
17
+ resolved_at TIMESTAMP WITH TIME ZONE,
18
+ note TEXT,
19
+ flag SMALLINT DEFAULT 0,
20
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
21
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
22
+ );
23
+
24
+ CREATE INDEX idx_workflow_engine_alert_tbl_status ON workflow_engine_alert_tbl (status);
25
+ CREATE INDEX idx_workflow_engine_alert_tbl_run ON workflow_engine_alert_tbl (run_id);
26
+ CREATE INDEX idx_workflow_engine_alert_tbl_created ON workflow_engine_alert_tbl (created_time DESC);
27
+
28
+ CREATE TRIGGER t_upd_workflow_engine_alert_tbl
29
+ BEFORE UPDATE
30
+ ON workflow_engine_alert_tbl
31
+ FOR EACH ROW
32
+ EXECUTE PROCEDURE upd_timestamp();
33
+
34
+ COMMIT;
@@ -0,0 +1,52 @@
1
+ -- 工作流运行实例表
2
+ -- Stores each execution instance of a workflow.
3
+
4
+ BEGIN;
5
+
6
+ CREATE TABLE IF NOT EXISTS workflow_run_tbl (
7
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
8
+ workflow_id UUID NOT NULL REFERENCES workflow_definition_tbl(id),
9
+
10
+ status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
11
+
12
+ -- Trigger source information
13
+ trigger_type VARCHAR(20) NOT NULL,
14
+ trigger_context JSONB DEFAULT '{}',
15
+
16
+ -- Global context data that flows through the workflow
17
+ global_context JSONB DEFAULT '{}',
18
+
19
+ -- Definition snapshot metadata to guarantee immutable runs
20
+ definition_version INTEGER,
21
+ definition_snapshot JSONB,
22
+
23
+ started_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
24
+ finished_at TIMESTAMPTZ,
25
+ duration_ms INTEGER,
26
+
27
+ -- Standard fields
28
+ flag SMALLINT DEFAULT 0,
29
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
30
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
31
+ );
32
+
33
+ -- Indexes
34
+ CREATE INDEX IF NOT EXISTS idx_workflow_run_workflow_id ON workflow_run_tbl(workflow_id);
35
+ CREATE INDEX IF NOT EXISTS idx_workflow_run_status ON workflow_run_tbl(status);
36
+
37
+ -- 提升按更新时间查询效率
38
+ CREATE INDEX idx_workflow_run_tbl_update_time ON workflow_run_tbl (update_time);
39
+
40
+ -- Comments
41
+ COMMENT ON TABLE workflow_run_tbl IS '工作流运行实例表';
42
+ COMMENT ON COLUMN workflow_run_tbl.trigger_type IS '触发类型: MANUAL, SCHEDULE, API';
43
+ COMMENT ON COLUMN workflow_run_tbl.trigger_context IS '触发时的元数据';
44
+ COMMENT ON COLUMN workflow_run_tbl.global_context IS '全局上下文数据 (随流程流动)';
45
+ COMMENT ON COLUMN workflow_run_tbl.definition_version IS '触发时绑定的定义版本号 / Definition version captured when triggering';
46
+ COMMENT ON COLUMN workflow_run_tbl.definition_snapshot IS '触发时的完整工作流定义快照 / Serialized workflow definition snapshot captured at trigger time';
47
+ COMMENT ON COLUMN workflow_run_tbl.status IS '运行状态: PENDING, RUNNING, SUCCESS, FAILURE, CANCELLED, PAUSED';
48
+ COMMENT ON COLUMN workflow_run_tbl.flag IS '标志位 (0:正常, 1:已删除)';
49
+ COMMENT ON COLUMN workflow_run_tbl.created_time IS '记录创建时间';
50
+ COMMENT ON COLUMN workflow_run_tbl.update_time IS '记录最后更新时间';
51
+
52
+ COMMIT;
@@ -0,0 +1,34 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE admin_user_tbl
4
+ (
5
+ id BIGSERIAL PRIMARY KEY,
6
+ username VARCHAR(50) NOT NULL,
7
+ password_hash VARCHAR(255) NOT NULL,
8
+ totp_secret_encrypted TEXT,
9
+ totp_bound BOOLEAN DEFAULT false,
10
+ flag SMALLINT DEFAULT 0,
11
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
12
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
13
+ );
14
+
15
+ CREATE UNIQUE INDEX idx_admin_user_tbl_username ON admin_user_tbl (username);
16
+
17
+ -- 提升按更新时间查询效率
18
+ CREATE INDEX idx_admin_user_tbl_update_time ON admin_user_tbl (update_time);
19
+
20
+ -- 自动更新时间戳触发器
21
+ CREATE TRIGGER t_admin_user_tbl
22
+ BEFORE UPDATE
23
+ ON admin_user_tbl
24
+ FOR EACH ROW
25
+ EXECUTE PROCEDURE upd_timestamp();
26
+
27
+ COMMENT ON TABLE admin_user_tbl IS 'OPS Admin 用户表';
28
+ COMMENT ON COLUMN admin_user_tbl.username IS '用户名';
29
+ COMMENT ON COLUMN admin_user_tbl.password_hash IS 'bcrypt 密码哈希';
30
+ COMMENT ON COLUMN admin_user_tbl.totp_secret_encrypted IS 'Fernet 加密后的 TOTP secret';
31
+ COMMENT ON COLUMN admin_user_tbl.totp_bound IS 'TOTP 是否已绑定';
32
+ COMMENT ON COLUMN admin_user_tbl.flag IS '标记位 0=正常';
33
+
34
+ COMMIT;
@@ -0,0 +1,91 @@
1
+ BEGIN;
2
+
3
+ CREATE TABLE caddy_access_log_tbl
4
+ (
5
+ id BIGSERIAL PRIMARY KEY,
6
+
7
+ -- 请求基本信息
8
+ request_id VARCHAR(50) NOT NULL,
9
+ timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+
11
+ -- 客户端信息
12
+ client_ip VARCHAR(50) NOT NULL, -- 客户端 IP
13
+ client_port INTEGER, -- 客户端端口
14
+ user_agent TEXT, -- User-Agent
15
+ referer TEXT, -- Referer
16
+
17
+ -- IP 地理位置信息(使用 IP 库解析)
18
+ country VARCHAR(100), -- 国家
19
+ country_code VARCHAR(10), -- 国家代码(如 CN, US)
20
+ region VARCHAR(100), -- 省份/州
21
+ city VARCHAR(100), -- 城市
22
+ latitude DECIMAL(10, 8), -- 纬度
23
+ longitude DECIMAL(11, 8), -- 经度
24
+ timezone VARCHAR(50), -- 时区
25
+ isp VARCHAR(200), -- ISP 运营商
26
+
27
+ -- 请求信息
28
+ method VARCHAR(10) NOT NULL, -- HTTP 方法(GET/POST 等)
29
+ protocol VARCHAR(20), -- 协议版本(HTTP/1.1, HTTP/2)
30
+ host VARCHAR(255), -- 请求的 Host
31
+ path TEXT NOT NULL, -- 请求路径
32
+ query_string TEXT, -- 查询字符串
33
+
34
+ -- 路由和服务信息
35
+ matched_route VARCHAR(100), -- 匹配的路由名称
36
+ upstream_service VARCHAR(100), -- 转发到的上游服务
37
+ upstream_host VARCHAR(100), -- 上游服务主机
38
+ upstream_port INTEGER, -- 上游服务端口
39
+
40
+ -- 响应信息
41
+ status_code INTEGER NOT NULL, -- HTTP 状态码
42
+ response_size BIGINT, -- 响应大小(字节)
43
+ response_time INTEGER, -- 响应时间(毫秒)
44
+
45
+ -- WAF 信息
46
+ waf_action VARCHAR(50), -- WAF 动作(allow/block/log)
47
+ waf_rule_id VARCHAR(100), -- 触发的 WAF 规则 ID
48
+ waf_score INTEGER, -- WAF 威胁评分
49
+
50
+ -- 限流信息
51
+ rate_limited BOOLEAN DEFAULT false, -- 是否被限流
52
+ rate_limit_rule VARCHAR(100), -- 限流规则名称
53
+
54
+ -- TLS 信息
55
+ tls_version VARCHAR(20), -- TLS 版本
56
+ tls_cipher VARCHAR(100), -- TLS 加密套件
57
+
58
+ -- 元数据
59
+ log_metadata JSONB DEFAULT '{}',
60
+
61
+ -- 标准字段
62
+ flag SMALLINT DEFAULT 0,
63
+ created_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
64
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
65
+ );
66
+
67
+ -- 唯一索引
68
+ CREATE UNIQUE INDEX uk_caddy_access_log_tbl_request_id ON caddy_access_log_tbl (request_id);
69
+
70
+ -- 提升按更新时间查询效率
71
+ CREATE INDEX idx_caddy_access_log_tbl_update_time ON caddy_access_log_tbl (update_time);
72
+
73
+ -- 优化查询性能的索引
74
+ CREATE INDEX idx_caddy_access_log_tbl_timestamp ON caddy_access_log_tbl (timestamp DESC);
75
+ CREATE INDEX idx_caddy_access_log_tbl_client_ip ON caddy_access_log_tbl (client_ip);
76
+ CREATE INDEX idx_caddy_access_log_tbl_status_code ON caddy_access_log_tbl (status_code);
77
+ CREATE INDEX idx_caddy_access_log_tbl_upstream_service ON caddy_access_log_tbl (upstream_service);
78
+ CREATE INDEX idx_caddy_access_log_tbl_country ON caddy_access_log_tbl (country);
79
+
80
+ -- 复合索引(优化常见查询)
81
+ CREATE INDEX idx_caddy_access_log_tbl_service_time ON caddy_access_log_tbl (upstream_service, timestamp DESC);
82
+ CREATE INDEX idx_caddy_access_log_tbl_ip_time ON caddy_access_log_tbl (client_ip, timestamp DESC);
83
+
84
+ -- 自动更新时间戳触发器
85
+ CREATE TRIGGER t_upd_caddy_access_log_tbl
86
+ BEFORE UPDATE
87
+ ON caddy_access_log_tbl
88
+ FOR EACH ROW
89
+ EXECUTE PROCEDURE upd_timestamp();
90
+
91
+ COMMIT;