@omnizap-system/omnizap 2.6.1 → 2.6.2
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/.env.example +54 -9
- package/.github/workflows/ci.yml +3 -3
- package/.github/workflows/security-runner-hardening.yml +1 -1
- package/.github/workflows/security-zap-full-scan.yml +1 -0
- package/app/config/index.js +2 -0
- package/app/configParts/adminIdentity.js +5 -5
- package/app/configParts/baileysConfig.js +226 -55
- package/app/configParts/groupUtils.js +5 -0
- package/app/configParts/messagePersistenceService.js +143 -3
- package/app/configParts/sessionConfig.js +157 -0
- package/app/connection/baileysCompatibility.test.js +1 -1
- package/app/connection/groupOwnerWriteStateResolver.js +109 -0
- package/app/connection/socketController.js +625 -124
- package/app/connection/socketController.multiSession.test.js +108 -0
- package/app/controllers/messageController.js +1 -1
- package/app/controllers/messagePipeline/commandMiddleware.js +12 -10
- package/app/controllers/messagePipeline/conversationMiddleware.js +2 -1
- package/app/controllers/messagePipeline/messagePipelineMiddlewares.test.js +104 -0
- package/app/controllers/messagePipeline/preProcessingMiddlewares.js +80 -2
- package/app/controllers/messageProcessingPipeline.js +88 -9
- package/app/controllers/messageProcessingPipeline.test.js +200 -0
- package/app/modules/adminModule/AGENT.md +1 -1
- package/app/modules/adminModule/commandConfig.json +3318 -1347
- package/app/modules/adminModule/groupCommandHandlers.js +856 -14
- package/app/modules/adminModule/groupCommandHandlers.test.js +375 -9
- package/app/modules/adminModule/groupWarningRepository.js +152 -0
- package/app/modules/aiModule/AGENT.md +47 -30
- package/app/modules/aiModule/aiConfigRuntime.js +1 -0
- package/app/modules/aiModule/catCommand.js +132 -25
- package/app/modules/aiModule/commandConfig.json +114 -28
- package/app/modules/analyticsModule/messageAnalysisEventRepository.js +54 -6
- package/app/modules/gameModule/AGENT.md +1 -1
- package/app/modules/gameModule/commandConfig.json +29 -0
- package/app/modules/menuModule/AGENT.md +1 -1
- package/app/modules/menuModule/commandConfig.json +45 -10
- package/app/modules/menuModule/menuCatalogService.js +190 -0
- package/app/modules/menuModule/menuCommandUsageRepository.js +109 -0
- package/app/modules/menuModule/menuDynamicService.js +511 -0
- package/app/modules/menuModule/menuDynamicService.test.js +141 -0
- package/app/modules/menuModule/menus.js +36 -5
- package/app/modules/playModule/AGENT.md +10 -5
- package/app/modules/playModule/commandConfig.json +74 -16
- package/app/modules/playModule/playCommandConstants.js +13 -7
- package/app/modules/playModule/playCommandCore.js +4 -6
- package/app/modules/playModule/{playCommandYtDlpClient.js → playCommandMediaClient.js} +684 -332
- package/app/modules/playModule/playConfigRuntime.js +5 -6
- package/app/modules/playModule/playModuleCriticalFlows.test.js +44 -59
- package/app/modules/quoteModule/AGENT.md +1 -1
- package/app/modules/quoteModule/commandConfig.json +29 -0
- package/app/modules/rpgPokemonModule/AGENT.md +1 -1
- package/app/modules/rpgPokemonModule/commandConfig.json +29 -0
- package/app/modules/statsModule/AGENT.md +1 -1
- package/app/modules/statsModule/commandConfig.json +58 -0
- package/app/modules/stickerModule/AGENT.md +1 -1
- package/app/modules/stickerModule/commandConfig.json +145 -0
- package/app/modules/stickerPackModule/AGENT.md +1 -1
- package/app/modules/stickerPackModule/autoPackCollectorService.js +5 -1
- package/app/modules/stickerPackModule/commandConfig.json +29 -0
- package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +1 -1
- package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +78 -57
- package/app/modules/stickerPackModule/stickerPackService.js +13 -6
- package/app/modules/systemMetricsModule/AGENT.md +1 -1
- package/app/modules/systemMetricsModule/commandConfig.json +29 -0
- package/app/modules/tiktokModule/AGENT.md +1 -1
- package/app/modules/tiktokModule/commandConfig.json +29 -0
- package/app/modules/userModule/AGENT.md +1 -1
- package/app/modules/userModule/commandConfig.json +29 -0
- package/app/modules/waifuPicsModule/AGENT.md +57 -27
- package/app/modules/waifuPicsModule/commandConfig.json +87 -0
- package/app/observability/metrics.js +136 -0
- package/app/services/ai/commandConfigEnrichmentService.js +229 -47
- package/app/services/ai/geminiService.js +131 -7
- package/app/services/ai/geminiService.test.js +59 -2
- package/app/services/ai/moduleAiHelpCoreService.js +33 -4
- package/app/services/group/groupMetadataService.js +24 -1
- package/app/services/infra/dbWriteQueue.js +51 -21
- package/app/services/messaging/newsBroadcastService.js +843 -27
- package/app/services/multiSession/assignmentBalancerService.js +457 -0
- package/app/services/multiSession/groupOwnershipRepository.js +381 -0
- package/app/services/multiSession/groupOwnershipService.js +890 -0
- package/app/services/multiSession/groupOwnershipService.test.js +309 -0
- package/app/services/multiSession/sessionRegistryService.js +293 -0
- package/app/store/aiPromptStore.js +36 -19
- package/app/store/groupConfigStore.js +41 -5
- package/app/store/premiumUserStore.js +21 -7
- package/app/utils/antiLink/antiLinkModule.js +352 -16
- package/app/workers/aiHelperContinuousLearningWorker.js +512 -0
- package/database/index.js +6 -0
- package/database/migrations/20260307_d0_hardening_down.sql +1 -1
- package/database/migrations/20260314_d7_canonical_sender_down.sql +1 -1
- package/database/migrations/20260406_d30_security_analytics_down.sql +1 -1
- package/database/migrations/20260411_d35_group_community_metadata_down.sql +59 -0
- package/database/migrations/20260411_d35_group_community_metadata_up.sql +62 -0
- package/database/migrations/20260412_d36_system_config_tables_down.sql +32 -0
- package/database/migrations/20260412_d36_system_config_tables_up.sql +66 -0
- package/database/migrations/20260413_d37_group_user_warnings_down.sql +11 -0
- package/database/migrations/20260413_d37_group_user_warnings_up.sql +24 -0
- package/database/migrations/20260414_d38_multi_session_foundation_down.sql +72 -0
- package/database/migrations/20260414_d38_multi_session_foundation_up.sql +125 -0
- package/database/migrations/20260414_d39_multi_session_cutover_down.sql +103 -0
- package/database/migrations/20260414_d39_multi_session_cutover_up.sql +83 -0
- package/database/schema.sql +102 -1
- package/docker-compose.yml +4 -1
- package/docs/compliance/acceptable-use-policy-2026-03-07.md +1 -1
- package/docs/compliance/privacy-policy-2026-03-07.md +2 -2
- package/docs/security/dsar-lgpd-runbook-2026-03-07.md +1 -1
- package/docs/security/network-hardening-runbook-2026-03-07.md +53 -0
- package/docs/security/omnizap-static-security-headers.conf +25 -0
- package/ecosystem.prod.config.cjs +31 -11
- package/index.js +52 -18
- package/observability/alert-rules.yml +20 -0
- package/observability/grafana/dashboards/omnizap-system-admin.json +229 -0
- package/observability/mysql-setup.sql +4 -4
- package/observability/system-admin-observability.md +26 -0
- package/package.json +12 -5
- package/public/comandos/commands-catalog.json +2253 -78
- package/public/js/apps/commandsReactApp.js +267 -87
- package/public/js/apps/createPackApp.js +3 -3
- package/public/js/apps/stickersApp.js +255 -103
- package/public/js/apps/termsReactApp.js +57 -8
- package/public/js/apps/userPasswordResetReactApp.js +406 -0
- package/public/js/apps/userReactApp.js +96 -47
- package/public/js/apps/userSystemAdmReactApp.js +1506 -0
- package/public/pages/politica-de-privacidade.html +1 -1
- package/public/pages/stickers.html +5 -5
- package/public/pages/termos-de-uso-texto-integral.html +1 -1
- package/public/pages/termos-de-uso.html +1 -1
- package/public/pages/user-password-reset.html +3 -4
- package/public/pages/user-systemadm.html +8 -462
- package/public/pages/user.html +1 -1
- package/scripts/clear-whatsapp-session.sh +123 -0
- package/scripts/core-ai-mode.mjs +163 -0
- package/scripts/deploy.sh +10 -0
- package/scripts/enrich-command-config-ux-openai.mjs +492 -0
- package/scripts/generate-commands-catalog.mjs +155 -0
- package/scripts/new-whatsapp-session.sh +317 -0
- package/scripts/security-web-surface-check.mjs +218 -0
- package/server/controllers/admin/adminPanelHandlers.js +253 -3
- package/server/controllers/admin/systemAdminController.js +267 -0
- package/server/controllers/sticker/stickerCatalogController.js +9 -23
- package/server/controllers/system/contactController.js +9 -17
- package/server/controllers/system/stickerCatalogSystemContext.js +27 -6
- package/server/controllers/system/systemController.js +254 -1
- package/server/controllers/userController.js +6 -0
- package/server/email/emailTemplateService.js +3 -2
- package/server/http/httpServer.js +8 -4
- package/server/middleware/securityHeaders.js +20 -1
- package/server/routes/admin/systemAdminRouter.js +6 -0
- package/server/routes/indexRouter.js +30 -6
- package/server/routes/observability/grafanaProxyRouter.js +254 -0
- package/server/routes/static/staticPageRouter.js +27 -1
- package/server/utils/publicContact.js +31 -0
- package/utils/whatsapp/contactEnv.js +39 -0
- package/vite.config.mjs +2 -1
- package/app/modules/playModule/local/installYtDlp.js +0 -25
- package/app/modules/playModule/local/ytDlpInstaller.js +0 -28
|
@@ -198,7 +198,7 @@
|
|
|
198
198
|
<h2>Controlador e contato</h2>
|
|
199
199
|
<ul>
|
|
200
200
|
<li><span class="accent">Controlador:</span> 59.034.123 KAIKY BRITO RIBEIRO (CNPJ 59.034.123/0001-96).</li>
|
|
201
|
-
<li><span class="accent">Contato:</span> <a href="
|
|
201
|
+
<li><span class="accent">Contato:</span> <a href="__WHATSAPP_SUPPORT_URL__" style="color: inherit">WhatsApp Oficial</a>.</li>
|
|
202
202
|
<li><span class="accent">DSAR/LGPD:</span> Informe o assunto "DSAR LGPD" no contato oficial.</li>
|
|
203
203
|
</ul>
|
|
204
204
|
</section>
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
<link rel="icon" href="/favicon.ico" sizes="any" />
|
|
12
12
|
<link rel="manifest" href="/site.webmanifest" />
|
|
13
13
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
|
14
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
15
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
16
|
+
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;700&display=swap" rel="stylesheet" />
|
|
14
17
|
<link rel="stylesheet" href="/assets/css/stickers-react.css" />
|
|
15
18
|
<style>
|
|
16
19
|
body {
|
|
17
20
|
margin: 0;
|
|
18
|
-
background: #020617;
|
|
21
|
+
background: radial-gradient(46rem 26rem at 6% -8%, rgb(16 185 129 / 0.14), transparent 62%), radial-gradient(38rem 22rem at 92% -6%, rgb(14 165 233 / 0.16), transparent 58%), #020617;
|
|
19
22
|
color: #f8fafc;
|
|
20
|
-
font-family:
|
|
21
|
-
system-ui,
|
|
22
|
-
-apple-system,
|
|
23
|
-
sans-serif;
|
|
23
|
+
font-family: 'Space Grotesk', 'Manrope', 'Segoe UI', sans-serif;
|
|
24
24
|
}
|
|
25
25
|
#stickers-react-root {
|
|
26
26
|
min-height: 100vh;
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
<p><span class="accent">Última atualização:</span> 07/03/2026</p>
|
|
194
194
|
<p>Este instrumento regula o acesso e uso do site, API, painel e funcionalidades de automação disponibilizadas pelo Omnizap.</p>
|
|
195
195
|
<div class="contact-actions">
|
|
196
|
-
<a class="contact-btn wa" href="
|
|
196
|
+
<a class="contact-btn wa" href="__WHATSAPP_SUPPORT_URL__" target="_blank">WhatsApp Oficial</a>
|
|
197
197
|
<a class="contact-btn ig" href="https://www.instagram.com/kaikybrofc/" target="_blank">Instagram</a>
|
|
198
198
|
</div>
|
|
199
199
|
</section>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
</style>
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
29
|
-
<div id="terms-react-root"></div>
|
|
29
|
+
<div id="terms-react-root" data-whatsapp-support-number="__WHATSAPP_SUPPORT_NUMBER__" data-whatsapp-support-url="__WHATSAPP_SUPPORT_URL__" data-whatsapp-support-display="__WHATSAPP_SUPPORT_DISPLAY__" data-whatsapp-support-lgpd-url="__WHATSAPP_SUPPORT_URL_LGPD__"></div>
|
|
30
30
|
<noscript>
|
|
31
31
|
<main style="max-width: 800px; margin: 50px auto; padding: 20px; text-align: center">
|
|
32
32
|
<h1>OmniZap - Termos de Uso</h1>
|
|
@@ -19,14 +19,13 @@
|
|
|
19
19
|
-apple-system,
|
|
20
20
|
sans-serif;
|
|
21
21
|
}
|
|
22
|
-
#
|
|
22
|
+
#user-password-reset-root {
|
|
23
23
|
min-height: 100vh;
|
|
24
24
|
}
|
|
25
25
|
</style>
|
|
26
26
|
</head>
|
|
27
27
|
<body>
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
<script type="module" src="/assets/js/login-react.bundle.js"></script>
|
|
28
|
+
<div id="user-password-reset-root" data-api-base-path="/api" data-login-path="/login" data-panel-path="/user" data-password-reset-web-path="/user/password-reset"></div>
|
|
29
|
+
<script type="module" src="/assets/js/user-password-reset-react.bundle.js"></script>
|
|
31
30
|
</body>
|
|
32
31
|
</html>
|
|
@@ -41,468 +41,14 @@
|
|
|
41
41
|
</style>
|
|
42
42
|
</head>
|
|
43
43
|
<body>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
</a>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<p>Painel corporativo de operações, segurança e moderação para bots e stickers.</p>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<ul class="nav-list" id="user-admin-nav">
|
|
56
|
-
<li>
|
|
57
|
-
<a class="nav-link" href="#overview">Dashboard <span class="nav-kbd">1</span></a>
|
|
58
|
-
</li>
|
|
59
|
-
<li>
|
|
60
|
-
<a class="nav-link" href="#moderacao">Moderação <span class="nav-kbd">2</span></a>
|
|
61
|
-
</li>
|
|
62
|
-
<li>
|
|
63
|
-
<a class="nav-link" href="#usuarios">Usuários <span class="nav-kbd">3</span></a>
|
|
64
|
-
</li>
|
|
65
|
-
<li>
|
|
66
|
-
<a class="nav-link" href="#sessoes">Sessões <span class="nav-kbd">4</span></a>
|
|
67
|
-
</li>
|
|
68
|
-
<li>
|
|
69
|
-
<a class="nav-link" href="#saude">Saúde <span class="nav-kbd">5</span></a>
|
|
70
|
-
</li>
|
|
71
|
-
<li>
|
|
72
|
-
<a class="nav-link" href="#auditoria">Auditoria <span class="nav-kbd">6</span></a>
|
|
73
|
-
</li>
|
|
74
|
-
<li>
|
|
75
|
-
<a class="nav-link" href="#alertas">Alertas <span class="nav-kbd">7</span></a>
|
|
76
|
-
</li>
|
|
77
|
-
<li>
|
|
78
|
-
<a class="nav-link" href="#exportacao">Exportação <span class="nav-kbd">8</span></a>
|
|
79
|
-
</li>
|
|
80
|
-
<li>
|
|
81
|
-
<a class="nav-link" href="#configuracoes">Configurações <span class="nav-kbd">9</span></a>
|
|
82
|
-
</li>
|
|
83
|
-
</ul>
|
|
84
|
-
|
|
85
|
-
<div class="sidebar-footer">
|
|
86
|
-
<a class="btn" href="/">Home</a>
|
|
87
|
-
<a class="btn" href="/user/">Minha Conta</a>
|
|
88
|
-
<a id="user-manage-head-link" class="btn" href="/stickers/perfil">Gerenciar Stickers</a>
|
|
89
|
-
</div>
|
|
90
|
-
</aside>
|
|
91
|
-
|
|
92
|
-
<div class="workspace">
|
|
93
|
-
<header class="topbar">
|
|
94
|
-
<div class="topbar-left">
|
|
95
|
-
<h2 class="topbar-title">System Admin</h2>
|
|
96
|
-
<div class="topbar-meta">
|
|
97
|
-
<span id="user-env-badge" class="chip env">Production</span>
|
|
98
|
-
<span id="user-global-status" class="chip status"><span class="top-status-dot"></span><span id="user-global-status-text">Online</span></span>
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<div class="topbar-right">
|
|
103
|
-
<button id="user-compact-toggle" type="button" class="btn ghost" aria-label="Alternar modo compacto">Modo compacto</button>
|
|
104
|
-
<div class="topbar-admin">
|
|
105
|
-
<img id="user-top-avatar" src="https://iili.io/FC3FABe.jpg" alt="Admin" />
|
|
106
|
-
<span id="user-top-admin-name">Admin</span>
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
109
|
-
</header>
|
|
110
|
-
|
|
111
|
-
<div class="viewport">
|
|
112
|
-
<section id="user-admin-panel" class="section admin-panel" hidden>
|
|
113
|
-
<p id="user-admin-status" class="admin-note" hidden></p>
|
|
114
|
-
|
|
115
|
-
<p id="user-admin-error" class="admin-error" hidden></p>
|
|
116
|
-
|
|
117
|
-
<form id="user-admin-unlock-form" class="admin-form" hidden>
|
|
118
|
-
<label for="user-admin-password" class="admin-label">Senha do painel admin</label>
|
|
119
|
-
<div class="admin-form-row">
|
|
120
|
-
<input id="user-admin-password" class="admin-input" type="password" autocomplete="current-password" placeholder="Digite sua senha" />
|
|
121
|
-
<button id="user-admin-unlock-btn" type="submit" class="btn">Desbloquear</button>
|
|
122
|
-
</div>
|
|
123
|
-
</form>
|
|
124
|
-
|
|
125
|
-
<div id="user-admin-overview" hidden>
|
|
126
|
-
<div class="admin-toolbar">
|
|
127
|
-
<div class="admin-toolbar-meta">
|
|
128
|
-
<p class="admin-last-updated">Última atualização: <span id="user-admin-last-updated">n/d</span></p>
|
|
129
|
-
<div id="user-admin-carousel-nav" class="admin-carousel-nav" aria-label="Navegação do carrossel administrativo">
|
|
130
|
-
<button id="user-admin-carousel-prev" type="button" class="admin-carousel-btn" aria-label="Slide anterior">Anterior</button>
|
|
131
|
-
<span id="user-admin-carousel-counter" class="admin-carousel-counter">1 / 1</span>
|
|
132
|
-
<button id="user-admin-carousel-next" type="button" class="admin-carousel-btn" aria-label="Próximo slide">Próximo</button>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
|
|
136
|
-
<form id="user-admin-search-form" class="admin-inline-form">
|
|
137
|
-
<input id="user-admin-search-input" class="admin-input" type="text" placeholder="Buscar por usuário, grupo, pack ou sessão" />
|
|
138
|
-
<button id="user-admin-search-btn" type="submit" class="btn">Buscar</button>
|
|
139
|
-
</form>
|
|
140
|
-
|
|
141
|
-
<div class="security-strip">
|
|
142
|
-
<span id="user-security-session" class="security-pill">Sessão segura</span>
|
|
143
|
-
<span id="user-security-encryption" class="security-pill">Criptografia ativa</span>
|
|
144
|
-
<span id="user-security-ip" class="security-pill">IP n/d</span>
|
|
145
|
-
<span id="user-security-2fa" class="security-pill">2FA n/d</span>
|
|
146
|
-
</div>
|
|
147
|
-
|
|
148
|
-
<div class="risk-strip">
|
|
149
|
-
<span id="user-risk-cpu" class="risk-pill">CPU normal</span>
|
|
150
|
-
<span id="user-risk-spam" class="risk-pill">Spam sob controle</span>
|
|
151
|
-
<span id="user-risk-bans" class="risk-pill">Bans estáveis</span>
|
|
152
|
-
<span id="user-risk-errors" class="risk-pill">Erros baixos</span>
|
|
153
|
-
</div>
|
|
154
|
-
|
|
155
|
-
<p id="user-admin-ops-status" class="admin-item-meta">Ações operacionais disponíveis.</p>
|
|
156
|
-
</div>
|
|
157
|
-
|
|
158
|
-
<div id="user-admin-layout" class="admin-layout admin-layout--enterprise is-carousel is-subpage">
|
|
159
|
-
<section id="overview" class="section section-kpis span-12" data-admin-page="overview">
|
|
160
|
-
<div class="section-head">
|
|
161
|
-
<div>
|
|
162
|
-
<h4 class="panel-title">Dashboard Estratégico</h4>
|
|
163
|
-
<p class="panel-subtitle">Métricas segmentadas por Operação, Sistema, Segurança e Usuários.</p>
|
|
164
|
-
</div>
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
<div class="admin-grid">
|
|
168
|
-
<article class="metric-card">
|
|
169
|
-
<p class="admin-metric-label">Bots online</p>
|
|
170
|
-
<p id="user-admin-bots-online" class="admin-metric-value">0</p>
|
|
171
|
-
<span class="trend up">Operação</span>
|
|
172
|
-
<p id="user-admin-bots-online-context" class="metric-context">vs ontem: n/d</p>
|
|
173
|
-
</article>
|
|
174
|
-
<article class="metric-card">
|
|
175
|
-
<p class="admin-metric-label">Mensagens hoje</p>
|
|
176
|
-
<p id="user-admin-messages-today" class="admin-metric-value">0</p>
|
|
177
|
-
<span class="trend up">Operação</span>
|
|
178
|
-
<p id="user-admin-messages-today-context" class="metric-context">vs ontem: n/d</p>
|
|
179
|
-
</article>
|
|
180
|
-
<article class="metric-card system">
|
|
181
|
-
<p class="admin-metric-label">Uptime</p>
|
|
182
|
-
<p id="user-admin-uptime" class="admin-metric-value">n/d</p>
|
|
183
|
-
<span class="trend up">Sistema</span>
|
|
184
|
-
<p id="user-admin-uptime-context" class="metric-context">janela: processo atual</p>
|
|
185
|
-
</article>
|
|
186
|
-
<article class="metric-card system">
|
|
187
|
-
<p class="admin-metric-label">Erros 5xx</p>
|
|
188
|
-
<p id="user-admin-errors-5xx" class="admin-metric-value">0</p>
|
|
189
|
-
<span class="trend warn">Sistema</span>
|
|
190
|
-
<p id="user-admin-errors-5xx-context" class="metric-context">vs ontem: n/d</p>
|
|
191
|
-
</article>
|
|
192
|
-
<article class="metric-card">
|
|
193
|
-
<p class="admin-metric-label">Packs (total)</p>
|
|
194
|
-
<p id="user-admin-total-packs" class="admin-metric-value">0</p>
|
|
195
|
-
<span class="trend up">Produto</span>
|
|
196
|
-
<p id="user-admin-total-packs-context" class="metric-context">delta 24h: n/d</p>
|
|
197
|
-
</article>
|
|
198
|
-
<article class="metric-card">
|
|
199
|
-
<p class="admin-metric-label">Stickers (total)</p>
|
|
200
|
-
<p id="user-admin-total-stickers" class="admin-metric-value">0</p>
|
|
201
|
-
<span class="trend up">Produto</span>
|
|
202
|
-
<p id="user-admin-total-stickers-context" class="metric-context">delta 24h: n/d</p>
|
|
203
|
-
</article>
|
|
204
|
-
<article class="metric-card security warning">
|
|
205
|
-
<p class="admin-metric-label">Spam bloqueado</p>
|
|
206
|
-
<p id="user-admin-spam-blocked" class="admin-metric-value">0</p>
|
|
207
|
-
<span class="trend warn">Segurança</span>
|
|
208
|
-
<p id="user-admin-spam-blocked-context" class="metric-context">vs ontem: n/d</p>
|
|
209
|
-
</article>
|
|
210
|
-
<article class="metric-card security critical">
|
|
211
|
-
<p class="admin-metric-label">Bans ativos</p>
|
|
212
|
-
<p id="user-admin-active-bans" class="admin-metric-value">0</p>
|
|
213
|
-
<span class="trend down">Segurança</span>
|
|
214
|
-
<p id="user-admin-active-bans-context" class="metric-context">delta 24h: n/d</p>
|
|
215
|
-
</article>
|
|
216
|
-
<article class="metric-card users">
|
|
217
|
-
<p class="admin-metric-label">Usuários Google</p>
|
|
218
|
-
<p id="user-admin-known-users" class="admin-metric-value">0</p>
|
|
219
|
-
<span class="trend up">Usuários</span>
|
|
220
|
-
<p id="user-admin-known-users-context" class="metric-context">delta 7d: n/d</p>
|
|
221
|
-
</article>
|
|
222
|
-
<article class="metric-card users">
|
|
223
|
-
<p class="admin-metric-label">Sessões Google</p>
|
|
224
|
-
<p id="user-admin-active-sessions" class="admin-metric-value">0</p>
|
|
225
|
-
<span class="trend warn">Usuários</span>
|
|
226
|
-
<p id="user-admin-active-sessions-context" class="metric-context">agora: n/d</p>
|
|
227
|
-
</article>
|
|
228
|
-
<article class="metric-card users">
|
|
229
|
-
<p class="admin-metric-label">Visitas 24h</p>
|
|
230
|
-
<p id="user-admin-visits-24h" class="admin-metric-value">0</p>
|
|
231
|
-
<span class="trend up">Usuários</span>
|
|
232
|
-
<p id="user-admin-visits-24h-context" class="metric-context">janela: 24h</p>
|
|
233
|
-
</article>
|
|
234
|
-
<article class="metric-card users">
|
|
235
|
-
<p class="admin-metric-label">Visitas 7d</p>
|
|
236
|
-
<p id="user-admin-visits-7d" class="admin-metric-value">0</p>
|
|
237
|
-
<span class="trend up">Usuários</span>
|
|
238
|
-
<p id="user-admin-visits-7d-context" class="metric-context">janela: 7 dias</p>
|
|
239
|
-
</article>
|
|
240
|
-
<article class="metric-card users">
|
|
241
|
-
<p class="admin-metric-label">Visitantes 7d</p>
|
|
242
|
-
<p id="user-admin-unique-visitors-7d" class="admin-metric-value">0</p>
|
|
243
|
-
<span class="trend up">Usuários</span>
|
|
244
|
-
<p id="user-admin-unique-visitors-7d-context" class="metric-context">janela: 7 dias</p>
|
|
245
|
-
</article>
|
|
246
|
-
</div>
|
|
247
|
-
</section>
|
|
248
|
-
|
|
249
|
-
<section id="saude" class="section section-health span-12" data-admin-page="saude">
|
|
250
|
-
<div class="section-head">
|
|
251
|
-
<div>
|
|
252
|
-
<h4 class="panel-title">Saúde do Sistema</h4>
|
|
253
|
-
<p class="panel-subtitle">Visão DevOps com barras de utilização e status de banco.</p>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
|
|
257
|
-
<div class="health-grid">
|
|
258
|
-
<article class="health-card">
|
|
259
|
-
<div class="health-head">
|
|
260
|
-
<p class="admin-metric-label">CPU</p>
|
|
261
|
-
<p id="user-admin-health-cpu" class="admin-metric-value">n/d</p>
|
|
262
|
-
</div>
|
|
263
|
-
<div class="health-meter"><span id="user-admin-health-cpu-bar"></span></div>
|
|
264
|
-
<p id="user-admin-health-cpu-meta" class="health-meta">Limite recomendado: 88%</p>
|
|
265
|
-
</article>
|
|
266
|
-
<article class="health-card">
|
|
267
|
-
<div class="health-head">
|
|
268
|
-
<p class="admin-metric-label">RAM</p>
|
|
269
|
-
<p id="user-admin-health-ram" class="admin-metric-value">n/d</p>
|
|
270
|
-
</div>
|
|
271
|
-
<div class="health-meter"><span id="user-admin-health-ram-bar"></span></div>
|
|
272
|
-
<p id="user-admin-health-ram-meta" class="health-meta">Limite recomendado: 90%</p>
|
|
273
|
-
</article>
|
|
274
|
-
<article class="health-card">
|
|
275
|
-
<div class="health-head">
|
|
276
|
-
<p class="admin-metric-label">Latência p95</p>
|
|
277
|
-
<p id="user-admin-health-latency" class="admin-metric-value">n/d</p>
|
|
278
|
-
</div>
|
|
279
|
-
<div class="health-meter">
|
|
280
|
-
<span id="user-admin-health-latency-bar"></span>
|
|
281
|
-
</div>
|
|
282
|
-
<p id="user-admin-health-latency-meta" class="health-meta">Alerta acima de 300ms</p>
|
|
283
|
-
</article>
|
|
284
|
-
<article class="health-card">
|
|
285
|
-
<div class="health-head">
|
|
286
|
-
<p class="admin-metric-label">Fila pendente</p>
|
|
287
|
-
<p id="user-admin-health-queue" class="admin-metric-value">n/d</p>
|
|
288
|
-
</div>
|
|
289
|
-
<div class="health-meter"><span id="user-admin-health-queue-bar"></span></div>
|
|
290
|
-
<p id="user-admin-health-queue-meta" class="health-meta">Ideal: abaixo de 120 jobs</p>
|
|
291
|
-
</article>
|
|
292
|
-
<article class="health-card">
|
|
293
|
-
<div class="health-head">
|
|
294
|
-
<p class="admin-metric-label">Status DB</p>
|
|
295
|
-
<span id="user-admin-health-db-badge" class="db-badge">Status</span>
|
|
296
|
-
</div>
|
|
297
|
-
<p id="user-admin-health-db" class="admin-metric-value">n/d</p>
|
|
298
|
-
<p id="user-admin-health-db-meta" class="health-meta">SLA alvo: 99.95%</p>
|
|
299
|
-
</article>
|
|
300
|
-
</div>
|
|
301
|
-
</section>
|
|
302
|
-
|
|
303
|
-
<section id="moderacao" class="section section-security span-6" data-admin-page="moderacao">
|
|
304
|
-
<div class="section-head">
|
|
305
|
-
<div>
|
|
306
|
-
<h4 class="panel-title">Moderação</h4>
|
|
307
|
-
<p class="panel-subtitle">Timeline de incidentes e ações de contenção.</p>
|
|
308
|
-
</div>
|
|
309
|
-
</div>
|
|
310
|
-
|
|
311
|
-
<div class="filters">
|
|
312
|
-
<div class="filter-field">
|
|
313
|
-
<label for="user-admin-moderation-filter-severity">Severidade</label>
|
|
314
|
-
<select id="user-admin-moderation-filter-severity" class="admin-input">
|
|
315
|
-
<option value="all">Todas</option>
|
|
316
|
-
<option value="critical">Critical</option>
|
|
317
|
-
<option value="high">High</option>
|
|
318
|
-
<option value="medium">Medium</option>
|
|
319
|
-
<option value="low">Low</option>
|
|
320
|
-
</select>
|
|
321
|
-
</div>
|
|
322
|
-
<div class="filter-field">
|
|
323
|
-
<label for="user-admin-moderation-filter-type">Tipo</label>
|
|
324
|
-
<select id="user-admin-moderation-filter-type" class="admin-input">
|
|
325
|
-
<option value="all">Todos</option>
|
|
326
|
-
<option value="ban">Ban</option>
|
|
327
|
-
<option value="spam">Spam</option>
|
|
328
|
-
<option value="session">Sessão</option>
|
|
329
|
-
</select>
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
|
|
333
|
-
<div id="user-admin-moderation-list" class="admin-list timeline"></div>
|
|
334
|
-
<div id="user-admin-moderation-pagination" class="list-pagination" hidden>
|
|
335
|
-
<p id="user-admin-moderation-page-meta" class="list-pagination-meta"></p>
|
|
336
|
-
<div class="list-pagination-controls">
|
|
337
|
-
<button id="user-admin-moderation-prev" type="button" class="admin-mini-btn">Anterior</button>
|
|
338
|
-
<span id="user-admin-moderation-page-counter" class="list-pagination-counter">1 / 1</span>
|
|
339
|
-
<button id="user-admin-moderation-next" type="button" class="admin-mini-btn">Próxima</button>
|
|
340
|
-
</div>
|
|
341
|
-
</div>
|
|
342
|
-
</section>
|
|
343
|
-
|
|
344
|
-
<section id="auditoria" class="section section-security span-6" data-admin-page="auditoria">
|
|
345
|
-
<div class="section-head">
|
|
346
|
-
<div>
|
|
347
|
-
<h4 class="panel-title">Auditoria</h4>
|
|
348
|
-
<p class="panel-subtitle">Rastro de alterações administrativas e eventos sensíveis.</p>
|
|
349
|
-
</div>
|
|
350
|
-
</div>
|
|
351
|
-
|
|
352
|
-
<div class="filters">
|
|
353
|
-
<div class="filter-field">
|
|
354
|
-
<label for="user-admin-audit-filter-status">Status</label>
|
|
355
|
-
<select id="user-admin-audit-filter-status" class="admin-input">
|
|
356
|
-
<option value="all">Todos</option>
|
|
357
|
-
<option value="success">Success</option>
|
|
358
|
-
<option value="error">Error</option>
|
|
359
|
-
</select>
|
|
360
|
-
</div>
|
|
361
|
-
<div class="filter-field">
|
|
362
|
-
<label for="user-admin-audit-search">Busca</label>
|
|
363
|
-
<input id="user-admin-audit-search" class="admin-input" type="text" placeholder="Filtrar por ação, alvo ou admin" />
|
|
364
|
-
</div>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<div id="user-admin-audit-list" class="admin-list timeline"></div>
|
|
368
|
-
<div id="user-admin-audit-pagination" class="list-pagination" hidden>
|
|
369
|
-
<p id="user-admin-audit-page-meta" class="list-pagination-meta"></p>
|
|
370
|
-
<div class="list-pagination-controls">
|
|
371
|
-
<button id="user-admin-audit-prev" type="button" class="admin-mini-btn">Anterior</button>
|
|
372
|
-
<span id="user-admin-audit-page-counter" class="list-pagination-counter">1 / 1</span>
|
|
373
|
-
<button id="user-admin-audit-next" type="button" class="admin-mini-btn">Próxima</button>
|
|
374
|
-
</div>
|
|
375
|
-
</div>
|
|
376
|
-
</section>
|
|
377
|
-
|
|
378
|
-
<section id="usuarios" class="section section-users span-6" data-admin-page="usuarios">
|
|
379
|
-
<div class="section-head">
|
|
380
|
-
<div>
|
|
381
|
-
<h4 class="panel-title">Usuários</h4>
|
|
382
|
-
<p class="panel-subtitle">Contas mapeadas e ações de segurança.</p>
|
|
383
|
-
</div>
|
|
384
|
-
</div>
|
|
385
|
-
<div id="user-admin-users-list" class="admin-list"></div>
|
|
386
|
-
<div id="user-admin-users-pagination" class="list-pagination" hidden>
|
|
387
|
-
<p id="user-admin-users-page-meta" class="list-pagination-meta"></p>
|
|
388
|
-
<div class="list-pagination-controls">
|
|
389
|
-
<button id="user-admin-users-prev" type="button" class="admin-mini-btn">Anterior</button>
|
|
390
|
-
<span id="user-admin-users-page-counter" class="list-pagination-counter">1 / 1</span>
|
|
391
|
-
<button id="user-admin-users-next" type="button" class="admin-mini-btn">Próxima</button>
|
|
392
|
-
</div>
|
|
393
|
-
</div>
|
|
394
|
-
</section>
|
|
395
|
-
|
|
396
|
-
<section id="sessoes" class="section section-users span-6" data-admin-page="sessoes">
|
|
397
|
-
<div class="section-head">
|
|
398
|
-
<div>
|
|
399
|
-
<h4 class="panel-title">Sessões Ativas</h4>
|
|
400
|
-
<p class="panel-subtitle">Sessões autenticadas com opção de encerramento forçado.</p>
|
|
401
|
-
</div>
|
|
402
|
-
</div>
|
|
403
|
-
<div id="user-admin-sessions-list" class="admin-list"></div>
|
|
404
|
-
<div id="user-admin-sessions-pagination" class="list-pagination" hidden>
|
|
405
|
-
<p id="user-admin-sessions-page-meta" class="list-pagination-meta"></p>
|
|
406
|
-
<div class="list-pagination-controls">
|
|
407
|
-
<button id="user-admin-sessions-prev" type="button" class="admin-mini-btn">Anterior</button>
|
|
408
|
-
<span id="user-admin-sessions-page-counter" class="list-pagination-counter">1 / 1</span>
|
|
409
|
-
<button id="user-admin-sessions-next" type="button" class="admin-mini-btn">Próxima</button>
|
|
410
|
-
</div>
|
|
411
|
-
</div>
|
|
412
|
-
</section>
|
|
413
|
-
|
|
414
|
-
<section id="alertas" class="section section-security span-6" data-admin-page="alertas">
|
|
415
|
-
<div class="section-head">
|
|
416
|
-
<div>
|
|
417
|
-
<h4 class="panel-title">Alertas</h4>
|
|
418
|
-
<p class="panel-subtitle">Incidentes monitorados e criticidade operacional.</p>
|
|
419
|
-
</div>
|
|
420
|
-
</div>
|
|
421
|
-
<div id="user-admin-alerts-list" class="admin-list timeline"></div>
|
|
422
|
-
<div id="user-admin-alerts-pagination" class="list-pagination" hidden>
|
|
423
|
-
<p id="user-admin-alerts-page-meta" class="list-pagination-meta"></p>
|
|
424
|
-
<div class="list-pagination-controls">
|
|
425
|
-
<button id="user-admin-alerts-prev" type="button" class="admin-mini-btn">Anterior</button>
|
|
426
|
-
<span id="user-admin-alerts-page-counter" class="list-pagination-counter">1 / 1</span>
|
|
427
|
-
<button id="user-admin-alerts-next" type="button" class="admin-mini-btn">Próxima</button>
|
|
428
|
-
</div>
|
|
429
|
-
</div>
|
|
430
|
-
</section>
|
|
431
|
-
|
|
432
|
-
<section id="configuracoes" class="section section-governance span-6" data-admin-page="configuracoes">
|
|
433
|
-
<div class="section-head">
|
|
434
|
-
<div>
|
|
435
|
-
<h4 class="panel-title">Controle de Recursos</h4>
|
|
436
|
-
<p class="panel-subtitle">Feature flags e ajustes de rollout.</p>
|
|
437
|
-
</div>
|
|
438
|
-
</div>
|
|
439
|
-
<div id="user-admin-flags-list" class="admin-list"></div>
|
|
440
|
-
</section>
|
|
441
|
-
|
|
442
|
-
<section class="section section-security span-6" data-admin-page="configuracoes">
|
|
443
|
-
<div class="section-head">
|
|
444
|
-
<div>
|
|
445
|
-
<h4 class="panel-title">Bans</h4>
|
|
446
|
-
<p class="panel-subtitle">Estado das contas bloqueadas.</p>
|
|
447
|
-
</div>
|
|
448
|
-
</div>
|
|
449
|
-
<div id="user-admin-bans-list" class="admin-list"></div>
|
|
450
|
-
</section>
|
|
451
|
-
|
|
452
|
-
<section class="section section-governance span-6" data-admin-page="usuarios">
|
|
453
|
-
<div class="section-head">
|
|
454
|
-
<div>
|
|
455
|
-
<h4 class="panel-title">Busca Global</h4>
|
|
456
|
-
<p class="panel-subtitle">Resultados consolidados por usuário, grupo, pack e sessão.</p>
|
|
457
|
-
</div>
|
|
458
|
-
</div>
|
|
459
|
-
<div id="user-admin-search-results" class="admin-list"></div>
|
|
460
|
-
</section>
|
|
461
|
-
|
|
462
|
-
<section class="section section-governance span-12" data-admin-page="configuracoes">
|
|
463
|
-
<div class="section-head">
|
|
464
|
-
<div>
|
|
465
|
-
<h4 class="panel-title">Atalhos Operacionais</h4>
|
|
466
|
-
<p class="panel-subtitle">Ações de manutenção com confirmação para operações críticas.</p>
|
|
467
|
-
</div>
|
|
468
|
-
</div>
|
|
469
|
-
<div class="admin-item-actions">
|
|
470
|
-
<button type="button" class="admin-mini-btn" data-admin-op-action="restart_worker">Reiniciar worker</button>
|
|
471
|
-
<button type="button" class="admin-mini-btn" data-admin-op-action="clear_cache">Limpar cache</button>
|
|
472
|
-
<button type="button" class="admin-mini-btn" data-admin-op-action="reprocess_jobs">Reprocessar jobs</button>
|
|
473
|
-
</div>
|
|
474
|
-
</section>
|
|
475
|
-
|
|
476
|
-
<section id="exportacao" class="section section-governance span-12" data-admin-page="exportacao">
|
|
477
|
-
<div class="section-head">
|
|
478
|
-
<div>
|
|
479
|
-
<h4 class="panel-title">Exportação</h4>
|
|
480
|
-
<p class="panel-subtitle">Exportar métricas e eventos para auditoria externa.</p>
|
|
481
|
-
</div>
|
|
482
|
-
</div>
|
|
483
|
-
<div class="admin-item-actions">
|
|
484
|
-
<button id="user-admin-export-metrics-json" type="button" class="admin-mini-btn">Métricas JSON</button>
|
|
485
|
-
<button id="user-admin-export-metrics-csv" type="button" class="admin-mini-btn">Métricas CSV</button>
|
|
486
|
-
<button id="user-admin-export-events-json" type="button" class="admin-mini-btn">Eventos JSON</button>
|
|
487
|
-
<button id="user-admin-export-events-csv" type="button" class="admin-mini-btn">Eventos CSV</button>
|
|
488
|
-
</div>
|
|
489
|
-
</section>
|
|
490
|
-
</div>
|
|
491
|
-
|
|
492
|
-
<div class="admin-actions">
|
|
493
|
-
<button id="user-admin-refresh-btn" type="button" class="btn">Atualizar dados admin</button>
|
|
494
|
-
<button id="user-admin-logout-btn" type="button" class="btn">Sair do admin</button>
|
|
495
|
-
</div>
|
|
496
|
-
</div>
|
|
497
|
-
</section>
|
|
498
|
-
|
|
499
|
-
<p class="footer">Omnizap · <span id="user-current-year"></span></p>
|
|
500
|
-
</div>
|
|
501
|
-
</div>
|
|
502
|
-
</main>
|
|
503
|
-
|
|
504
|
-
<div id="user-admin-toast-stack" class="toast-stack" aria-live="polite" aria-atomic="false"></div>
|
|
505
|
-
|
|
44
|
+
<div id="user-systemadm-react-root" data-api-base-path="/api" data-login-path="/login" data-stickers-path="/stickers"></div>
|
|
45
|
+
<noscript>
|
|
46
|
+
<main style="max-width: 680px; margin: 100px auto; text-align: center; padding: 20px">
|
|
47
|
+
<h1>System Admin</h1>
|
|
48
|
+
<p>Ative o JavaScript para carregar o painel administrativo.</p>
|
|
49
|
+
<a href="/user/" style="color: #22c55e">Voltar para Minha Conta</a>
|
|
50
|
+
</main>
|
|
51
|
+
</noscript>
|
|
506
52
|
<script type="module" src="/assets/js/user-systemadm.bundle.js"></script>
|
|
507
53
|
</body>
|
|
508
54
|
</html>
|
package/public/pages/user.html
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
</style>
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
29
|
-
<div id="user-react-root" data-api-base-path="/api" data-login-path="/login"></div>
|
|
29
|
+
<div id="user-react-root" data-api-base-path="/api" data-login-path="/login" data-panel-path="/user" data-password-reset-web-path="/user/password-reset" data-support-whatsapp-number="" data-support-whatsapp-url=""></div>
|
|
30
30
|
<noscript>
|
|
31
31
|
<main style="max-width: 600px; margin: 100px auto; text-align: center; padding: 20px">
|
|
32
32
|
<h1>Dashboard do Usuário</h1>
|