@omnizap-system/omnizap 2.5.12

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 (425) hide show
  1. package/.clusterfuzzlite/Dockerfile +10 -0
  2. package/.env.example +907 -0
  3. package/.github/codeql/codeql-config.yml +10 -0
  4. package/.github/dependabot.yml +35 -0
  5. package/.github/workflows/ci.yml +73 -0
  6. package/.github/workflows/codeql.yml +106 -0
  7. package/.github/workflows/db-migration-check.yml +98 -0
  8. package/.github/workflows/dependency-review.yml +22 -0
  9. package/.github/workflows/deploy.yml +95 -0
  10. package/.github/workflows/release.yml +106 -0
  11. package/.github/workflows/security-attest-provenance.yml +51 -0
  12. package/.github/workflows/security-gitleaks.yml +34 -0
  13. package/.github/workflows/security-runner-hardening.yml +31 -0
  14. package/.github/workflows/security-scorecard.yml +44 -0
  15. package/.github/workflows/security-zap-baseline.yml +44 -0
  16. package/.github/workflows/security-zap-full-scan.yml +43 -0
  17. package/.github/workflows/security-zizmor.yml +36 -0
  18. package/.github/workflows/wiki-sync.yml +44 -0
  19. package/.gitleaks.toml +15 -0
  20. package/.prettierrc +34 -0
  21. package/CODE_OF_CONDUCT.md +114 -0
  22. package/LICENSE +56 -0
  23. package/README.md +110 -0
  24. package/SECURITY.md +110 -0
  25. package/app/config/index.js +4 -0
  26. package/app/configParts/adminIdentity.js +92 -0
  27. package/app/configParts/baileysConfig.js +1818 -0
  28. package/app/configParts/groupUtils.js +692 -0
  29. package/app/configParts/loggerConfig.js +394 -0
  30. package/app/configParts/messagePersistenceService.js +305 -0
  31. package/app/connection/baileysCompatibility.test.js +40 -0
  32. package/app/connection/baileysDbAuthState.js +344 -0
  33. package/app/connection/socketController.js +2243 -0
  34. package/app/controllers/messageController.js +7 -0
  35. package/app/controllers/messagePipeline/commandMiddleware.js +146 -0
  36. package/app/controllers/messagePipeline/conversationMiddleware.js +183 -0
  37. package/app/controllers/messagePipeline/messagePipelineMiddlewares.test.js +522 -0
  38. package/app/controllers/messagePipeline/postProcessingMiddleware.js +41 -0
  39. package/app/controllers/messagePipeline/preProcessingMiddlewares.js +166 -0
  40. package/app/controllers/messageProcessingPipeline.js +699 -0
  41. package/app/modules/adminModule/AGENT.md +4056 -0
  42. package/app/modules/adminModule/adminAiHelpService.js +56 -0
  43. package/app/modules/adminModule/adminConfigRuntime.js +177 -0
  44. package/app/modules/adminModule/commandConfig.json +7122 -0
  45. package/app/modules/adminModule/groupCommandHandlers.js +1823 -0
  46. package/app/modules/adminModule/groupCommandHandlers.test.js +350 -0
  47. package/app/modules/adminModule/groupEventHandlers.js +399 -0
  48. package/app/modules/aiModule/AGENT.md +547 -0
  49. package/app/modules/aiModule/aiAiHelpService.js +14 -0
  50. package/app/modules/aiModule/aiConfigRuntime.js +135 -0
  51. package/app/modules/aiModule/catCommand.js +967 -0
  52. package/app/modules/aiModule/commandConfig.json +981 -0
  53. package/app/modules/analyticsModule/messageAnalysisEventRepository.js +83 -0
  54. package/app/modules/gameModule/AGENT.md +196 -0
  55. package/app/modules/gameModule/commandConfig.json +366 -0
  56. package/app/modules/gameModule/diceCommand.js +42 -0
  57. package/app/modules/gameModule/gameAiHelpService.js +14 -0
  58. package/app/modules/gameModule/gameConfigRuntime.js +68 -0
  59. package/app/modules/menuModule/AGENT.md +205 -0
  60. package/app/modules/menuModule/commandConfig.json +366 -0
  61. package/app/modules/menuModule/common.js +316 -0
  62. package/app/modules/menuModule/menuAiHelpService.js +14 -0
  63. package/app/modules/menuModule/menuConfigRuntime.js +68 -0
  64. package/app/modules/menuModule/menus.js +66 -0
  65. package/app/modules/playModule/AGENT.md +321 -0
  66. package/app/modules/playModule/commandConfig.json +584 -0
  67. package/app/modules/playModule/playAiHelpService.js +14 -0
  68. package/app/modules/playModule/playCommand.js +1417 -0
  69. package/app/modules/playModule/playConfigRuntime.js +68 -0
  70. package/app/modules/quoteModule/AGENT.md +199 -0
  71. package/app/modules/quoteModule/commandConfig.json +366 -0
  72. package/app/modules/quoteModule/quoteAiHelpService.js +14 -0
  73. package/app/modules/quoteModule/quoteCommand.js +842 -0
  74. package/app/modules/quoteModule/quoteConfigRuntime.js +68 -0
  75. package/app/modules/rpgPokemonModule/AGENT.md +229 -0
  76. package/app/modules/rpgPokemonModule/commandConfig.json +386 -0
  77. package/app/modules/rpgPokemonModule/rpgBattleCanvasRenderer.js +795 -0
  78. package/app/modules/rpgPokemonModule/rpgBattleService.js +2110 -0
  79. package/app/modules/rpgPokemonModule/rpgBattleService.test.js +770 -0
  80. package/app/modules/rpgPokemonModule/rpgEvolutionUtils.js +22 -0
  81. package/app/modules/rpgPokemonModule/rpgPokemonAiHelpService.js +14 -0
  82. package/app/modules/rpgPokemonModule/rpgPokemonCommand.js +174 -0
  83. package/app/modules/rpgPokemonModule/rpgPokemonConfigRuntime.js +68 -0
  84. package/app/modules/rpgPokemonModule/rpgPokemonDomain.js +192 -0
  85. package/app/modules/rpgPokemonModule/rpgPokemonDomain.test.js +93 -0
  86. package/app/modules/rpgPokemonModule/rpgPokemonEvolution.test.js +46 -0
  87. package/app/modules/rpgPokemonModule/rpgPokemonMessages.js +746 -0
  88. package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1847 -0
  89. package/app/modules/rpgPokemonModule/rpgPokemonService.js +6839 -0
  90. package/app/modules/rpgPokemonModule/rpgProfileCanvasRenderer.js +354 -0
  91. package/app/modules/statsModule/AGENT.md +320 -0
  92. package/app/modules/statsModule/commandConfig.json +540 -0
  93. package/app/modules/statsModule/globalRankingCommand.js +64 -0
  94. package/app/modules/statsModule/rankingCommand.js +41 -0
  95. package/app/modules/statsModule/rankingCommon.js +1305 -0
  96. package/app/modules/statsModule/statsAiHelpService.js +14 -0
  97. package/app/modules/statsModule/statsConfigRuntime.js +68 -0
  98. package/app/modules/stickerModule/AGENT.md +692 -0
  99. package/app/modules/stickerModule/addStickerMetadata.js +239 -0
  100. package/app/modules/stickerModule/commandConfig.json +1216 -0
  101. package/app/modules/stickerModule/convertToWebp.js +367 -0
  102. package/app/modules/stickerModule/stickerAiHelpService.js +14 -0
  103. package/app/modules/stickerModule/stickerCommand.js +446 -0
  104. package/app/modules/stickerModule/stickerConfigRuntime.js +68 -0
  105. package/app/modules/stickerModule/stickerConvertCommand.js +159 -0
  106. package/app/modules/stickerModule/stickerTextCommand.js +653 -0
  107. package/app/modules/stickerPackModule/AGENT.md +215 -0
  108. package/app/modules/stickerPackModule/autoPackCollectorRuntime.js +20 -0
  109. package/app/modules/stickerPackModule/autoPackCollectorService.js +357 -0
  110. package/app/modules/stickerPackModule/commandConfig.json +387 -0
  111. package/app/modules/stickerPackModule/domainEventOutboxRepository.js +227 -0
  112. package/app/modules/stickerPackModule/domainEvents.js +52 -0
  113. package/app/modules/stickerPackModule/semanticReclassificationEngine.js +429 -0
  114. package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +75 -0
  115. package/app/modules/stickerPackModule/semanticThemeClusterService.js +544 -0
  116. package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +400 -0
  117. package/app/modules/stickerPackModule/stickerAssetRepository.js +400 -0
  118. package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +175 -0
  119. package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +3702 -0
  120. package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +559 -0
  121. package/app/modules/stickerPackModule/stickerClassificationService.js +557 -0
  122. package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +249 -0
  123. package/app/modules/stickerPackModule/stickerDomainEventBus.js +65 -0
  124. package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +208 -0
  125. package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +99 -0
  126. package/app/modules/stickerPackModule/stickerObjectStorageService.js +285 -0
  127. package/app/modules/stickerPackModule/stickerPackAiHelpService.js +14 -0
  128. package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +1148 -0
  129. package/app/modules/stickerPackModule/stickerPackConfigRuntime.js +68 -0
  130. package/app/modules/stickerPackModule/stickerPackEngagementRepository.js +152 -0
  131. package/app/modules/stickerPackModule/stickerPackErrors.js +30 -0
  132. package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +101 -0
  133. package/app/modules/stickerPackModule/stickerPackItemRepository.js +432 -0
  134. package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +313 -0
  135. package/app/modules/stickerPackModule/stickerPackMessageService.js +268 -0
  136. package/app/modules/stickerPackModule/stickerPackRepository.js +450 -0
  137. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +179 -0
  138. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +271 -0
  139. package/app/modules/stickerPackModule/stickerPackService.js +733 -0
  140. package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +32 -0
  141. package/app/modules/stickerPackModule/stickerPackUtils.js +107 -0
  142. package/app/modules/stickerPackModule/stickerStorageService.js +559 -0
  143. package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +242 -0
  144. package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +242 -0
  145. package/app/modules/systemMetricsModule/AGENT.md +193 -0
  146. package/app/modules/systemMetricsModule/commandConfig.json +344 -0
  147. package/app/modules/systemMetricsModule/pingCommand.js +399 -0
  148. package/app/modules/systemMetricsModule/systemMetricsAiHelpService.js +14 -0
  149. package/app/modules/systemMetricsModule/systemMetricsConfigRuntime.js +68 -0
  150. package/app/modules/tiktokModule/AGENT.md +196 -0
  151. package/app/modules/tiktokModule/commandConfig.json +366 -0
  152. package/app/modules/tiktokModule/tiktokAiHelpService.js +14 -0
  153. package/app/modules/tiktokModule/tiktokCommand.js +716 -0
  154. package/app/modules/tiktokModule/tiktokConfigRuntime.js +68 -0
  155. package/app/modules/userModule/AGENT.md +200 -0
  156. package/app/modules/userModule/commandConfig.json +386 -0
  157. package/app/modules/userModule/userAiHelpService.js +14 -0
  158. package/app/modules/userModule/userCommand.js +1155 -0
  159. package/app/modules/userModule/userConfigRuntime.js +68 -0
  160. package/app/modules/waifuPicsModule/AGENT.md +431 -0
  161. package/app/modules/waifuPicsModule/commandConfig.json +780 -0
  162. package/app/modules/waifuPicsModule/waifuPicsAiHelpService.js +14 -0
  163. package/app/modules/waifuPicsModule/waifuPicsCommand.js +586 -0
  164. package/app/modules/waifuPicsModule/waifuPicsConfigRuntime.js +68 -0
  165. package/app/observability/metrics.js +766 -0
  166. package/app/services/ai/aiHelpResponseCacheRepository.js +280 -0
  167. package/app/services/ai/aiLearningRepository.js +400 -0
  168. package/app/services/ai/commandConfigEnrichmentRepository.js +769 -0
  169. package/app/services/ai/commandConfigEnrichmentService.js +452 -0
  170. package/app/services/ai/commandConfigValidationService.js +443 -0
  171. package/app/services/ai/commandToolBuilderService.js +192 -0
  172. package/app/services/ai/conversationRouterService.js +516 -0
  173. package/app/services/ai/geminiService.js +115 -0
  174. package/app/services/ai/geminiService.test.js +87 -0
  175. package/app/services/ai/globalModuleAiHelpService.js +1412 -0
  176. package/app/services/ai/globalToolCallingService.js +203 -0
  177. package/app/services/ai/messageCommandExecutionService.js +391 -0
  178. package/app/services/ai/moduleAiHelpCoreService.js +1099 -0
  179. package/app/services/ai/moduleAiHelpWrapperFactory.js +65 -0
  180. package/app/services/ai/moduleCommandConfigRuntimeService.js +113 -0
  181. package/app/services/ai/moduleToolExecutorService.js +464 -0
  182. package/app/services/ai/moduleToolRegistryService.js +178 -0
  183. package/app/services/ai/toolCandidateSelectorService.js +781 -0
  184. package/app/services/auth/googleWebLinkService.js +80 -0
  185. package/app/services/auth/whatsappLoginLinkService.js +230 -0
  186. package/app/services/external/pokeApiService.js +398 -0
  187. package/app/services/group/groupMetadataService.js +311 -0
  188. package/app/services/infra/dbWriteQueue.js +874 -0
  189. package/app/services/infra/featureFlagService.js +131 -0
  190. package/app/services/infra/queueUtils.js +55 -0
  191. package/app/services/messaging/captchaService.js +491 -0
  192. package/app/services/messaging/messagePersistenceService.js +1 -0
  193. package/app/services/messaging/newsBroadcastService.js +347 -0
  194. package/app/services/sticker/stickerFocusService.js +347 -0
  195. package/app/services/sticker/stickerFocusService.test.js +43 -0
  196. package/app/store/aiPromptStore.js +38 -0
  197. package/app/store/conversationSessionStore.js +131 -0
  198. package/app/store/groupConfigStore.js +58 -0
  199. package/app/store/premiumUserStore.js +54 -0
  200. package/app/utils/antiLink/antiLinkModule.js +700 -0
  201. package/app/utils/http/getImageBufferModule.js +18 -0
  202. package/app/utils/json/jsonSanitizer.js +113 -0
  203. package/app/utils/json/jsonSanitizer.test.js +40 -0
  204. package/app/utils/systemMetrics/systemMetricsModule.js +88 -0
  205. package/app/workers/aiLearningWorker.js +605 -0
  206. package/app/workers/commandConfigEnrichmentWorker.js +242 -0
  207. package/database/index.js +2075 -0
  208. package/database/init.js +151 -0
  209. package/database/migrations/.gitkeep +0 -0
  210. package/database/migrations/20260307_d0_hardening_down.sql +64 -0
  211. package/database/migrations/20260307_d0_hardening_up.sql +79 -0
  212. package/database/migrations/20260307_d1_terms_acceptance_down.sql +11 -0
  213. package/database/migrations/20260307_d1_terms_acceptance_up.sql +37 -0
  214. package/database/migrations/20260307_d2_auth_hardening_down.sql +75 -0
  215. package/database/migrations/20260307_d2_auth_hardening_up.sql +100 -0
  216. package/database/migrations/20260314_d7_canonical_sender_down.sql +53 -0
  217. package/database/migrations/20260314_d7_canonical_sender_up.sql +114 -0
  218. package/database/migrations/20260406_d30_security_analytics_down.sql +95 -0
  219. package/database/migrations/20260406_d30_security_analytics_up.sql +292 -0
  220. package/database/migrations/20260407_d31_web_google_session_token_hardening_down.sql +2 -0
  221. package/database/migrations/20260407_d31_web_google_session_token_hardening_up.sql +17 -0
  222. package/database/migrations/20260408_d32_ai_help_response_cache_down.sql +1 -0
  223. package/database/migrations/20260408_d32_ai_help_response_cache_up.sql +22 -0
  224. package/database/migrations/20260409_d33_ai_learning_tables_down.sql +4 -0
  225. package/database/migrations/20260409_d33_ai_learning_tables_up.sql +52 -0
  226. package/database/migrations/20260410_d34_command_config_enrichment_down.sql +3 -0
  227. package/database/migrations/20260410_d34_command_config_enrichment_up.sql +48 -0
  228. package/database/schema.sql +1186 -0
  229. package/docker-compose.yml +104 -0
  230. package/docs/audits/stickerCatalogController-out-of-scope.md +103 -0
  231. package/docs/audits/stickerCatalogController-symbols.md +58 -0
  232. package/docs/compliance/acceptable-use-policy-2026-03-07.md +35 -0
  233. package/docs/compliance/dpa-b2b-standard-2026-03-07.md +80 -0
  234. package/docs/compliance/monthly-compliance-checklist-2026-03-07.md +88 -0
  235. package/docs/compliance/notice-and-takedown-policy-2026-03-07.md +34 -0
  236. package/docs/compliance/privacy-policy-2026-03-07.md +75 -0
  237. package/docs/compliance/subprocessors-inventory-2026-03-07.md +16 -0
  238. package/docs/database/production-db-evolution-runbook-2026q1.md +365 -0
  239. package/docs/security/dsar-lgpd-runbook-2026-03-07.md +86 -0
  240. package/docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md +77 -0
  241. package/docs/security/network-hardening-runbook-2026-03-07.md +137 -0
  242. package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +238 -0
  243. package/docs/seo/satellite-page-template.md +116 -0
  244. package/docs/seo/satellite-pages-phase1.json +364 -0
  245. package/docs/wiki/Home.md +120 -0
  246. package/docs/wiki/pair-extraordinaire-2026-03-08.md +3 -0
  247. package/docs/wiki/recent-changes-2026-03-08.md +47 -0
  248. package/ecosystem.prod.config.cjs +135 -0
  249. package/eslint.config.js +89 -0
  250. package/index.js +488 -0
  251. package/ml/clip_classifier/Dockerfile +18 -0
  252. package/ml/clip_classifier/README.md +118 -0
  253. package/ml/clip_classifier/adaptive_scoring.py +40 -0
  254. package/ml/clip_classifier/classifier.py +654 -0
  255. package/ml/clip_classifier/embedding_store.py +481 -0
  256. package/ml/clip_classifier/env_loader.py +15 -0
  257. package/ml/clip_classifier/llm_label_expander.py +144 -0
  258. package/ml/clip_classifier/main.py +213 -0
  259. package/ml/clip_classifier/requirements.txt +10 -0
  260. package/ml/clip_classifier/similarity_engine.py +74 -0
  261. package/new-logo.png +0 -0
  262. package/observability/alert-rules.yml +60 -0
  263. package/observability/grafana/dashboards/omnizap-mysql.json +136 -0
  264. package/observability/grafana/dashboards/omnizap-overview.json +170 -0
  265. package/observability/grafana/provisioning/dashboards/dashboards.yml +11 -0
  266. package/observability/grafana/provisioning/datasources/datasources.yml +15 -0
  267. package/observability/loki-config.yml +38 -0
  268. package/observability/mysql-setup.sql +46 -0
  269. package/observability/prometheus.yml +35 -0
  270. package/observability/promtail-config.yml +84 -0
  271. package/observability/sticker-catalog-slo.md +83 -0
  272. package/observability/sticker-scale-hardening-rollout.md +128 -0
  273. package/package.json +144 -0
  274. package/public/apple-touch-icon.png +0 -0
  275. package/public/assets/css/commands-react.input.css +71 -0
  276. package/public/assets/css/create-pack-react.input.css +31 -0
  277. package/public/assets/css/home-react.input.css +106 -0
  278. package/public/assets/css/login-react.input.css +58 -0
  279. package/public/assets/css/stickers-react.input.css +18 -0
  280. package/public/assets/css/terms-react.input.css +115 -0
  281. package/public/assets/css/user-react.input.css +57 -0
  282. package/public/assets/images/brand-icon-192.png +0 -0
  283. package/public/assets/images/brand-logo-128.webp +0 -0
  284. package/public/assets/images/hero-banner-1280.jpg +0 -0
  285. package/public/comandos/commands-catalog.json +4517 -0
  286. package/public/css/api-docs.css +161 -0
  287. package/public/css/stickers-admin.css +1288 -0
  288. package/public/css/styles.css +679 -0
  289. package/public/css/systemadm/admin.css +474 -0
  290. package/public/css/systemadm/base.css +73 -0
  291. package/public/css/systemadm/components.css +662 -0
  292. package/public/css/systemadm/layout.css +229 -0
  293. package/public/css/systemadm/tokens.css +56 -0
  294. package/public/favicon-16x16.png +0 -0
  295. package/public/favicon-32x32.png +0 -0
  296. package/public/favicon.ico +0 -0
  297. package/public/js/apps/apiDocsApp.js +235 -0
  298. package/public/js/apps/commandsReactApp.js +528 -0
  299. package/public/js/apps/createPackApp.js +1646 -0
  300. package/public/js/apps/homeReactApp.js +942 -0
  301. package/public/js/apps/loginReactApp.js +496 -0
  302. package/public/js/apps/stickersAdminApp.js +1753 -0
  303. package/public/js/apps/stickersApp.js +3797 -0
  304. package/public/js/apps/termsReactApp.js +528 -0
  305. package/public/js/apps/userApp.js +2540 -0
  306. package/public/js/apps/userProfile/actions.js +66 -0
  307. package/public/js/apps/userReactApp.js +547 -0
  308. package/public/js/catalog.js +950 -0
  309. package/public/pages/api-docs.html +40 -0
  310. package/public/pages/aup.html +158 -0
  311. package/public/pages/comandos.html +41 -0
  312. package/public/pages/dpa.html +227 -0
  313. package/public/pages/home.html +45 -0
  314. package/public/pages/licenca.html +182 -0
  315. package/public/pages/login.html +40 -0
  316. package/public/pages/notice-and-takedown.html +234 -0
  317. package/public/pages/politica-de-privacidade.html +251 -0
  318. package/public/pages/seo-bot-whatsapp-para-grupo.html +350 -0
  319. package/public/pages/seo-bot-whatsapp-sem-programar.html +350 -0
  320. package/public/pages/seo-como-automatizar-avisos-no-whatsapp.html +350 -0
  321. package/public/pages/seo-como-criar-comandos-whatsapp.html +350 -0
  322. package/public/pages/seo-como-evitar-spam-no-whatsapp.html +350 -0
  323. package/public/pages/seo-como-moderar-grupo-whatsapp.html +350 -0
  324. package/public/pages/seo-como-organizar-comunidade-whatsapp.html +350 -0
  325. package/public/pages/seo-melhor-bot-whatsapp-para-grupos.html +350 -0
  326. package/public/pages/stickers-admin.html +31 -0
  327. package/public/pages/stickers-create.html +41 -0
  328. package/public/pages/stickers.html +45 -0
  329. package/public/pages/suboperadores.html +237 -0
  330. package/public/pages/termos-de-uso-texto-integral.html +241 -0
  331. package/public/pages/termos-de-uso.html +41 -0
  332. package/public/pages/user-password-reset.html +32 -0
  333. package/public/pages/user-systemadm.html +508 -0
  334. package/public/pages/user.html +39 -0
  335. package/public/robots.txt +9 -0
  336. package/public/site.webmanifest +24 -0
  337. package/public/sitemap.xml +98 -0
  338. package/schemas/command-config.schema.json +582 -0
  339. package/scripts/baileys-compat-smoke.mjs +12 -0
  340. package/scripts/cache-bust.mjs +142 -0
  341. package/scripts/deploy.sh +916 -0
  342. package/scripts/email-broadcast-terms-update.mjs +170 -0
  343. package/scripts/enrich-command-discovery-fields.mjs +286 -0
  344. package/scripts/generate-command-config-schema.mjs +273 -0
  345. package/scripts/generate-commands-catalog.mjs +308 -0
  346. package/scripts/generate-module-agents.mjs +631 -0
  347. package/scripts/generate-seo-satellite-pages.mjs +400 -0
  348. package/scripts/github-deploy-notify.mjs +174 -0
  349. package/scripts/github-release-notify.mjs +219 -0
  350. package/scripts/release.sh +599 -0
  351. package/scripts/run-codeql-local.sh +116 -0
  352. package/scripts/run-prettier-all.mjs +25 -0
  353. package/scripts/security-smoketest.mjs +581 -0
  354. package/scripts/sticker-catalog-loadtest.mjs +210 -0
  355. package/scripts/sticker-worker-task.mjs +119 -0
  356. package/scripts/sync-readme-snapshot.mjs +133 -0
  357. package/scripts/validate-command-config-schema.mjs +130 -0
  358. package/scripts/validate-command-configs.mjs +15 -0
  359. package/scripts/wiki-sync.sh +191 -0
  360. package/server/auth/googleWebAuth/googleWebAuthRuntime.js +62 -0
  361. package/server/auth/googleWebAuth/googleWebAuthService.js +807 -0
  362. package/server/auth/jwt/webJwtService.js +147 -0
  363. package/server/auth/stickerCatalogAuthContext.js +165 -0
  364. package/server/auth/termsAcceptance/termsAcceptanceHandler.js +189 -0
  365. package/server/auth/userPassword/index.js +14 -0
  366. package/server/auth/userPassword/userPasswordAuthService.js +422 -0
  367. package/server/auth/userPassword/userPasswordCrypto.js +199 -0
  368. package/server/auth/userPassword/userPasswordCrypto.test.js +76 -0
  369. package/server/auth/userPassword/userPasswordRecoveryService.js +728 -0
  370. package/server/auth/validation/authSchemas.js +236 -0
  371. package/server/auth/webAccount/webAccountHandlers.js +1434 -0
  372. package/server/controllers/admin/adminBanService.js +138 -0
  373. package/server/controllers/admin/adminPanelHandlers.js +2083 -0
  374. package/server/controllers/admin/stickerCatalogAdminContext.js +17 -0
  375. package/server/controllers/admin/systemAdminController.js +201 -0
  376. package/server/controllers/email/emailAutomationController.js +239 -0
  377. package/server/controllers/metricsController.js +21 -0
  378. package/server/controllers/seo/stickerCatalogSeoContext.js +514 -0
  379. package/server/controllers/sticker/nonCatalogHandlers.js +303 -0
  380. package/server/controllers/sticker/stickerCatalogController.js +4700 -0
  381. package/server/controllers/system/contactController.js +115 -0
  382. package/server/controllers/system/githubController.js +137 -0
  383. package/server/controllers/system/stickerCatalogSystemContext.js +758 -0
  384. package/server/controllers/system/storageController.js +154 -0
  385. package/server/controllers/system/systemController.js +135 -0
  386. package/server/controllers/system/systemMetricsController.js +156 -0
  387. package/server/controllers/system/visitController.js +90 -0
  388. package/server/controllers/userController.js +145 -0
  389. package/server/email/emailAutomationRuntime.js +225 -0
  390. package/server/email/emailAutomationService.js +125 -0
  391. package/server/email/emailOutboxRepository.js +282 -0
  392. package/server/email/emailTemplateService.js +480 -0
  393. package/server/email/emailTransportService.js +156 -0
  394. package/server/http/clientIp.js +95 -0
  395. package/server/http/httpRequestUtils.js +262 -0
  396. package/server/http/httpRequestUtils.test.js +80 -0
  397. package/server/http/httpServer.js +180 -0
  398. package/server/http/requestContext.js +20 -0
  399. package/server/http/siteRoutingUtils.js +87 -0
  400. package/server/index.js +1 -0
  401. package/server/middleware/cachePolicy.js +26 -0
  402. package/server/middleware/cachePolicyHelpers.js +1 -0
  403. package/server/middleware/endpointRateLimit.js +181 -0
  404. package/server/middleware/rateLimit.js +70 -0
  405. package/server/middleware/requireAdminAuth.js +48 -0
  406. package/server/middleware/securityHeaders.js +97 -0
  407. package/server/routes/admin/systemAdminRouter.js +64 -0
  408. package/server/routes/email/emailAutomationRouter.js +46 -0
  409. package/server/routes/health/healthRouter.js +41 -0
  410. package/server/routes/indexRouter.js +234 -0
  411. package/server/routes/metrics/metricsRouter.js +58 -0
  412. package/server/routes/static/staticPageRouter.js +134 -0
  413. package/server/routes/sticker/catalogHandlers/catalogAdminHttp.js +105 -0
  414. package/server/routes/sticker/catalogHandlers/catalogAuthHttp.js +77 -0
  415. package/server/routes/sticker/catalogHandlers/catalogPublicHttp.js +120 -0
  416. package/server/routes/sticker/catalogHandlers/catalogUploadHttp.js +83 -0
  417. package/server/routes/sticker/catalogRouter.js +77 -0
  418. package/server/routes/sticker/stickerApiRouter.js +84 -0
  419. package/server/routes/sticker/stickerDataRouter.js +145 -0
  420. package/server/routes/sticker/stickerSiteRouter.js +43 -0
  421. package/server/routes/user/userApiPaths.js +66 -0
  422. package/server/routes/user/userRouter.js +65 -0
  423. package/server/utils/safePath.js +26 -0
  424. package/utils/logger/loggerModule.js +35 -0
  425. package/vite.config.mjs +38 -0
@@ -0,0 +1,104 @@
1
+ services:
2
+ prometheus:
3
+ image: prom/prometheus:${PROMETHEUS_IMAGE_TAG:-v2.52.0}
4
+ restart: unless-stopped
5
+ command:
6
+ - "--config.file=/etc/prometheus/prometheus.yml"
7
+ - "--storage.tsdb.retention.time=${PROMETHEUS_RETENTION_TIME:-15d}"
8
+ - "--storage.tsdb.retention.size=${PROMETHEUS_RETENTION_SIZE:-20GB}"
9
+ volumes:
10
+ - ${PROMETHEUS_CONFIG_PATH:-./observability/prometheus.yml}:/etc/prometheus/prometheus.yml:ro
11
+ - ${PROMETHEUS_ALERT_RULES_PATH:-./observability/alert-rules.yml}:/etc/prometheus/alert-rules.yml:ro
12
+ - ${PROMETHEUS_METRICS_TOKEN_FILE_PATH:-./.secrets/omnizap_metrics_token}:/etc/prometheus/secrets/omnizap_metrics_token:ro
13
+ - prometheus_data:/prometheus
14
+ ports:
15
+ - "${PROMETHEUS_BIND_HOST:-127.0.0.1}:${PROMETHEUS_PORT:-9090}:9090"
16
+ extra_hosts:
17
+ - "host.docker.internal:host-gateway"
18
+
19
+ grafana:
20
+ image: grafana/grafana:${GRAFANA_IMAGE_TAG:-10.4.3}
21
+ restart: unless-stopped
22
+ environment:
23
+ - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
24
+ - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
25
+ - GF_USERS_ALLOW_SIGN_UP=false
26
+ - GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL:-%(protocol)s://%(domain)s:%(http_port)s/}
27
+ # Opcional: se quiser setar timezone do Grafana
28
+ - GF_DATE_FORMATS_DEFAULT_TIMEZONE=${GRAFANA_TIMEZONE:-America/Boa_Vista}
29
+ volumes:
30
+ - grafana_data:/var/lib/grafana
31
+ - ${GRAFANA_PROVISIONING_PATH:-./observability/grafana/provisioning}:/etc/grafana/provisioning:ro
32
+ - ${GRAFANA_DASHBOARDS_PATH:-./observability/grafana/dashboards}:/var/lib/grafana/dashboards:ro
33
+ ports:
34
+ - "${GRAFANA_BIND_HOST:-127.0.0.1}:${GRAFANA_PORT:-3003}:3000"
35
+ depends_on:
36
+ - prometheus
37
+ - loki
38
+
39
+ loki:
40
+ image: grafana/loki:${LOKI_IMAGE_TAG:-2.9.4}
41
+ restart: unless-stopped
42
+ command: -config.file=/etc/loki/loki-config.yml
43
+ volumes:
44
+ - ${LOKI_CONFIG_PATH:-./observability/loki-config.yml}:/etc/loki/loki-config.yml:ro
45
+ - loki_data:/loki
46
+ ports:
47
+ - "${LOKI_BIND_HOST:-127.0.0.1}:${LOKI_PORT:-3100}:3100"
48
+
49
+ promtail:
50
+ image: grafana/promtail:${PROMTAIL_IMAGE_TAG:-2.9.4}
51
+ restart: unless-stopped
52
+ command: -config.file=/etc/promtail/config.yml
53
+ volumes:
54
+ - ${PROMTAIL_CONFIG_PATH:-./observability/promtail-config.yml}:/etc/promtail/config.yml:ro
55
+ - ${APP_LOGS_PATH:-./logs}:/var/log/omnizap:ro
56
+ - ${MYSQL_LOGS_PATH:-/var/log/mysql}:/var/log/mysql:ro
57
+ ports:
58
+ - "${PROMTAIL_BIND_HOST:-127.0.0.1}:${PROMTAIL_PORT:-9080}:9080"
59
+ depends_on:
60
+ - loki
61
+ extra_hosts:
62
+ - "host.docker.internal:host-gateway"
63
+
64
+ mysql-exporter:
65
+ image: prom/mysqld-exporter:${MYSQL_EXPORTER_IMAGE_TAG:-v0.15.1}
66
+ restart: unless-stopped
67
+ environment:
68
+ - DATA_SOURCE_NAME=${MYSQL_EXPORTER_DSN:-exporter:exporter@(host.docker.internal:3306)/}
69
+ command:
70
+ - "--config.my-cnf=/etc/mysql-exporter/my.cnf"
71
+ - "--collect.global_status"
72
+ - "--collect.global_variables"
73
+ - "--no-collect.slave_status"
74
+ - "--collect.info_schema.innodb_metrics"
75
+ - "--collect.info_schema.processlist"
76
+ - "--collect.info_schema.tables"
77
+ - "--collect.perf_schema.eventsstatements"
78
+ - "--collect.perf_schema.tableiowaits"
79
+ - "--collect.perf_schema.tablelocks"
80
+ volumes:
81
+ - ${MYSQL_EXPORTER_CNF_PATH:-./observability/mysql-exporter.cnf}:/etc/mysql-exporter/my.cnf:ro
82
+ ports:
83
+ - "${MYSQL_EXPORTER_BIND_HOST:-127.0.0.1}:${MYSQL_EXPORTER_PORT:-9104}:9104"
84
+ extra_hosts:
85
+ - "host.docker.internal:host-gateway"
86
+
87
+ node-exporter:
88
+ image: prom/node-exporter:${NODE_EXPORTER_IMAGE_TAG:-v1.7.0}
89
+ restart: unless-stopped
90
+ pid: "host"
91
+ command:
92
+ - "--path.rootfs=/host"
93
+ volumes:
94
+ - /:/host:ro,rslave
95
+ ports:
96
+ - "${NODE_EXPORTER_BIND_HOST:-127.0.0.1}:${NODE_EXPORTER_PORT:-9100}:9100"
97
+
98
+ volumes:
99
+ grafana_data:
100
+ name: "${STACK_NAME:-omnizap}_grafana_data"
101
+ prometheus_data:
102
+ name: "${STACK_NAME:-omnizap}_prometheus_data"
103
+ loki_data:
104
+ name: "${STACK_NAME:-omnizap}_loki_data"
@@ -0,0 +1,103 @@
1
+ # StickerCatalogController - Itens Fora de Escopo (Snapshot 2026-03-08)
2
+
3
+ Arquivo de origem: `server/controllers/sticker/stickerCatalogController.js`
4
+
5
+ ## Objetivo
6
+
7
+ Registrar o que ainda esta dentro do controller e deveria, idealmente, viver em modulos/contextos dedicados.
8
+
9
+ ## Delta desde o snapshot anterior
10
+
11
+ No snapshot anterior (2026-03-07) foram sinalizados **119 itens** fora de escopo.
12
+ No estado atual, houve extracao real de responsabilidades para modulos dedicados, principalmente em:
13
+
14
+ - Auth: `server/auth/stickerCatalogAuthContext.js`
15
+ - Admin: `server/controllers/admin/stickerCatalogAdminContext.js`
16
+ - SEO: `server/controllers/seo/stickerCatalogSeoContext.js`
17
+ - System: `server/controllers/system/stickerCatalogSystemContext.js`
18
+ - HTTP util: `server/http/httpRequestUtils.js`
19
+ - Site routing: `server/http/siteRoutingUtils.js`
20
+ - Nao-catalogo: `server/controllers/sticker/nonCatalogHandlers.js`
21
+
22
+ ## Itens remanescentes (priorizados)
23
+
24
+ Lista focada nos pontos de maior acoplamento atual (nao e inventario exaustivo linha-a-linha).
25
+
26
+ ### 1) Config/env de auth e usuario ainda no controller
27
+
28
+ - `USER_API_BASE_PATH` (linha 107)
29
+ - `STICKER_LOGIN_WEB_PATH` (linha 110)
30
+ - `USER_PROFILE_WEB_PATH` (linha 111)
31
+ - `USER_PASSWORD_RESET_WEB_PATH` (linha 112)
32
+ - `PASSWORD_RECOVERY_SESSION_AUTH_METHOD` (linha 113)
33
+ - `PASSWORD_RECOVERY_SESSION_TTL_SECONDS` (linha 114)
34
+
35
+ Risco: politica de rota e auth espalhada entre controller/context.
36
+
37
+ ### 2) Observabilidade e sumarios globais
38
+
39
+ - `METRICS_ENDPOINT` (linha 149)
40
+ - `METRICS_SUMMARY_TIMEOUT_MS` (linha 150)
41
+ - `GITHUB_REPOSITORY` (linha 151)
42
+ - `GITHUB_TOKEN` (linha 152)
43
+ - `GITHUB_PROJECT_CACHE_SECONDS` (linha 153)
44
+ - `GLOBAL_RANK_REFRESH_SECONDS` (linha 162)
45
+ - `MARKETPLACE_GLOBAL_STATS_API_PATH` (linha 166)
46
+ - `MARKETPLACE_GLOBAL_STATS_CACHE_SECONDS` (linha 167)
47
+ - `HOME_MARKETPLACE_STATS_CACHE_SECONDS` (linha 168)
48
+ - `SYSTEM_SUMMARY_CACHE_SECONDS` (linha 169)
49
+ - `README_SUMMARY_CACHE_SECONDS` (linha 170)
50
+ - `README_MESSAGE_TYPE_SAMPLE_LIMIT` (linha 171)
51
+ - `README_COMMAND_PREFIX` (linha 172)
52
+
53
+ Risco: afinacao operacional continua acoplada ao controller.
54
+
55
+ ### 3) SEO/sitemap e discovery ainda declarados localmente
56
+
57
+ - `SITEMAP_MAX_PACKS` (linha 174)
58
+ - `SITEMAP_CACHE_SECONDS` (linha 175)
59
+ - `SEO_DISCOVERY_LINK_LIMIT` (linha 176)
60
+ - `SEO_DISCOVERY_CACHE_SECONDS` (linha 177)
61
+
62
+ Risco: limiares de SEO espalhados entre controller e contexto SEO.
63
+
64
+ ### 4) Sessao web/cookies no mesmo arquivo do catalogo
65
+
66
+ - `WEB_VISITOR_COOKIE_NAME` (linha 185)
67
+ - `WEB_SESSION_COOKIE_NAME` (linha 186)
68
+ - `WEB_VISITOR_COOKIE_TTL_SECONDS` (linha 194)
69
+ - `WEB_SESSION_COOKIE_TTL_SECONDS` (linha 195)
70
+
71
+ Risco: fronteira entre catalogo publico e sessao web ainda nao esta totalmente separada.
72
+
73
+ ### 5) Cache bucket local no controller
74
+
75
+ - `GITHUB_PROJECT_CACHE` (linha 218)
76
+ - `GLOBAL_RANK_CACHE` (linha 222)
77
+ - `MARKETPLACE_GLOBAL_STATS_CACHE` (linha 227)
78
+ - `CATALOG_LIST_CACHE` (linha 233)
79
+ - `CATALOG_CREATOR_RANKING_CACHE` (linha 234)
80
+ - `CATALOG_PACK_PAYLOAD_CACHE` (linha 235)
81
+ - `SYSTEM_SUMMARY_CACHE` (linha 237)
82
+ - `README_SUMMARY_CACHE` (linha 242)
83
+
84
+ Risco: estrategias de cache nao padronizadas em servico unico.
85
+
86
+ ### 6) Responsabilidades HTTP de arquivos/public assets
87
+
88
+ - `handlePublicDataAssetRequest` (linha 4825)
89
+ - `handleAssetRequest` (linha 4961)
90
+
91
+ Risco: o controller continua com detalhes de IO/streaming de arquivo.
92
+
93
+ ### 7) Despacho final de rotas muito concentrado
94
+
95
+ - `maybeHandleStickerCatalogRequest` (linhas 5371-5491)
96
+
97
+ Risco: gateway unico com muitas regras condicionais reduz testabilidade.
98
+
99
+ ## Proxima rodada recomendada
100
+
101
+ 1. Extrair bloco de env/config para `stickerCatalogConfigRuntime` dedicado.
102
+ 2. Mover handlers de assets (`/data` e `/asset`) para modulo de rota/serving separado.
103
+ 3. Reduzir `maybeHandleStickerCatalogRequest` para um router declarativo com mapa de rotas.
@@ -0,0 +1,58 @@
1
+ # Sticker Catalog Controller - Inventario Atual de Simbolos
2
+
3
+ Snapshot: `2026-03-08`
4
+ Arquivo auditado: `server/controllers/sticker/stickerCatalogController.js`
5
+
6
+ ## Resumo do snapshot
7
+
8
+ - Total de linhas: **5491** (`wc -l`)
9
+ - Imports no topo do arquivo: **40**
10
+ - API exportada publicamente: **7 simbolos**
11
+ - Handlers internos (`handle*`): **28**
12
+ - Constantes com leitura de `process.env`: **64**
13
+
14
+ ## API exportada (contrato publico)
15
+
16
+ - `normalizeBasePath` (linha 51)
17
+ - `normalizeCatalogVisibility` (linha 58)
18
+ - `stripWebpExtension` (linha 78)
19
+ - `extractPackKeyFromWebPath` (linha 2101)
20
+ - `isStickerCatalogEnabled` (linha 5349)
21
+ - `getStickerCatalogConfig` (linha 5350)
22
+ - `maybeHandleStickerCatalogRequest` (linha 5371)
23
+
24
+ ## Composicao por contexto (estado atual)
25
+
26
+ O controller passou a orquestrar contextos especializados em vez de concentrar tudo no mesmo bloco:
27
+
28
+ - SEO/contexto de pagina: `createStickerCatalogSeoContext` (linha 2117)
29
+ - Auth/contexto de sessao: `createStickerCatalogAuthContext` (linha 2833)
30
+ - System/contexto de metricas e sumarios: `createStickerCatalogSystemContext` (linha 4763)
31
+ - Handlers nao-catalogo (system/readme/support): `createStickerCatalogNonCatalogHandlers` (linha 4799)
32
+ - Handlers administrativos: `createStickerCatalogAdminHandlersContext` (linha 5127)
33
+ - Router declarativo da API: `createCatalogApiRouter` (linha 5166)
34
+
35
+ ## Modulos externos mais relevantes
36
+
37
+ - HTTP utils centralizados: `server/http/httpRequestUtils.js`
38
+ - Site routing/canonical host: `server/http/siteRoutingUtils.js`
39
+ - Auth web catalogo: `server/auth/stickerCatalogAuthContext.js`
40
+ - Admin catalogo: `server/controllers/admin/stickerCatalogAdminContext.js`
41
+ - SEO catalogo: `server/controllers/seo/stickerCatalogSeoContext.js`
42
+ - System summary/metrics: `server/controllers/system/stickerCatalogSystemContext.js`
43
+ - Handlers nao-catalogo: `server/controllers/sticker/nonCatalogHandlers.js`
44
+
45
+ ## Hotspots de acoplamento remanescente
46
+
47
+ Mesmo com extracoes recentes, os blocos abaixo ainda concentram responsabilidade transversal:
48
+
49
+ - Configuracao/env e politicas de rota (aprox. linhas 104-201)
50
+ - Cache local e snapshots de resumo/ranking (aprox. linhas 218-246)
51
+ - Servico de assets publicos (`/data`) e preview de sticker (aprox. linhas 4825-5074)
52
+ - Despacho final de rotas publicas/API em `maybeHandleStickerCatalogRequest` (aprox. linhas 5371-5491)
53
+
54
+ ## Mudanca de baseline em relacao ao snapshot anterior
55
+
56
+ - Snapshot anterior de symbols indicava **7904** linhas; baseline atual caiu para **5491**.
57
+ - Partes de auth/admin/seo/system foram modularizadas e hoje entram por context factories.
58
+ - Inventario detalhado linha-a-linha foi simplificado para manter manutencao pratica do audit.
@@ -0,0 +1,35 @@
1
+ # Política de Uso Aceitável (AUP)
2
+
3
+ Versão: 2026-03-07
4
+
5
+ ## 1) Objetivo
6
+
7
+ Definir usos permitidos e proibidos na plataforma OmniZap para reduzir risco jurídico, regulatório e de segurança.
8
+
9
+ ## 2) Uso permitido
10
+
11
+ - Automação e integrações legítimas, com observância de lei e termos de terceiros.
12
+ - Operação com transparência para usuários e participantes dos grupos/canais.
13
+
14
+ ## 3) Casos proibidos (lista objetiva)
15
+
16
+ - Envio de spam, flood, disparo em massa não solicitado ou manipulação enganosa de origem.
17
+ - Phishing, fraude, malware, engenharia social ou qualquer atividade criminosa.
18
+ - Operação em setores regulados sem licença/autorização válida (ex.: saúde, crédito, apostas, cripto, educação regulada), quando exigido por lei.
19
+ - Coleta, tratamento ou compartilhamento de dados pessoais sem base legal válida.
20
+ - Monitoramento clandestino de comunicações sem ciência dos envolvidos ou sem fundamento legal.
21
+ - Uso para violação de direitos autorais, marca, imagem, privacidade ou segredo comercial.
22
+ - Tentativas de burlar limites técnicos, políticas de plataformas terceiras ou controles de segurança.
23
+ - Varredura agressiva, teste de intrusão sem autorização formal ou degradação deliberada do serviço.
24
+
25
+ ## 4) Medidas de enforcement
26
+
27
+ - Remoção de conteúdo.
28
+ - Suspensão temporária de acesso.
29
+ - Bloqueio de conta e preservação de evidências.
30
+ - Comunicação a autoridades competentes, quando cabível.
31
+
32
+ ## 5) Canal de denúncia
33
+
34
+ - Página formal: `/notice-and-takedown/`.
35
+ - Contato oficial: https://wa.me/559591122954.
@@ -0,0 +1,80 @@
1
+ # DPA Padrao (B2B) - Data Processing Addendum
2
+
3
+ Versao: 2026-03-07
4
+ Partes: Cliente (Controlador) e OmniZap System (Operador, quando atuar sob instrucao do Cliente).
5
+
6
+ ## 1) Objeto
7
+
8
+ Este DPA define as obrigacoes de protecao de dados para tratamentos realizados em nome do Cliente, incluindo controles tecnicos, suboperadores e cooperacao em incidentes/DSAR.
9
+
10
+ ## 2) Instrucoes do controlador
11
+
12
+ - O Operador trata dados apenas conforme instrucoes documentadas do Cliente.
13
+ - O Cliente declara possuir base legal adequada para os tratamentos ordenados.
14
+
15
+ ## 3) Confidencialidade e acesso
16
+
17
+ - Acesso interno por necessidade operacional (need-to-know).
18
+ - Pessoas autorizadas ficam sujeitas a obrigacao de confidencialidade.
19
+
20
+ ## 4) Seguranca da informacao
21
+
22
+ - Medidas minimas estao no Anexo II (organizacionais e tecnicas).
23
+ - O nivel de seguranca deve ser proporcional ao risco.
24
+
25
+ ## 5) Suboperadores
26
+
27
+ - Lista atualizada no Anexo I e em `/suboperadores/`.
28
+ - Mudancas relevantes podem ser comunicadas ao Cliente conforme contrato principal.
29
+
30
+ ## 6) Incidentes de seguranca
31
+
32
+ - Fluxo operacional no Anexo III.
33
+ - Cooperacao com Cliente para avaliacao de impacto e obrigacoes regulatorias.
34
+
35
+ ## 7) Direitos de titulares (DSAR)
36
+
37
+ - Cooperacao conforme SLA do Anexo IV.
38
+ - O Cliente permanece responsavel pela decisao juridica final quando atuar como Controlador.
39
+
40
+ ## 8) Retencao e descarte
41
+
42
+ - Retencao conforme instrucao contratual e exigencias legais.
43
+ - Ao termino da relacao, devolucao/eliminacao conforme viabilidade tecnica e clausulas do contrato principal.
44
+
45
+ ## Anexo I - Suboperadores (resumo tecnico)
46
+
47
+ | Categoria | Finalidade | Exemplo de fornecedor | Dados afetados |
48
+ | ------------------- | ---------------------------------------------- | ------------------------- | ------------------------------------------ |
49
+ | Cloud/Infra | Hospedagem, banco e disponibilidade | Provedor cloud contratado | Dados de conta, logs, conteudo operacional |
50
+ | E-mail transacional | Recuperacao de senha e comunicacao operacional | Provedor SMTP/e-mail | E-mail, metadados de envio |
51
+ | Monitoramento | Logs, metricas, alertas | Stack observabilidade | Logs tecnicos e telemetria |
52
+
53
+ ## Anexo II - Medidas de seguranca
54
+
55
+ - Criptografia em transito (TLS).
56
+ - Segmentacao logica de ambientes.
57
+ - Controle de acesso por papel e minimo privilegio.
58
+ - Registro de eventos criticos (auth, erro, seguranca).
59
+ - Processo de patching e hardening.
60
+ - Backup operacional e testes de restauracao.
61
+
62
+ ## Anexo III - Fluxo de incidente
63
+
64
+ 1. Deteccao e classificacao inicial.
65
+ 2. Contencao tecnica e preservacao de evidencias.
66
+ 3. Comunicacao ao Cliente sem atraso indevido (quando houver impacto relevante).
67
+ 4. Mitigacao, RCA e acoes corretivas.
68
+ 5. Apoio para reporte regulatorio quando aplicavel.
69
+
70
+ ## Anexo IV - SLA de cooperacao (DSAR e incidente)
71
+
72
+ | Evento | SLA alvo |
73
+ | -------------------------------- | -------------------- |
74
+ | Ack de incidente critico | ate 4h uteis |
75
+ | Atualizacao inicial de incidente | ate 24h |
76
+ | Evidencias tecnicas preliminares | ate 48h |
77
+ | Apoio para DSAR simples | ate 5 dias corridos |
78
+ | Apoio para DSAR complexo | ate 10 dias corridos |
79
+
80
+ Observacao: prazos legais do controlador prevalecem quando menores.
@@ -0,0 +1,88 @@
1
+ # Checklist Mensal de Compliance (Jurídico + Produto + Segurança)
2
+
3
+ Data: 2026-03-07
4
+ Periodicidade: mensal (reunião com ata obrigatória)
5
+
6
+ ## 1) Participantes mínimos
7
+
8
+ - Responsável jurídico/privacidade
9
+ - Responsável de produto
10
+ - Responsável de segurança da informação
11
+ - Responsável operacional (quando houver cliente enterprise ativo)
12
+
13
+ ## 2) Checklist de aderência
14
+
15
+ Marcar `OK`, `Pendente` ou `N/A` para cada item.
16
+
17
+ ### 2.1 Conteúdo e categorias reguladas
18
+
19
+ - [ ] Há validação de faixa etária para campanhas e fluxos aplicáveis.
20
+ - [ ] Operações em verticais reguladas possuem licenças/autorização vigentes.
21
+ - [ ] Restrições de país/estado/município foram revisadas e atualizadas.
22
+
23
+ ### 2.2 Branding e uso de marca
24
+
25
+ - [ ] Comunicação comercial não sugere afiliação oficial com Meta/WhatsApp.
26
+ - [ ] Uso de marcas/logotipos de terceiros está aderente às diretrizes oficiais.
27
+ - [ ] Materiais de marketing, landing pages e docs foram revisados no mês.
28
+
29
+ ### 2.3 Contratos com clientes (DPA e alocação de risco)
30
+
31
+ - [ ] Clientes enterprise possuem contrato principal assinado.
32
+ - [ ] DPA assinado para clientes com tratamento de dados em escala.
33
+ - [ ] Há cláusulas de base legal, indenização regressiva e limitação de responsabilidade.
34
+
35
+ ### 2.4 Governança de dados
36
+
37
+ - [ ] Política de minimização está aplicada nos fluxos ativos.
38
+ - [ ] Prazos de retenção e descarte foram executados no ciclo.
39
+ - [ ] Criptografia em trânsito e em repouso (quando aplicável) permanece ativa.
40
+ - [ ] Controles de acesso por privilégio mínimo foram revisados.
41
+ - [ ] Logs de acesso a mensagens foram coletados e auditados por amostragem.
42
+
43
+ ### 2.5 Incidentes e notificação regulatória
44
+
45
+ - [ ] Não houve incidente no período ou, se houve, há relatório formal concluído.
46
+ - [ ] Gatilhos de comunicação ANPD/titulares foram avaliados para cada incidente.
47
+ - [ ] Quando aplicável, prazo regulatório de comunicação (ex.: 3 dias úteis na regra da ANPD) foi observado.
48
+ - [ ] Runbook de incidentes está atualizado e alinhado à operação atual.
49
+
50
+ ### 2.6 Separação patrimonial e seguro
51
+
52
+ - [ ] Operação permanece vinculada à pessoa jurídica (PJ), sem mistura patrimonial.
53
+ - [ ] Apólice cyber e/ou E&O vigente (ou plano formal de contratação com prazo).
54
+ - [ ] Limites e exclusões da apólice foram revisados quanto ao risco do negócio.
55
+
56
+ ### 2.7 Notice-and-takedown com SLA
57
+
58
+ - [ ] Canal de denúncia está funcional e testado.
59
+ - [ ] SLA de triagem (24h) e decisão inicial (72h) foi cumprido no período.
60
+ - [ ] Evidências de remoção/bloqueio cautelar foram registradas.
61
+
62
+ ### 2.8 Comitê e rastreabilidade
63
+
64
+ - [ ] Ata do comitê foi assinada pelos responsáveis.
65
+ - [ ] Itens pendentes possuem responsável, prazo e prioridade.
66
+ - [ ] Termos de uso, políticas e runbooks foram atualizados quando necessário.
67
+ - [ ] Inventário público de suboperadores foi revisado e data de atualização foi renovada.
68
+ - [ ] Registro versionado de aceite jurídico (hash + timestamp + IP + user agent) foi auditado por amostragem.
69
+
70
+ ## 3) Entregáveis da reunião mensal
71
+
72
+ 1. Ata com decisões e pendências.
73
+ 2. Lista de riscos atualizada com plano de mitigação.
74
+ 3. Registro de conformidade contratual (DPA/termos/clientes).
75
+ 4. Plano de ação para o próximo ciclo mensal.
76
+
77
+ ## 4) Referências externas
78
+
79
+ - WhatsApp Business Terms: https://www.whatsapp.com/legal/business-terms/
80
+ - WhatsApp Business Messaging Policy: https://business.whatsapp.com/policy
81
+ - WhatsApp Brand Guidelines: https://about.meta.com/brand/resources/whatsapp/whatsapp-brand/
82
+ - LGPD (Planalto): https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm
83
+ - ANPD: https://www.gov.br/anpd/pt-br
84
+ - ANPD (CIS): https://www.gov.br/anpd/pt-br/canais_atendimento/agente-de-tratamento/comunicado-de-incidente-de-seguranca-cis
85
+ - Política de Privacidade (web): https://omnizap.shop/politica-de-privacidade/
86
+ - AUP (web): https://omnizap.shop/aup/
87
+ - Notice-and-Takedown (web): https://omnizap.shop/notice-and-takedown/
88
+ - Suboperadores (web): https://omnizap.shop/suboperadores/
@@ -0,0 +1,34 @@
1
+ # Política de Notice-and-Takedown
2
+
3
+ Versão: 2026-03-07
4
+
5
+ ## 1) Escopo
6
+
7
+ Canal formal para notificações sobre conteúdo/uso ilícito, violação de direitos autorais, marca, imagem, privacidade ou descumprimento de lei.
8
+
9
+ ## 2) Requisitos mínimos de prova
10
+
11
+ A notificação deve conter:
12
+
13
+ - Identificação do notificante (nome e contato válido).
14
+ - URL, ID ou evidência objetiva do conteúdo alvo.
15
+ - Fundamentação jurídica resumida (qual direito foi violado).
16
+ - Declaração de boa-fé e veracidade.
17
+ - Prova mínima (captura, hash, documento de titularidade ou procuração, quando aplicável).
18
+
19
+ ## 3) SLA público
20
+
21
+ - Confirmação de recebimento: até 24 horas úteis.
22
+ - Triagem inicial: até 48 horas úteis.
23
+ - Decisão cautelar inicial (manter, restringir ou remover): até 72 horas úteis.
24
+
25
+ Casos tecnicamente complexos podem exigir prazo adicional, com registro de justificativa.
26
+
27
+ ## 4) Resultado e contraditório
28
+
29
+ - O resultado é comunicado ao notificante quando houver contato válido.
30
+ - Quando cabível, o usuário afetado pode apresentar contraponto/evidências.
31
+
32
+ ## 5) Preservação de evidências
33
+
34
+ - Logs e metadados técnicos podem ser preservados para auditoria, defesa e cooperação com autoridades.
@@ -0,0 +1,75 @@
1
+ # Política de Privacidade (Documento Separado dos Termos)
2
+
3
+ Data da versão: 2026-03-07
4
+ Escopo: site, login web, painel, API e operação de automação do OmniZap System.
5
+
6
+ ## 0) Escopo desta política (serviço oficial)
7
+
8
+ - Esta política se aplica ao serviço oficial operado pelos canais do OmniZap System (incluindo domínio omnizap.shop e endpoints oficiais).
9
+ - Forks, redistribuições e instâncias auto-hospedadas por terceiros não se vinculam automaticamente a este documento.
10
+ - Em instância derivada/self-host, o operador da instância atua como controlador independente e deve publicar sua própria política de privacidade.
11
+
12
+ ## 1) Controlador e contato
13
+
14
+ - Controlador: 59.034.123 KAIKY BRITO RIBEIRO (CNPJ 59.034.123/0001-96).
15
+ - Contato de privacidade: https://wa.me/559591122954
16
+ - Canal para titulares (LGPD): mensagem com assunto "DSAR LGPD" no contato oficial.
17
+ - Para serviços de terceiros baseados em fork/self-host, o contato de privacidade deve ser solicitado diretamente ao operador da respectiva instância.
18
+
19
+ ## 1.1) Encarregado pelo tratamento (LGPD art. 41)
20
+
21
+ - Encarregado (DPO): Kaiky Brito Ribeiro (59.034.123 KAIKY BRITO RIBEIRO, CNPJ 59.034.123/0001-96).
22
+ - Contato do encarregado: https://wa.me/559591122954 (assunto recomendado: "ENCARREGADO LGPD").
23
+ - Divulgação pública mantida para transparência regulatória.
24
+
25
+ ## 2) Tabela de tratamento de dados
26
+
27
+ | Categoria de dados | Finalidade principal | Base legal (LGPD art. 7) | Prazo de retenção | Compartilhamentos | Transferência internacional |
28
+ | ---------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------------------------- |
29
+ | Identificação de conta (sub Google, e-mail, owner_jid) | Autenticação, segurança de sessão e vínculo de conta | Execução de contrato; legítimo interesse | Enquanto a conta estiver ativa + até 12 meses para trilha técnica | Provedores de cloud, autenticação e e-mail | Pode ocorrer quando fornecedor tiver infraestrutura fora do Brasil |
30
+ | Credenciais e eventos de login (sessão, IP, user agent, aceite jurídico) | Prevenir fraude, auditoria e prova de consentimento | Legítimo interesse; exercício regular de direitos; obrigação legal quando aplicável | Até 24 meses, salvo retenção superior por obrigação legal | Provedores de cloud/segurança/monitoramento | Pode ocorrer via suboperadores globais com salvaguardas contratuais |
31
+ | Conteúdo de mensagens e metadados (quando funcionalidade estiver habilitada) | Execução de automações, moderação, suporte e segurança | Execução de contrato; legítimo interesse; consentimento quando exigido | Conforme finalidade declarada pelo cliente e políticas técnicas vigentes | Infraestrutura de processamento e armazenamento | Pode ocorrer conforme região do provedor contratado |
32
+ | Logs de API, erros e telemetria | Observabilidade, capacidade, resposta a incidentes | Legítimo interesse | 6 a 24 meses, conforme criticidade operacional | Monitoramento e observabilidade | Pode ocorrer (fornecedores globais) |
33
+ | Dados de suporte (tickets, e-mails, evidências) | Atendimento, correções e histórico de suporte | Execução de contrato; exercício regular de direitos | Até 5 anos para defesa administrativa/judicial, quando cabível | Plataforma de e-mail e atendimento | Pode ocorrer conforme local de processamento do provedor |
34
+
35
+ ## 3) Compartilhamento de dados
36
+
37
+ - Compartilhamos somente com suboperadores e parceiros estritamente necessários para operar o serviço.
38
+ - Compartilhamos com autoridades públicas quando houver obrigação legal, ordem judicial ou requisição válida.
39
+ - Não comercializamos dados pessoais como produto.
40
+
41
+ ## 4) Transferências internacionais
42
+
43
+ - Alguns fornecedores podem processar dados fora do Brasil.
44
+ - As transferências internacionais seguem salvaguardas contratuais, controles técnicos e avaliação de risco compatíveis com a LGPD e regulamentação da ANPD.
45
+ - Mecanismos adotados podem incluir cláusulas contratuais e avaliação por finalidade/risco.
46
+ - O inventário de suboperadores publicado em `/suboperadores/` informa categoria e status de localização/região.
47
+
48
+ ## 5) Retenção e descarte
49
+
50
+ - Mantemos dados somente pelo tempo necessário para as finalidades legítimas e exigências legais.
51
+ - Encerrada a finalidade, os dados podem ser anonimizados, bloqueados ou eliminados, ressalvadas obrigações legais e necessidade probatória.
52
+
53
+ ## 6) Direitos do titular (art. 18 LGPD)
54
+
55
+ - Confirmação de tratamento e acesso.
56
+ - Correção de dados incompletos ou desatualizados.
57
+ - Anonimização, bloqueio ou eliminação quando cabível.
58
+ - Portabilidade (quando tecnicamente viável).
59
+ - Oposição e revisão de tratamento nas hipóteses legais.
60
+ - Petição perante ANPD e autoridades competentes, quando cabível.
61
+ - Quando aplicável, declaração clara e completa em até 15 dias (LGPD art. 19), sem prejuízo de resposta simplificada imediata quando possível.
62
+
63
+ Prazos operacionais e fluxo completo: ver `docs/security/dsar-lgpd-runbook-2026-03-07.md`.
64
+
65
+ ## 7) Segurança
66
+
67
+ - Criptografia em trânsito (TLS), controles de acesso por privilégio mínimo, logs e trilhas de auditoria.
68
+ - Monitoramento técnico e resposta a incidentes com critério LGPD/ANPD.
69
+ - Havendo incidente com risco ou dano relevante aos titulares, comunicação à ANPD e aos titulares será avaliada e realizada quando exigida por lei/regulamentação.
70
+ - Quando aplicável ao controlador, observar prazo regulatório vigente para comunicação de incidente (incluindo 3 dias úteis previstos no regulamento atual da ANPD).
71
+
72
+ ## 8) Atualizações desta política
73
+
74
+ - Esta política pode ser atualizada para refletir mudanças legais, regulatórias e operacionais.
75
+ - Versões e aceite eletrônico podem ser registrados para prova jurídica (hash da versão, timestamp, IP e user agent).
@@ -0,0 +1,16 @@
1
+ # Inventario de Suboperadores
2
+
3
+ Atualizado em: 2026-03-07
4
+
5
+ ## Lista publica
6
+
7
+ | Categoria | Suboperador/Fornecedor | Finalidade | Regiao de processamento (resumo) | Status |
8
+ | ----------------------------- | -------------------------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------- | ------ |
9
+ | Cloud e banco | Provedor de infraestrutura cloud contratado pelo projeto | Hospedagem, banco, rede, backups | Pode incluir processamento internacional | Ativo |
10
+ | E-mail transacional | Provedor SMTP/e-mail contratado | Recuperacao de senha e comunicados operacionais | Pode incluir processamento internacional | Ativo |
11
+ | Monitoramento/observabilidade | Stack de monitoramento (Prometheus/Grafana/Loki + integrações) | Logs, metricas, alertas operacionais | Primariamente ambiente do controlador; pode haver integracoes externas | Ativo |
12
+
13
+ ## Observacoes
14
+
15
+ - A lista e atualizada sempre que houver mudanca relevante de fornecedor ou escopo.
16
+ - Transferencias internacionais seguem salvaguardas contratuais e controles tecnicos compativeis com a LGPD.