@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.
- package/.clusterfuzzlite/Dockerfile +10 -0
- package/.env.example +907 -0
- package/.github/codeql/codeql-config.yml +10 -0
- package/.github/dependabot.yml +35 -0
- package/.github/workflows/ci.yml +73 -0
- package/.github/workflows/codeql.yml +106 -0
- package/.github/workflows/db-migration-check.yml +98 -0
- package/.github/workflows/dependency-review.yml +22 -0
- package/.github/workflows/deploy.yml +95 -0
- package/.github/workflows/release.yml +106 -0
- package/.github/workflows/security-attest-provenance.yml +51 -0
- package/.github/workflows/security-gitleaks.yml +34 -0
- package/.github/workflows/security-runner-hardening.yml +31 -0
- package/.github/workflows/security-scorecard.yml +44 -0
- package/.github/workflows/security-zap-baseline.yml +44 -0
- package/.github/workflows/security-zap-full-scan.yml +43 -0
- package/.github/workflows/security-zizmor.yml +36 -0
- package/.github/workflows/wiki-sync.yml +44 -0
- package/.gitleaks.toml +15 -0
- package/.prettierrc +34 -0
- package/CODE_OF_CONDUCT.md +114 -0
- package/LICENSE +56 -0
- package/README.md +110 -0
- package/SECURITY.md +110 -0
- package/app/config/index.js +4 -0
- package/app/configParts/adminIdentity.js +92 -0
- package/app/configParts/baileysConfig.js +1818 -0
- package/app/configParts/groupUtils.js +692 -0
- package/app/configParts/loggerConfig.js +394 -0
- package/app/configParts/messagePersistenceService.js +305 -0
- package/app/connection/baileysCompatibility.test.js +40 -0
- package/app/connection/baileysDbAuthState.js +344 -0
- package/app/connection/socketController.js +2243 -0
- package/app/controllers/messageController.js +7 -0
- package/app/controllers/messagePipeline/commandMiddleware.js +146 -0
- package/app/controllers/messagePipeline/conversationMiddleware.js +183 -0
- package/app/controllers/messagePipeline/messagePipelineMiddlewares.test.js +522 -0
- package/app/controllers/messagePipeline/postProcessingMiddleware.js +41 -0
- package/app/controllers/messagePipeline/preProcessingMiddlewares.js +166 -0
- package/app/controllers/messageProcessingPipeline.js +699 -0
- package/app/modules/adminModule/AGENT.md +4056 -0
- package/app/modules/adminModule/adminAiHelpService.js +56 -0
- package/app/modules/adminModule/adminConfigRuntime.js +177 -0
- package/app/modules/adminModule/commandConfig.json +7122 -0
- package/app/modules/adminModule/groupCommandHandlers.js +1823 -0
- package/app/modules/adminModule/groupCommandHandlers.test.js +350 -0
- package/app/modules/adminModule/groupEventHandlers.js +399 -0
- package/app/modules/aiModule/AGENT.md +547 -0
- package/app/modules/aiModule/aiAiHelpService.js +14 -0
- package/app/modules/aiModule/aiConfigRuntime.js +135 -0
- package/app/modules/aiModule/catCommand.js +967 -0
- package/app/modules/aiModule/commandConfig.json +981 -0
- package/app/modules/analyticsModule/messageAnalysisEventRepository.js +83 -0
- package/app/modules/gameModule/AGENT.md +196 -0
- package/app/modules/gameModule/commandConfig.json +366 -0
- package/app/modules/gameModule/diceCommand.js +42 -0
- package/app/modules/gameModule/gameAiHelpService.js +14 -0
- package/app/modules/gameModule/gameConfigRuntime.js +68 -0
- package/app/modules/menuModule/AGENT.md +205 -0
- package/app/modules/menuModule/commandConfig.json +366 -0
- package/app/modules/menuModule/common.js +316 -0
- package/app/modules/menuModule/menuAiHelpService.js +14 -0
- package/app/modules/menuModule/menuConfigRuntime.js +68 -0
- package/app/modules/menuModule/menus.js +66 -0
- package/app/modules/playModule/AGENT.md +321 -0
- package/app/modules/playModule/commandConfig.json +584 -0
- package/app/modules/playModule/playAiHelpService.js +14 -0
- package/app/modules/playModule/playCommand.js +1417 -0
- package/app/modules/playModule/playConfigRuntime.js +68 -0
- package/app/modules/quoteModule/AGENT.md +199 -0
- package/app/modules/quoteModule/commandConfig.json +366 -0
- package/app/modules/quoteModule/quoteAiHelpService.js +14 -0
- package/app/modules/quoteModule/quoteCommand.js +842 -0
- package/app/modules/quoteModule/quoteConfigRuntime.js +68 -0
- package/app/modules/rpgPokemonModule/AGENT.md +229 -0
- package/app/modules/rpgPokemonModule/commandConfig.json +386 -0
- package/app/modules/rpgPokemonModule/rpgBattleCanvasRenderer.js +795 -0
- package/app/modules/rpgPokemonModule/rpgBattleService.js +2110 -0
- package/app/modules/rpgPokemonModule/rpgBattleService.test.js +770 -0
- package/app/modules/rpgPokemonModule/rpgEvolutionUtils.js +22 -0
- package/app/modules/rpgPokemonModule/rpgPokemonAiHelpService.js +14 -0
- package/app/modules/rpgPokemonModule/rpgPokemonCommand.js +174 -0
- package/app/modules/rpgPokemonModule/rpgPokemonConfigRuntime.js +68 -0
- package/app/modules/rpgPokemonModule/rpgPokemonDomain.js +192 -0
- package/app/modules/rpgPokemonModule/rpgPokemonDomain.test.js +93 -0
- package/app/modules/rpgPokemonModule/rpgPokemonEvolution.test.js +46 -0
- package/app/modules/rpgPokemonModule/rpgPokemonMessages.js +746 -0
- package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1847 -0
- package/app/modules/rpgPokemonModule/rpgPokemonService.js +6839 -0
- package/app/modules/rpgPokemonModule/rpgProfileCanvasRenderer.js +354 -0
- package/app/modules/statsModule/AGENT.md +320 -0
- package/app/modules/statsModule/commandConfig.json +540 -0
- package/app/modules/statsModule/globalRankingCommand.js +64 -0
- package/app/modules/statsModule/rankingCommand.js +41 -0
- package/app/modules/statsModule/rankingCommon.js +1305 -0
- package/app/modules/statsModule/statsAiHelpService.js +14 -0
- package/app/modules/statsModule/statsConfigRuntime.js +68 -0
- package/app/modules/stickerModule/AGENT.md +692 -0
- package/app/modules/stickerModule/addStickerMetadata.js +239 -0
- package/app/modules/stickerModule/commandConfig.json +1216 -0
- package/app/modules/stickerModule/convertToWebp.js +367 -0
- package/app/modules/stickerModule/stickerAiHelpService.js +14 -0
- package/app/modules/stickerModule/stickerCommand.js +446 -0
- package/app/modules/stickerModule/stickerConfigRuntime.js +68 -0
- package/app/modules/stickerModule/stickerConvertCommand.js +159 -0
- package/app/modules/stickerModule/stickerTextCommand.js +653 -0
- package/app/modules/stickerPackModule/AGENT.md +215 -0
- package/app/modules/stickerPackModule/autoPackCollectorRuntime.js +20 -0
- package/app/modules/stickerPackModule/autoPackCollectorService.js +357 -0
- package/app/modules/stickerPackModule/commandConfig.json +387 -0
- package/app/modules/stickerPackModule/domainEventOutboxRepository.js +227 -0
- package/app/modules/stickerPackModule/domainEvents.js +52 -0
- package/app/modules/stickerPackModule/semanticReclassificationEngine.js +429 -0
- package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +75 -0
- package/app/modules/stickerPackModule/semanticThemeClusterService.js +544 -0
- package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +400 -0
- package/app/modules/stickerPackModule/stickerAssetRepository.js +400 -0
- package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +175 -0
- package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +3702 -0
- package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +559 -0
- package/app/modules/stickerPackModule/stickerClassificationService.js +557 -0
- package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +249 -0
- package/app/modules/stickerPackModule/stickerDomainEventBus.js +65 -0
- package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +208 -0
- package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +99 -0
- package/app/modules/stickerPackModule/stickerObjectStorageService.js +285 -0
- package/app/modules/stickerPackModule/stickerPackAiHelpService.js +14 -0
- package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +1148 -0
- package/app/modules/stickerPackModule/stickerPackConfigRuntime.js +68 -0
- package/app/modules/stickerPackModule/stickerPackEngagementRepository.js +152 -0
- package/app/modules/stickerPackModule/stickerPackErrors.js +30 -0
- package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +101 -0
- package/app/modules/stickerPackModule/stickerPackItemRepository.js +432 -0
- package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +313 -0
- package/app/modules/stickerPackModule/stickerPackMessageService.js +268 -0
- package/app/modules/stickerPackModule/stickerPackRepository.js +450 -0
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +179 -0
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +271 -0
- package/app/modules/stickerPackModule/stickerPackService.js +733 -0
- package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +32 -0
- package/app/modules/stickerPackModule/stickerPackUtils.js +107 -0
- package/app/modules/stickerPackModule/stickerStorageService.js +559 -0
- package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +242 -0
- package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +242 -0
- package/app/modules/systemMetricsModule/AGENT.md +193 -0
- package/app/modules/systemMetricsModule/commandConfig.json +344 -0
- package/app/modules/systemMetricsModule/pingCommand.js +399 -0
- package/app/modules/systemMetricsModule/systemMetricsAiHelpService.js +14 -0
- package/app/modules/systemMetricsModule/systemMetricsConfigRuntime.js +68 -0
- package/app/modules/tiktokModule/AGENT.md +196 -0
- package/app/modules/tiktokModule/commandConfig.json +366 -0
- package/app/modules/tiktokModule/tiktokAiHelpService.js +14 -0
- package/app/modules/tiktokModule/tiktokCommand.js +716 -0
- package/app/modules/tiktokModule/tiktokConfigRuntime.js +68 -0
- package/app/modules/userModule/AGENT.md +200 -0
- package/app/modules/userModule/commandConfig.json +386 -0
- package/app/modules/userModule/userAiHelpService.js +14 -0
- package/app/modules/userModule/userCommand.js +1155 -0
- package/app/modules/userModule/userConfigRuntime.js +68 -0
- package/app/modules/waifuPicsModule/AGENT.md +431 -0
- package/app/modules/waifuPicsModule/commandConfig.json +780 -0
- package/app/modules/waifuPicsModule/waifuPicsAiHelpService.js +14 -0
- package/app/modules/waifuPicsModule/waifuPicsCommand.js +586 -0
- package/app/modules/waifuPicsModule/waifuPicsConfigRuntime.js +68 -0
- package/app/observability/metrics.js +766 -0
- package/app/services/ai/aiHelpResponseCacheRepository.js +280 -0
- package/app/services/ai/aiLearningRepository.js +400 -0
- package/app/services/ai/commandConfigEnrichmentRepository.js +769 -0
- package/app/services/ai/commandConfigEnrichmentService.js +452 -0
- package/app/services/ai/commandConfigValidationService.js +443 -0
- package/app/services/ai/commandToolBuilderService.js +192 -0
- package/app/services/ai/conversationRouterService.js +516 -0
- package/app/services/ai/geminiService.js +115 -0
- package/app/services/ai/geminiService.test.js +87 -0
- package/app/services/ai/globalModuleAiHelpService.js +1412 -0
- package/app/services/ai/globalToolCallingService.js +203 -0
- package/app/services/ai/messageCommandExecutionService.js +391 -0
- package/app/services/ai/moduleAiHelpCoreService.js +1099 -0
- package/app/services/ai/moduleAiHelpWrapperFactory.js +65 -0
- package/app/services/ai/moduleCommandConfigRuntimeService.js +113 -0
- package/app/services/ai/moduleToolExecutorService.js +464 -0
- package/app/services/ai/moduleToolRegistryService.js +178 -0
- package/app/services/ai/toolCandidateSelectorService.js +781 -0
- package/app/services/auth/googleWebLinkService.js +80 -0
- package/app/services/auth/whatsappLoginLinkService.js +230 -0
- package/app/services/external/pokeApiService.js +398 -0
- package/app/services/group/groupMetadataService.js +311 -0
- package/app/services/infra/dbWriteQueue.js +874 -0
- package/app/services/infra/featureFlagService.js +131 -0
- package/app/services/infra/queueUtils.js +55 -0
- package/app/services/messaging/captchaService.js +491 -0
- package/app/services/messaging/messagePersistenceService.js +1 -0
- package/app/services/messaging/newsBroadcastService.js +347 -0
- package/app/services/sticker/stickerFocusService.js +347 -0
- package/app/services/sticker/stickerFocusService.test.js +43 -0
- package/app/store/aiPromptStore.js +38 -0
- package/app/store/conversationSessionStore.js +131 -0
- package/app/store/groupConfigStore.js +58 -0
- package/app/store/premiumUserStore.js +54 -0
- package/app/utils/antiLink/antiLinkModule.js +700 -0
- package/app/utils/http/getImageBufferModule.js +18 -0
- package/app/utils/json/jsonSanitizer.js +113 -0
- package/app/utils/json/jsonSanitizer.test.js +40 -0
- package/app/utils/systemMetrics/systemMetricsModule.js +88 -0
- package/app/workers/aiLearningWorker.js +605 -0
- package/app/workers/commandConfigEnrichmentWorker.js +242 -0
- package/database/index.js +2075 -0
- package/database/init.js +151 -0
- package/database/migrations/.gitkeep +0 -0
- package/database/migrations/20260307_d0_hardening_down.sql +64 -0
- package/database/migrations/20260307_d0_hardening_up.sql +79 -0
- package/database/migrations/20260307_d1_terms_acceptance_down.sql +11 -0
- package/database/migrations/20260307_d1_terms_acceptance_up.sql +37 -0
- package/database/migrations/20260307_d2_auth_hardening_down.sql +75 -0
- package/database/migrations/20260307_d2_auth_hardening_up.sql +100 -0
- package/database/migrations/20260314_d7_canonical_sender_down.sql +53 -0
- package/database/migrations/20260314_d7_canonical_sender_up.sql +114 -0
- package/database/migrations/20260406_d30_security_analytics_down.sql +95 -0
- package/database/migrations/20260406_d30_security_analytics_up.sql +292 -0
- package/database/migrations/20260407_d31_web_google_session_token_hardening_down.sql +2 -0
- package/database/migrations/20260407_d31_web_google_session_token_hardening_up.sql +17 -0
- package/database/migrations/20260408_d32_ai_help_response_cache_down.sql +1 -0
- package/database/migrations/20260408_d32_ai_help_response_cache_up.sql +22 -0
- package/database/migrations/20260409_d33_ai_learning_tables_down.sql +4 -0
- package/database/migrations/20260409_d33_ai_learning_tables_up.sql +52 -0
- package/database/migrations/20260410_d34_command_config_enrichment_down.sql +3 -0
- package/database/migrations/20260410_d34_command_config_enrichment_up.sql +48 -0
- package/database/schema.sql +1186 -0
- package/docker-compose.yml +104 -0
- package/docs/audits/stickerCatalogController-out-of-scope.md +103 -0
- package/docs/audits/stickerCatalogController-symbols.md +58 -0
- package/docs/compliance/acceptable-use-policy-2026-03-07.md +35 -0
- package/docs/compliance/dpa-b2b-standard-2026-03-07.md +80 -0
- package/docs/compliance/monthly-compliance-checklist-2026-03-07.md +88 -0
- package/docs/compliance/notice-and-takedown-policy-2026-03-07.md +34 -0
- package/docs/compliance/privacy-policy-2026-03-07.md +75 -0
- package/docs/compliance/subprocessors-inventory-2026-03-07.md +16 -0
- package/docs/database/production-db-evolution-runbook-2026q1.md +365 -0
- package/docs/security/dsar-lgpd-runbook-2026-03-07.md +86 -0
- package/docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md +77 -0
- package/docs/security/network-hardening-runbook-2026-03-07.md +137 -0
- package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +238 -0
- package/docs/seo/satellite-page-template.md +116 -0
- package/docs/seo/satellite-pages-phase1.json +364 -0
- package/docs/wiki/Home.md +120 -0
- package/docs/wiki/pair-extraordinaire-2026-03-08.md +3 -0
- package/docs/wiki/recent-changes-2026-03-08.md +47 -0
- package/ecosystem.prod.config.cjs +135 -0
- package/eslint.config.js +89 -0
- package/index.js +488 -0
- package/ml/clip_classifier/Dockerfile +18 -0
- package/ml/clip_classifier/README.md +118 -0
- package/ml/clip_classifier/adaptive_scoring.py +40 -0
- package/ml/clip_classifier/classifier.py +654 -0
- package/ml/clip_classifier/embedding_store.py +481 -0
- package/ml/clip_classifier/env_loader.py +15 -0
- package/ml/clip_classifier/llm_label_expander.py +144 -0
- package/ml/clip_classifier/main.py +213 -0
- package/ml/clip_classifier/requirements.txt +10 -0
- package/ml/clip_classifier/similarity_engine.py +74 -0
- package/new-logo.png +0 -0
- package/observability/alert-rules.yml +60 -0
- package/observability/grafana/dashboards/omnizap-mysql.json +136 -0
- package/observability/grafana/dashboards/omnizap-overview.json +170 -0
- package/observability/grafana/provisioning/dashboards/dashboards.yml +11 -0
- package/observability/grafana/provisioning/datasources/datasources.yml +15 -0
- package/observability/loki-config.yml +38 -0
- package/observability/mysql-setup.sql +46 -0
- package/observability/prometheus.yml +35 -0
- package/observability/promtail-config.yml +84 -0
- package/observability/sticker-catalog-slo.md +83 -0
- package/observability/sticker-scale-hardening-rollout.md +128 -0
- package/package.json +144 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/css/commands-react.input.css +71 -0
- package/public/assets/css/create-pack-react.input.css +31 -0
- package/public/assets/css/home-react.input.css +106 -0
- package/public/assets/css/login-react.input.css +58 -0
- package/public/assets/css/stickers-react.input.css +18 -0
- package/public/assets/css/terms-react.input.css +115 -0
- package/public/assets/css/user-react.input.css +57 -0
- package/public/assets/images/brand-icon-192.png +0 -0
- package/public/assets/images/brand-logo-128.webp +0 -0
- package/public/assets/images/hero-banner-1280.jpg +0 -0
- package/public/comandos/commands-catalog.json +4517 -0
- package/public/css/api-docs.css +161 -0
- package/public/css/stickers-admin.css +1288 -0
- package/public/css/styles.css +679 -0
- package/public/css/systemadm/admin.css +474 -0
- package/public/css/systemadm/base.css +73 -0
- package/public/css/systemadm/components.css +662 -0
- package/public/css/systemadm/layout.css +229 -0
- package/public/css/systemadm/tokens.css +56 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/js/apps/apiDocsApp.js +235 -0
- package/public/js/apps/commandsReactApp.js +528 -0
- package/public/js/apps/createPackApp.js +1646 -0
- package/public/js/apps/homeReactApp.js +942 -0
- package/public/js/apps/loginReactApp.js +496 -0
- package/public/js/apps/stickersAdminApp.js +1753 -0
- package/public/js/apps/stickersApp.js +3797 -0
- package/public/js/apps/termsReactApp.js +528 -0
- package/public/js/apps/userApp.js +2540 -0
- package/public/js/apps/userProfile/actions.js +66 -0
- package/public/js/apps/userReactApp.js +547 -0
- package/public/js/catalog.js +950 -0
- package/public/pages/api-docs.html +40 -0
- package/public/pages/aup.html +158 -0
- package/public/pages/comandos.html +41 -0
- package/public/pages/dpa.html +227 -0
- package/public/pages/home.html +45 -0
- package/public/pages/licenca.html +182 -0
- package/public/pages/login.html +40 -0
- package/public/pages/notice-and-takedown.html +234 -0
- package/public/pages/politica-de-privacidade.html +251 -0
- package/public/pages/seo-bot-whatsapp-para-grupo.html +350 -0
- package/public/pages/seo-bot-whatsapp-sem-programar.html +350 -0
- package/public/pages/seo-como-automatizar-avisos-no-whatsapp.html +350 -0
- package/public/pages/seo-como-criar-comandos-whatsapp.html +350 -0
- package/public/pages/seo-como-evitar-spam-no-whatsapp.html +350 -0
- package/public/pages/seo-como-moderar-grupo-whatsapp.html +350 -0
- package/public/pages/seo-como-organizar-comunidade-whatsapp.html +350 -0
- package/public/pages/seo-melhor-bot-whatsapp-para-grupos.html +350 -0
- package/public/pages/stickers-admin.html +31 -0
- package/public/pages/stickers-create.html +41 -0
- package/public/pages/stickers.html +45 -0
- package/public/pages/suboperadores.html +237 -0
- package/public/pages/termos-de-uso-texto-integral.html +241 -0
- package/public/pages/termos-de-uso.html +41 -0
- package/public/pages/user-password-reset.html +32 -0
- package/public/pages/user-systemadm.html +508 -0
- package/public/pages/user.html +39 -0
- package/public/robots.txt +9 -0
- package/public/site.webmanifest +24 -0
- package/public/sitemap.xml +98 -0
- package/schemas/command-config.schema.json +582 -0
- package/scripts/baileys-compat-smoke.mjs +12 -0
- package/scripts/cache-bust.mjs +142 -0
- package/scripts/deploy.sh +916 -0
- package/scripts/email-broadcast-terms-update.mjs +170 -0
- package/scripts/enrich-command-discovery-fields.mjs +286 -0
- package/scripts/generate-command-config-schema.mjs +273 -0
- package/scripts/generate-commands-catalog.mjs +308 -0
- package/scripts/generate-module-agents.mjs +631 -0
- package/scripts/generate-seo-satellite-pages.mjs +400 -0
- package/scripts/github-deploy-notify.mjs +174 -0
- package/scripts/github-release-notify.mjs +219 -0
- package/scripts/release.sh +599 -0
- package/scripts/run-codeql-local.sh +116 -0
- package/scripts/run-prettier-all.mjs +25 -0
- package/scripts/security-smoketest.mjs +581 -0
- package/scripts/sticker-catalog-loadtest.mjs +210 -0
- package/scripts/sticker-worker-task.mjs +119 -0
- package/scripts/sync-readme-snapshot.mjs +133 -0
- package/scripts/validate-command-config-schema.mjs +130 -0
- package/scripts/validate-command-configs.mjs +15 -0
- package/scripts/wiki-sync.sh +191 -0
- package/server/auth/googleWebAuth/googleWebAuthRuntime.js +62 -0
- package/server/auth/googleWebAuth/googleWebAuthService.js +807 -0
- package/server/auth/jwt/webJwtService.js +147 -0
- package/server/auth/stickerCatalogAuthContext.js +165 -0
- package/server/auth/termsAcceptance/termsAcceptanceHandler.js +189 -0
- package/server/auth/userPassword/index.js +14 -0
- package/server/auth/userPassword/userPasswordAuthService.js +422 -0
- package/server/auth/userPassword/userPasswordCrypto.js +199 -0
- package/server/auth/userPassword/userPasswordCrypto.test.js +76 -0
- package/server/auth/userPassword/userPasswordRecoveryService.js +728 -0
- package/server/auth/validation/authSchemas.js +236 -0
- package/server/auth/webAccount/webAccountHandlers.js +1434 -0
- package/server/controllers/admin/adminBanService.js +138 -0
- package/server/controllers/admin/adminPanelHandlers.js +2083 -0
- package/server/controllers/admin/stickerCatalogAdminContext.js +17 -0
- package/server/controllers/admin/systemAdminController.js +201 -0
- package/server/controllers/email/emailAutomationController.js +239 -0
- package/server/controllers/metricsController.js +21 -0
- package/server/controllers/seo/stickerCatalogSeoContext.js +514 -0
- package/server/controllers/sticker/nonCatalogHandlers.js +303 -0
- package/server/controllers/sticker/stickerCatalogController.js +4700 -0
- package/server/controllers/system/contactController.js +115 -0
- package/server/controllers/system/githubController.js +137 -0
- package/server/controllers/system/stickerCatalogSystemContext.js +758 -0
- package/server/controllers/system/storageController.js +154 -0
- package/server/controllers/system/systemController.js +135 -0
- package/server/controllers/system/systemMetricsController.js +156 -0
- package/server/controllers/system/visitController.js +90 -0
- package/server/controllers/userController.js +145 -0
- package/server/email/emailAutomationRuntime.js +225 -0
- package/server/email/emailAutomationService.js +125 -0
- package/server/email/emailOutboxRepository.js +282 -0
- package/server/email/emailTemplateService.js +480 -0
- package/server/email/emailTransportService.js +156 -0
- package/server/http/clientIp.js +95 -0
- package/server/http/httpRequestUtils.js +262 -0
- package/server/http/httpRequestUtils.test.js +80 -0
- package/server/http/httpServer.js +180 -0
- package/server/http/requestContext.js +20 -0
- package/server/http/siteRoutingUtils.js +87 -0
- package/server/index.js +1 -0
- package/server/middleware/cachePolicy.js +26 -0
- package/server/middleware/cachePolicyHelpers.js +1 -0
- package/server/middleware/endpointRateLimit.js +181 -0
- package/server/middleware/rateLimit.js +70 -0
- package/server/middleware/requireAdminAuth.js +48 -0
- package/server/middleware/securityHeaders.js +97 -0
- package/server/routes/admin/systemAdminRouter.js +64 -0
- package/server/routes/email/emailAutomationRouter.js +46 -0
- package/server/routes/health/healthRouter.js +41 -0
- package/server/routes/indexRouter.js +234 -0
- package/server/routes/metrics/metricsRouter.js +58 -0
- package/server/routes/static/staticPageRouter.js +134 -0
- package/server/routes/sticker/catalogHandlers/catalogAdminHttp.js +105 -0
- package/server/routes/sticker/catalogHandlers/catalogAuthHttp.js +77 -0
- package/server/routes/sticker/catalogHandlers/catalogPublicHttp.js +120 -0
- package/server/routes/sticker/catalogHandlers/catalogUploadHttp.js +83 -0
- package/server/routes/sticker/catalogRouter.js +77 -0
- package/server/routes/sticker/stickerApiRouter.js +84 -0
- package/server/routes/sticker/stickerDataRouter.js +145 -0
- package/server/routes/sticker/stickerSiteRouter.js +43 -0
- package/server/routes/user/userApiPaths.js +66 -0
- package/server/routes/user/userRouter.js +65 -0
- package/server/utils/safePath.js +26 -0
- package/utils/logger/loggerModule.js +35 -0
- 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.
|