forlogic-core 2.2.6 → 2.2.7
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/.note/memory/features/import/attachment-idempotency-registry.md +8 -8
- package/.note/memory/features/import/attachment-strategy.md +30 -30
- package/.note/memory/patterns/admin-i18n-policy.md +20 -20
- package/.note/memory/patterns/alias-url-resolution.md +69 -69
- package/.note/memory/patterns/doc-sync-rule.md +35 -35
- package/.note/memory/patterns/documentation-standard.md +17 -17
- package/.note/memory/patterns/dynamic-supabase-config.md +4 -4
- package/.note/memory/patterns/environment-detection-logic.md +35 -35
- package/.note/memory/patterns/i18n-architecture.md +3 -3
- package/README.md +120 -120
- package/dist/README.md +1079 -0
- package/dist/bin/bootstrap.js +40 -0
- package/dist/bin/pull-docs.js +186 -0
- package/dist/components/ui/color-picker.d.ts +2 -0
- package/dist/components/ui/combo-tree.d.ts +3 -1
- package/dist/components/ui/combobox.d.ts +2 -1
- package/dist/components/ui/select.d.ts +9 -2
- package/dist/docs/KNOWLEDGE.md +109 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/docs/PUBLISH.md +168 -168
- package/docs/STORAGE_BUCKETS.md +456 -456
- package/docs/SUPABASE_SECRETS.md +122 -122
- package/docs/WORKSPACE_KNOWLEDGE.md +154 -154
- package/docs/design-system/buttons-actions.md +130 -130
- package/docs/design-system/charts-dashboards.md +301 -340
- package/docs/design-system/crud.md +114 -174
- package/docs/design-system/data-display.md +106 -106
- package/docs/design-system/dialogs.md +212 -212
- package/docs/design-system/domain.md +329 -319
- package/docs/design-system/examples.md +275 -275
- package/docs/design-system/foundation.md +1 -1
- package/docs/design-system/inputs.md +137 -132
- package/docs/design-system/layout.md +154 -202
- package/docs/design-system/navigation.md +331 -272
- package/docs/design-system/notifications-feedback.md +34 -34
- package/docs/design-system/patterns/README.md +53 -53
- package/docs/design-system/patterns/action-button.md +22 -22
- package/docs/design-system/patterns/alertdialog-deletion.md +46 -46
- package/docs/design-system/patterns/baseform-custom-fields.md +59 -59
- package/docs/design-system/patterns/baseform-usage.md +42 -42
- package/docs/design-system/patterns/body-content-scroll.md +56 -56
- package/docs/design-system/patterns/combo-tree.md +23 -23
- package/docs/design-system/patterns/components-registry.md +17 -17
- package/docs/design-system/patterns/core-providers.md +41 -41
- package/docs/design-system/patterns/crud-bulk-actions.md +12 -12
- package/docs/design-system/patterns/crud-config-props.md +16 -16
- package/docs/design-system/patterns/crud-defaults.md +17 -17
- package/docs/design-system/patterns/crud-toolbar.md +28 -28
- package/docs/design-system/patterns/delete-confirmation.md +40 -40
- package/docs/design-system/patterns/dialog-body-scroll.md +26 -26
- package/docs/design-system/patterns/dialog-structure.md +32 -32
- package/docs/design-system/patterns/dialog-variants.md +41 -41
- package/docs/design-system/patterns/feature-flags.md +81 -81
- package/docs/design-system/patterns/header-metadata.md +57 -57
- package/docs/design-system/patterns/i18n-setup.md +117 -117
- package/docs/design-system/patterns/pagination.md +27 -27
- package/docs/design-system/patterns/single-scroll.md +39 -39
- package/docs/design-system/patterns/vite-tailwind-setup.md +49 -49
- package/docs/design-system/platform.md +18 -18
- package/docs/design-system/selectors.md +287 -258
- package/docs/design-system/tables-grids.md +38 -95
- package/package.json +152 -152
- package/dist/assets/docs-BEwTKYu3.css +0 -1
- package/dist/assets/docs-Bgpz6ETN.js +0 -10752
- package/dist/assets/index-SqMwTzMJ.js +0 -97
- package/dist/index.html +0 -34
package/docs/SUPABASE_SECRETS.md
CHANGED
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
# Supabase Secrets — Inventário
|
|
2
|
-
|
|
3
|
-
> **Projeto Supabase:** `ccjfvpnndclajkleyqkc`
|
|
4
|
-
>
|
|
5
|
-
> Todas as secrets são compartilhadas entre os projetos Lovable que apontam para este mesmo projeto Supabase.
|
|
6
|
-
> Última atualização: 2026-05-04
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Infraestrutura Supabase (automáticas)
|
|
11
|
-
|
|
12
|
-
Secrets gerenciadas automaticamente pelo Supabase. **Não editar manualmente.**
|
|
13
|
-
|
|
14
|
-
| Secret | Finalidade | Projetos |
|
|
15
|
-
|--------|-----------|----------|
|
|
16
|
-
| `SUPABASE_URL` | URL do projeto Supabase | Todos com edge functions |
|
|
17
|
-
| `SUPABASE_SERVICE_ROLE_KEY` | Chave admin — bypass de RLS em edge functions | Todos com edge functions |
|
|
18
|
-
| `SUPABASE_ANON_KEY` | Chave pública anon (usada em `createClient` server-side) | Cockpit, Educação, PDI, Competências, Colaboradores |
|
|
19
|
-
| `SUPABASE_DB_URL` | Connection string PostgreSQL | Infraestrutura interna Supabase |
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Autenticação e JWT
|
|
24
|
-
|
|
25
|
-
| Secret | Finalidade | Projetos | Observações |
|
|
26
|
-
|--------|-----------|----------|-------------|
|
|
27
|
-
| `JWT_SECRET` | Verificação de assinatura HMAC-SHA256 dos JWTs customizados | **Admin** (validate-token, azure-blob-upload, clicksign, d4sign, send-email), **Cockpit** (_shared/auth), **Colaboradores** (sensitive-data, entra-id-sync, collaborator-webhook, contract-*), **PDI** (dev-tokens) | Crítica — usada para validar tokens em todas as edge functions protegidas |
|
|
28
|
-
| `VALIDATE_JWT_ENDPOINT` | URL de endpoint externo para validação de JWT (Qualiex API) | **Admin** (validate-token), **Treinamentos** (docs-documents-used, docs-process-outdated, notify-leader) | Fallback quando JWT_SECRET não é usado diretamente |
|
|
29
|
-
| `SUPABASE_PUBLISHABLE_KEY` | Chave pública do projeto (alias da anon key) | **Admin** (validate-token) | Usada para validar tokens de projetos consumidores |
|
|
30
|
-
| `SUPABASE_PUBLISHABLE_KEYS` | Lista de chaves públicas de múltiplos projetos | **Admin** (validate-token) | Suporte multi-projeto na validação |
|
|
31
|
-
| `SUPABASE_SECRET_KEYS` | Lista de chaves secretas de múltiplos projetos | **Admin** (validate-token) | Suporte multi-projeto na validação |
|
|
32
|
-
| `SUPABASE_JWKS` | JSON Web Key Set para validação de tokens | **Admin** (validate-token) | Padrão JWKS para rotação de chaves |
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Desenvolvimento e Preview
|
|
37
|
-
|
|
38
|
-
| Secret | Finalidade | Projetos | Observações |
|
|
39
|
-
|--------|-----------|----------|-------------|
|
|
40
|
-
| `DEV_ACCESS_TOKEN` | Token OAuth pré-configurado para ambiente de preview | **Admin**, **Cockpit** (sync-completed, view-pendencias), **Documentos**, **PDI** | Permite autenticação no preview Lovable sem fluxo OAuth |
|
|
41
|
-
| `DEV_ID_TOKEN` | ID token pré-configurado para ambiente de preview | **Admin**, **Cockpit**, **Documentos**, **PDI** | Par do DEV_ACCESS_TOKEN |
|
|
42
|
-
| `DEV_TOKENS_SECRET` | Secret de autenticação da edge function `dev-tokens` | **Admin** | Protege o endpoint que retorna os tokens de dev |
|
|
43
|
-
| `CRON_SECRET` | Header de autenticação do cron job `audit-ship` | **Admin** | Enviado como `x-cron-secret` pelo pg_cron |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## E-mail (AWS SES)
|
|
48
|
-
|
|
49
|
-
| Secret | Finalidade | Projetos |
|
|
50
|
-
|--------|-----------|----------|
|
|
51
|
-
| `AWS_ACCESS_KEY_ID` | Credencial IAM para AWS SES | **Admin** (send-email), **Cockpit** (notify-suggestion), **Treinamentos** (docs-process-outdated) |
|
|
52
|
-
| `AWS_SECRET_ACCESS_KEY` | Credencial IAM para AWS SES | **Admin** (send-email), **Cockpit** (notify-suggestion), **Treinamentos** (docs-process-outdated) |
|
|
53
|
-
| `AWS_SES_REGION` | Região do SES (default: `us-east-1`) | **Admin**, **Cockpit**, **Treinamentos** |
|
|
54
|
-
| `AWS_SES_FROM_EMAIL` | Endereço de e-mail remetente | **Admin**, **Cockpit**, **Treinamentos** |
|
|
55
|
-
| `AWS_SES_FROM_NAME` | Nome exibido como remetente | **Admin**, **Cockpit**, **Treinamentos** |
|
|
56
|
-
| `SUGGESTION_NOTIFY_EMAIL` | E-mail destino para notificações de sugestões do Cockpit | **Cockpit** (notify-suggestion) |
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## Azure
|
|
61
|
-
|
|
62
|
-
| Secret | Finalidade | Projetos | Observações |
|
|
63
|
-
|--------|-----------|----------|-------------|
|
|
64
|
-
| `AZURE_BLOB_ACCOUNT_URL` | URL da conta Azure Blob Storage | **Admin** (azure-blob-upload) | Upload de arquivos para Azure |
|
|
65
|
-
| `AZURE_BLOB_ACCOUNT_KEY` | SharedKey da conta Azure Blob | **Admin** (azure-blob-upload) | Método preferido de autenticação |
|
|
66
|
-
| `AZURE_BLOB_SAS_TOKEN` | SAS Token para Azure Blob | **Admin** (azure-blob-upload) | ⚠️ **Deprecated** — fallback do `AZURE_BLOB_ACCOUNT_KEY` |
|
|
67
|
-
| `AZURE_TENANT_ID` | Tenant ID do Azure AD (Entra ID) | **Colaboradores** (entra-id-sync) | Sincronização de usuários via Microsoft Graph |
|
|
68
|
-
| `AZURE_CLIENT_ID` | Client ID do app Azure AD | **Colaboradores** (entra-id-sync) | Par do AZURE_TENANT_ID |
|
|
69
|
-
|
|
70
|
-
> **Nota:** Existia uma secret `AZURE_CLIENT_SECRET` que era recriada indevidamente. Nenhum projeto no workspace a referencia no código — a origem da recriação não foi identificada.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Integrações de IA
|
|
75
|
-
|
|
76
|
-
| Secret | Finalidade | Projetos |
|
|
77
|
-
|--------|-----------|----------|
|
|
78
|
-
| `OPENAI_API_KEY` | Chave da API OpenAI (GPT) | **Educação** (generate-block-content, generate-course-structure, process-document, extract-certificate-data, generate-quiz-from-document), **Desempenho** (generate-questions-ai, performance-generate-*), **PDI** (generate-pdi-actions, generate-strategic-plan), **Competências** (generate-questions-ai), **Pulso** (analyze-comments, analyze-survey-data, generate-action-plan, refine-action-plan, analyze-custom-survey, generate-survey-action-plan), **Treinamentos** (generate-quiz-from-document, suggest-evaluation-criteria, validate-certificate) |
|
|
79
|
-
| `OPENROUTER_API_KEY` | Chave do OpenRouter (modelo: `google/gemini-2.5-flash`) | **Matriz de Foco** (generic-app-scan, manager-chat, outlook-calendar, redundancy-hunter, smart-assistant) |
|
|
80
|
-
| `LOVABLE_API_KEY` | Chave da API Lovable (AI Gateway) | **Educação** (generate-questions-ai) |
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Integrações Externas
|
|
85
|
-
|
|
86
|
-
| Secret | Finalidade | Projetos | Observações |
|
|
87
|
-
|--------|-----------|----------|-------------|
|
|
88
|
-
| `CLICKSIGN_SANDBOX_API_KEY` | API Key do Clicksign (ambiente sandbox) | **Admin** (clicksign) | Assinatura eletrônica de documentos |
|
|
89
|
-
| `ELASTIC_URL` | URL do cluster Elasticsearch | **Admin** (audit-ship) | Destino dos logs de auditoria |
|
|
90
|
-
| `ELASTIC_API_KEY` | API Key do Elasticsearch | **Admin** (audit-ship) | Autenticação no cluster |
|
|
91
|
-
| `HUBSPOT_PRIVATE_APP_TOKEN` | Token de app privado do HubSpot | **Cockpit** (hubspot-tickets) | No código é lido como `HUBSPOT_ACCESS_TOKEN` via `Deno.env.get()` |
|
|
92
|
-
| `SENSITIVE_DATA_KEY` | Chave AES-GCM para criptografia de dados sensíveis (CPF, etc.) | **Colaboradores** (sensitive-data, api-export-sensitive-data, entra-id-sync), **Matriz de Foco** (generic-app-scan, generic-app-secrets, migrate-legacy-tokens) | Chave hex de 256 bits |
|
|
93
|
-
| `VITE_QUALIEX_API_URL` | URL da API Qualiex | **Admin** (validate-token), **Cockpit** (_shared/auth), **Treinamentos** (docs-process-outdated, notify-leader) | Configuração de ambiente (prod vs dev) |
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Secrets sem Referência no Código
|
|
98
|
-
|
|
99
|
-
| Secret | Status | Recomendação |
|
|
100
|
-
|--------|--------|-------------|
|
|
101
|
-
| `VITE_BUILDER_API_KEY` | Nenhuma edge function ou código frontend referencia esta secret | ⚠️ Candidata a remoção — verificar se algum serviço externo a utiliza antes de deletar |
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Secrets Específicas de Projetos (não listadas acima)
|
|
106
|
-
|
|
107
|
-
Estas secrets são usadas apenas por projetos específicos mas vivem no mesmo projeto Supabase:
|
|
108
|
-
|
|
109
|
-
| Secret (no código) | Projeto | Finalidade |
|
|
110
|
-
|---------------------|---------|-----------|
|
|
111
|
-
| `TRAININGS_SERVICE_API_KEY` | **Treinamentos** | Auth service-to-service entre edge functions |
|
|
112
|
-
| `HUBSPOT_ACCESS_TOKEN` | **Cockpit** | Mesmo valor de `HUBSPOT_PRIVATE_APP_TOKEN` (nome diferente no `Deno.env.get`) |
|
|
113
|
-
|
|
114
|
-
> **Nota:** Estas secrets podem não estar na lista do dashboard se foram adicionadas diretamente ou por outro projeto. Verifique no [painel de secrets](https://supabase.com/dashboard/project/ccjfvpnndclajkleyqkc/settings/functions).
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Referências
|
|
119
|
-
|
|
120
|
-
- [Painel de Secrets do Supabase](https://supabase.com/dashboard/project/ccjfvpnndclajkleyqkc/settings/functions)
|
|
121
|
-
- [Plano de Segurança (Fase 2)](./../.lovable/plan.md)
|
|
122
|
-
- [Inventário de Storage Buckets](./STORAGE_BUCKETS.md)
|
|
1
|
+
# Supabase Secrets — Inventário
|
|
2
|
+
|
|
3
|
+
> **Projeto Supabase:** `ccjfvpnndclajkleyqkc`
|
|
4
|
+
>
|
|
5
|
+
> Todas as secrets são compartilhadas entre os projetos Lovable que apontam para este mesmo projeto Supabase.
|
|
6
|
+
> Última atualização: 2026-05-04
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Infraestrutura Supabase (automáticas)
|
|
11
|
+
|
|
12
|
+
Secrets gerenciadas automaticamente pelo Supabase. **Não editar manualmente.**
|
|
13
|
+
|
|
14
|
+
| Secret | Finalidade | Projetos |
|
|
15
|
+
|--------|-----------|----------|
|
|
16
|
+
| `SUPABASE_URL` | URL do projeto Supabase | Todos com edge functions |
|
|
17
|
+
| `SUPABASE_SERVICE_ROLE_KEY` | Chave admin — bypass de RLS em edge functions | Todos com edge functions |
|
|
18
|
+
| `SUPABASE_ANON_KEY` | Chave pública anon (usada em `createClient` server-side) | Cockpit, Educação, PDI, Competências, Colaboradores |
|
|
19
|
+
| `SUPABASE_DB_URL` | Connection string PostgreSQL | Infraestrutura interna Supabase |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Autenticação e JWT
|
|
24
|
+
|
|
25
|
+
| Secret | Finalidade | Projetos | Observações |
|
|
26
|
+
|--------|-----------|----------|-------------|
|
|
27
|
+
| `JWT_SECRET` | Verificação de assinatura HMAC-SHA256 dos JWTs customizados | **Admin** (validate-token, azure-blob-upload, clicksign, d4sign, send-email), **Cockpit** (_shared/auth), **Colaboradores** (sensitive-data, entra-id-sync, collaborator-webhook, contract-*), **PDI** (dev-tokens) | Crítica — usada para validar tokens em todas as edge functions protegidas |
|
|
28
|
+
| `VALIDATE_JWT_ENDPOINT` | URL de endpoint externo para validação de JWT (Qualiex API) | **Admin** (validate-token), **Treinamentos** (docs-documents-used, docs-process-outdated, notify-leader) | Fallback quando JWT_SECRET não é usado diretamente |
|
|
29
|
+
| `SUPABASE_PUBLISHABLE_KEY` | Chave pública do projeto (alias da anon key) | **Admin** (validate-token) | Usada para validar tokens de projetos consumidores |
|
|
30
|
+
| `SUPABASE_PUBLISHABLE_KEYS` | Lista de chaves públicas de múltiplos projetos | **Admin** (validate-token) | Suporte multi-projeto na validação |
|
|
31
|
+
| `SUPABASE_SECRET_KEYS` | Lista de chaves secretas de múltiplos projetos | **Admin** (validate-token) | Suporte multi-projeto na validação |
|
|
32
|
+
| `SUPABASE_JWKS` | JSON Web Key Set para validação de tokens | **Admin** (validate-token) | Padrão JWKS para rotação de chaves |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Desenvolvimento e Preview
|
|
37
|
+
|
|
38
|
+
| Secret | Finalidade | Projetos | Observações |
|
|
39
|
+
|--------|-----------|----------|-------------|
|
|
40
|
+
| `DEV_ACCESS_TOKEN` | Token OAuth pré-configurado para ambiente de preview | **Admin**, **Cockpit** (sync-completed, view-pendencias), **Documentos**, **PDI** | Permite autenticação no preview Lovable sem fluxo OAuth |
|
|
41
|
+
| `DEV_ID_TOKEN` | ID token pré-configurado para ambiente de preview | **Admin**, **Cockpit**, **Documentos**, **PDI** | Par do DEV_ACCESS_TOKEN |
|
|
42
|
+
| `DEV_TOKENS_SECRET` | Secret de autenticação da edge function `dev-tokens` | **Admin** | Protege o endpoint que retorna os tokens de dev |
|
|
43
|
+
| `CRON_SECRET` | Header de autenticação do cron job `audit-ship` | **Admin** | Enviado como `x-cron-secret` pelo pg_cron |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## E-mail (AWS SES)
|
|
48
|
+
|
|
49
|
+
| Secret | Finalidade | Projetos |
|
|
50
|
+
|--------|-----------|----------|
|
|
51
|
+
| `AWS_ACCESS_KEY_ID` | Credencial IAM para AWS SES | **Admin** (send-email), **Cockpit** (notify-suggestion), **Treinamentos** (docs-process-outdated) |
|
|
52
|
+
| `AWS_SECRET_ACCESS_KEY` | Credencial IAM para AWS SES | **Admin** (send-email), **Cockpit** (notify-suggestion), **Treinamentos** (docs-process-outdated) |
|
|
53
|
+
| `AWS_SES_REGION` | Região do SES (default: `us-east-1`) | **Admin**, **Cockpit**, **Treinamentos** |
|
|
54
|
+
| `AWS_SES_FROM_EMAIL` | Endereço de e-mail remetente | **Admin**, **Cockpit**, **Treinamentos** |
|
|
55
|
+
| `AWS_SES_FROM_NAME` | Nome exibido como remetente | **Admin**, **Cockpit**, **Treinamentos** |
|
|
56
|
+
| `SUGGESTION_NOTIFY_EMAIL` | E-mail destino para notificações de sugestões do Cockpit | **Cockpit** (notify-suggestion) |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Azure
|
|
61
|
+
|
|
62
|
+
| Secret | Finalidade | Projetos | Observações |
|
|
63
|
+
|--------|-----------|----------|-------------|
|
|
64
|
+
| `AZURE_BLOB_ACCOUNT_URL` | URL da conta Azure Blob Storage | **Admin** (azure-blob-upload) | Upload de arquivos para Azure |
|
|
65
|
+
| `AZURE_BLOB_ACCOUNT_KEY` | SharedKey da conta Azure Blob | **Admin** (azure-blob-upload) | Método preferido de autenticação |
|
|
66
|
+
| `AZURE_BLOB_SAS_TOKEN` | SAS Token para Azure Blob | **Admin** (azure-blob-upload) | ⚠️ **Deprecated** — fallback do `AZURE_BLOB_ACCOUNT_KEY` |
|
|
67
|
+
| `AZURE_TENANT_ID` | Tenant ID do Azure AD (Entra ID) | **Colaboradores** (entra-id-sync) | Sincronização de usuários via Microsoft Graph |
|
|
68
|
+
| `AZURE_CLIENT_ID` | Client ID do app Azure AD | **Colaboradores** (entra-id-sync) | Par do AZURE_TENANT_ID |
|
|
69
|
+
|
|
70
|
+
> **Nota:** Existia uma secret `AZURE_CLIENT_SECRET` que era recriada indevidamente. Nenhum projeto no workspace a referencia no código — a origem da recriação não foi identificada.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Integrações de IA
|
|
75
|
+
|
|
76
|
+
| Secret | Finalidade | Projetos |
|
|
77
|
+
|--------|-----------|----------|
|
|
78
|
+
| `OPENAI_API_KEY` | Chave da API OpenAI (GPT) | **Educação** (generate-block-content, generate-course-structure, process-document, extract-certificate-data, generate-quiz-from-document), **Desempenho** (generate-questions-ai, performance-generate-*), **PDI** (generate-pdi-actions, generate-strategic-plan), **Competências** (generate-questions-ai), **Pulso** (analyze-comments, analyze-survey-data, generate-action-plan, refine-action-plan, analyze-custom-survey, generate-survey-action-plan), **Treinamentos** (generate-quiz-from-document, suggest-evaluation-criteria, validate-certificate) |
|
|
79
|
+
| `OPENROUTER_API_KEY` | Chave do OpenRouter (modelo: `google/gemini-2.5-flash`) | **Matriz de Foco** (generic-app-scan, manager-chat, outlook-calendar, redundancy-hunter, smart-assistant) |
|
|
80
|
+
| `LOVABLE_API_KEY` | Chave da API Lovable (AI Gateway) | **Educação** (generate-questions-ai) |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Integrações Externas
|
|
85
|
+
|
|
86
|
+
| Secret | Finalidade | Projetos | Observações |
|
|
87
|
+
|--------|-----------|----------|-------------|
|
|
88
|
+
| `CLICKSIGN_SANDBOX_API_KEY` | API Key do Clicksign (ambiente sandbox) | **Admin** (clicksign) | Assinatura eletrônica de documentos |
|
|
89
|
+
| `ELASTIC_URL` | URL do cluster Elasticsearch | **Admin** (audit-ship) | Destino dos logs de auditoria |
|
|
90
|
+
| `ELASTIC_API_KEY` | API Key do Elasticsearch | **Admin** (audit-ship) | Autenticação no cluster |
|
|
91
|
+
| `HUBSPOT_PRIVATE_APP_TOKEN` | Token de app privado do HubSpot | **Cockpit** (hubspot-tickets) | No código é lido como `HUBSPOT_ACCESS_TOKEN` via `Deno.env.get()` |
|
|
92
|
+
| `SENSITIVE_DATA_KEY` | Chave AES-GCM para criptografia de dados sensíveis (CPF, etc.) | **Colaboradores** (sensitive-data, api-export-sensitive-data, entra-id-sync), **Matriz de Foco** (generic-app-scan, generic-app-secrets, migrate-legacy-tokens) | Chave hex de 256 bits |
|
|
93
|
+
| `VITE_QUALIEX_API_URL` | URL da API Qualiex | **Admin** (validate-token), **Cockpit** (_shared/auth), **Treinamentos** (docs-process-outdated, notify-leader) | Configuração de ambiente (prod vs dev) |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Secrets sem Referência no Código
|
|
98
|
+
|
|
99
|
+
| Secret | Status | Recomendação |
|
|
100
|
+
|--------|--------|-------------|
|
|
101
|
+
| `VITE_BUILDER_API_KEY` | Nenhuma edge function ou código frontend referencia esta secret | ⚠️ Candidata a remoção — verificar se algum serviço externo a utiliza antes de deletar |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Secrets Específicas de Projetos (não listadas acima)
|
|
106
|
+
|
|
107
|
+
Estas secrets são usadas apenas por projetos específicos mas vivem no mesmo projeto Supabase:
|
|
108
|
+
|
|
109
|
+
| Secret (no código) | Projeto | Finalidade |
|
|
110
|
+
|---------------------|---------|-----------|
|
|
111
|
+
| `TRAININGS_SERVICE_API_KEY` | **Treinamentos** | Auth service-to-service entre edge functions |
|
|
112
|
+
| `HUBSPOT_ACCESS_TOKEN` | **Cockpit** | Mesmo valor de `HUBSPOT_PRIVATE_APP_TOKEN` (nome diferente no `Deno.env.get`) |
|
|
113
|
+
|
|
114
|
+
> **Nota:** Estas secrets podem não estar na lista do dashboard se foram adicionadas diretamente ou por outro projeto. Verifique no [painel de secrets](https://supabase.com/dashboard/project/ccjfvpnndclajkleyqkc/settings/functions).
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Referências
|
|
119
|
+
|
|
120
|
+
- [Painel de Secrets do Supabase](https://supabase.com/dashboard/project/ccjfvpnndclajkleyqkc/settings/functions)
|
|
121
|
+
- [Plano de Segurança (Fase 2)](./../.lovable/plan.md)
|
|
122
|
+
- [Inventário de Storage Buckets](./STORAGE_BUCKETS.md)
|
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
# forlogic-core — Workspace Knowledge
|
|
2
|
-
|
|
3
|
-
> **Documento para colar no Lovable Workspace Knowledge** de projetos consumidores.
|
|
4
|
-
> Funciona como mapa de referências cruzadas entre os projetos.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Projetos do Ecossistema
|
|
9
|
-
|
|
10
|
-
| Projeto | Alias | Responsabilidade |
|
|
11
|
-
|---------|-------|-----------------|
|
|
12
|
-
| **forlogic-docs** | `@forlogic-docs` | Fonte canônica de regras, padrões, templates e documentação |
|
|
13
|
-
| **qualiex-admin** | `@Admin` | Código-fonte da lib `forlogic-core`, Design System e docs gerados |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Onde buscar cada informação
|
|
18
|
-
|
|
19
|
-
### Regras e Padrões → `@forlogic-docs`
|
|
20
|
-
|
|
21
|
-
| O que | Caminho |
|
|
22
|
-
|-------|---------|
|
|
23
|
-
| Constituição (regras canônicas) | `docs/engenharia/padroes/constitution.md` |
|
|
24
|
-
| Guia de migração de ícones | `docs/engenharia/padroes/icon-migration.md` |
|
|
25
|
-
| Guia de publicação da lib | `docs/engenharia/devops/publish.md` |
|
|
26
|
-
| Prompt: auditoria | `docs/templates/prompts/audit.md` |
|
|
27
|
-
| Prompt: criação de tela | `docs/templates/prompts/new-screen.md` |
|
|
28
|
-
| Prompt: starter template | `docs/templates/prompts/starter.md` |
|
|
29
|
-
| ADRs (decisões de arquitetura) | `docs/adrs/` |
|
|
30
|
-
| Specs de API | `docs/apis/` |
|
|
31
|
-
|
|
32
|
-
### Código-fonte e Design System → `@Admin`
|
|
33
|
-
|
|
34
|
-
| O que | Caminho |
|
|
35
|
-
|-------|---------|
|
|
36
|
-
| Código dos componentes UI | `lib/components/ui/` |
|
|
37
|
-
| Sistema CRUD | `lib/crud/` |
|
|
38
|
-
| Barrel exports (lista completa) | `lib/exports/ui.ts`, `lib/exports/index.ts` |
|
|
39
|
-
| Documentação MD do Design System | `docs/design-system/` |
|
|
40
|
-
| Golden snippets (exemplos) | `docs/design-system/examples.md` |
|
|
41
|
-
| Docs interativos (código-fonte) | `src/design-system/docs/` |
|
|
42
|
-
| Hooks compartilhados | `lib/hooks/` |
|
|
43
|
-
| Providers (CoreProviders) | `lib/providers/` |
|
|
44
|
-
| Serviços (Base, Email, Error) | `lib/services/` |
|
|
45
|
-
| Config Vite/Tailwind | `lib/vite/`, `lib/tailwind/` |
|
|
46
|
-
| Spec do módulo Queries | `spec/queries.md` |
|
|
47
|
-
| Inventário de Supabase Storage | `docs/STORAGE_BUCKETS.md` |
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Schema do Projeto
|
|
52
|
-
|
|
53
|
-
> ⚠️ **O schema é definido no `README.md` de cada projeto consumidor.** Consulte-o antes de qualquer query.
|
|
54
|
-
|
|
55
|
-
```ts
|
|
56
|
-
// ✅ CORRETO — substituir pelo schema do projeto
|
|
57
|
-
supabase.schema('SCHEMA_DO_PROJETO').from('tabela').select('*');
|
|
58
|
-
|
|
59
|
-
// ❌ ERRADO
|
|
60
|
-
supabase.from('tabela').select('*');
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Regras Invioláveis (resumo)
|
|
66
|
-
|
|
67
|
-
> Fonte canônica: `@forlogic-docs docs/engenharia/padroes/constitution.md`
|
|
68
|
-
|
|
69
|
-
| Regra | Detalhe |
|
|
70
|
-
|-------|---------|
|
|
71
|
-
| Schema obrigatório | `.schema('...')` em toda query Supabase |
|
|
72
|
-
| Sem DELETE físico | Soft delete com `deleted_at` |
|
|
73
|
-
| **Sem acesso anon** | RLS policies devem usar `TO authenticated` — **nunca** conceder acesso ao role `anon` sem justificativa documentada |
|
|
74
|
-
| Lib-first | Usar `forlogic-core` antes de criar componente |
|
|
75
|
-
| Import do Supabase | `getSupabaseClient()` de `forlogic-core` |
|
|
76
|
-
| Import de i18n | `useTranslation` de `forlogic-core`, nunca de `react-i18next` |
|
|
77
|
-
| Sem hardcoded admin | Nunca localStorage/sessionStorage para roles |
|
|
78
|
-
| **PK Override** | `VITE_SUPABASE_PK_OVERRIDE` **obrigatória** no `.env` — nunca remover. Ver `@Admin docs/design-system/patterns/feature-flags.md` |
|
|
79
|
-
|
|
80
|
-
### Política de acesso `anon` no Supabase
|
|
81
|
-
|
|
82
|
-
**Por padrão, nenhuma tabela, function ou storage policy deve conceder acesso ao role `anon`.**
|
|
83
|
-
|
|
84
|
-
Todas as policies devem usar `TO authenticated` e validar o JWT do tenant:
|
|
85
|
-
|
|
86
|
-
```sql
|
|
87
|
-
-- ✅ CORRETO
|
|
88
|
-
CREATE POLICY "select" ON schema.tabela
|
|
89
|
-
FOR SELECT TO authenticated
|
|
90
|
-
USING (((SELECT auth.jwt()) ->> 'alias'::text) = alias);
|
|
91
|
-
|
|
92
|
-
-- ❌ ERRADO — nunca usar anon
|
|
93
|
-
CREATE POLICY "select" ON schema.tabela
|
|
94
|
-
FOR SELECT TO anon, authenticated
|
|
95
|
-
USING (true);
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Exceções são permitidas apenas quando:**
|
|
99
|
-
|
|
100
|
-
1. A funcionalidade é **intencionalmente pública** (ex: validação de certificado, página de candidatura externa)
|
|
101
|
-
2. A exceção está **documentada na migration SQL** com comentário `-- ANON: <motivo>`
|
|
102
|
-
3. A exceção está **registrada no `@security-memory`** do projeto
|
|
103
|
-
|
|
104
|
-
**Funções `SECURITY DEFINER`:** por padrão, revogar permissão de `anon`:
|
|
105
|
-
|
|
106
|
-
```sql
|
|
107
|
-
REVOKE EXECUTE ON FUNCTION schema.minha_funcao FROM anon;
|
|
108
|
-
-- Manter apenas authenticated
|
|
109
|
-
GRANT EXECUTE ON FUNCTION schema.minha_funcao TO authenticated;
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Design System — Categorias
|
|
115
|
-
|
|
116
|
-
> Para ver props e exemplos: `@Admin docs/design-system/<arquivo>.md`
|
|
117
|
-
|
|
118
|
-
| Categoria | Arquivo |
|
|
119
|
-
|-----------|---------|
|
|
120
|
-
| Fundação | `foundation.md` |
|
|
121
|
-
| Botões & Ações | `buttons-actions.md` |
|
|
122
|
-
| Inputs | `inputs.md` |
|
|
123
|
-
| Seletores | `selectors.md` |
|
|
124
|
-
| Data Display | `data-display.md` |
|
|
125
|
-
| Data Grid | `tables-grids.md` |
|
|
126
|
-
| Navegação | `navigation.md` |
|
|
127
|
-
| Dialogs | `dialogs.md` |
|
|
128
|
-
| Layout | `layout.md` |
|
|
129
|
-
| CRUD | `crud.md` |
|
|
130
|
-
|
|
131
|
-
### Aliases
|
|
132
|
-
|
|
133
|
-
| Original | Alias(es) |
|
|
134
|
-
|----------|-----------|
|
|
135
|
-
| Combobox | SelectSearch, MultiSelect, EntitySelect |
|
|
136
|
-
| ComboTree | TreeSelect |
|
|
137
|
-
| ActionButton | ActionMenu, RowActions |
|
|
138
|
-
| CrudPrimitiveTable | DataTable |
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Instrução para IA — Leitura Obrigatória
|
|
143
|
-
|
|
144
|
-
**QUANDO** criar ou modificar qualquer arquivo `.tsx`:
|
|
145
|
-
|
|
146
|
-
- **SE** contém tabela/CRUD → **LER** `@Admin docs/design-system/crud.md` ANTES
|
|
147
|
-
- **SE** contém formulário → **LER** `@Admin docs/design-system/inputs.md` ANTES
|
|
148
|
-
- **SE** contém modal → **LER** `@Admin docs/design-system/dialogs.md` ANTES
|
|
149
|
-
- **SE** contém botões/ações → **LER** `@Admin docs/design-system/buttons-actions.md` ANTES
|
|
150
|
-
- **SE** é layout → **LER** `@Admin docs/design-system/layout.md` ANTES
|
|
151
|
-
|
|
152
|
-
**SEMPRE** consultar `@Admin docs/design-system/examples.md` como referência.
|
|
153
|
-
|
|
154
|
-
**VALIDAÇÃO**: Todo import de componente visual DEVE vir de `forlogic-core`.
|
|
1
|
+
# forlogic-core — Workspace Knowledge
|
|
2
|
+
|
|
3
|
+
> **Documento para colar no Lovable Workspace Knowledge** de projetos consumidores.
|
|
4
|
+
> Funciona como mapa de referências cruzadas entre os projetos.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Projetos do Ecossistema
|
|
9
|
+
|
|
10
|
+
| Projeto | Alias | Responsabilidade |
|
|
11
|
+
|---------|-------|-----------------|
|
|
12
|
+
| **forlogic-docs** | `@forlogic-docs` | Fonte canônica de regras, padrões, templates e documentação |
|
|
13
|
+
| **qualiex-admin** | `@Admin` | Código-fonte da lib `forlogic-core`, Design System e docs gerados |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Onde buscar cada informação
|
|
18
|
+
|
|
19
|
+
### Regras e Padrões → `@forlogic-docs`
|
|
20
|
+
|
|
21
|
+
| O que | Caminho |
|
|
22
|
+
|-------|---------|
|
|
23
|
+
| Constituição (regras canônicas) | `docs/engenharia/padroes/constitution.md` |
|
|
24
|
+
| Guia de migração de ícones | `docs/engenharia/padroes/icon-migration.md` |
|
|
25
|
+
| Guia de publicação da lib | `docs/engenharia/devops/publish.md` |
|
|
26
|
+
| Prompt: auditoria | `docs/templates/prompts/audit.md` |
|
|
27
|
+
| Prompt: criação de tela | `docs/templates/prompts/new-screen.md` |
|
|
28
|
+
| Prompt: starter template | `docs/templates/prompts/starter.md` |
|
|
29
|
+
| ADRs (decisões de arquitetura) | `docs/adrs/` |
|
|
30
|
+
| Specs de API | `docs/apis/` |
|
|
31
|
+
|
|
32
|
+
### Código-fonte e Design System → `@Admin`
|
|
33
|
+
|
|
34
|
+
| O que | Caminho |
|
|
35
|
+
|-------|---------|
|
|
36
|
+
| Código dos componentes UI | `lib/components/ui/` |
|
|
37
|
+
| Sistema CRUD | `lib/crud/` |
|
|
38
|
+
| Barrel exports (lista completa) | `lib/exports/ui.ts`, `lib/exports/index.ts` |
|
|
39
|
+
| Documentação MD do Design System | `docs/design-system/` |
|
|
40
|
+
| Golden snippets (exemplos) | `docs/design-system/examples.md` |
|
|
41
|
+
| Docs interativos (código-fonte) | `src/design-system/docs/` |
|
|
42
|
+
| Hooks compartilhados | `lib/hooks/` |
|
|
43
|
+
| Providers (CoreProviders) | `lib/providers/` |
|
|
44
|
+
| Serviços (Base, Email, Error) | `lib/services/` |
|
|
45
|
+
| Config Vite/Tailwind | `lib/vite/`, `lib/tailwind/` |
|
|
46
|
+
| Spec do módulo Queries | `spec/queries.md` |
|
|
47
|
+
| Inventário de Supabase Storage | `docs/STORAGE_BUCKETS.md` |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Schema do Projeto
|
|
52
|
+
|
|
53
|
+
> ⚠️ **O schema é definido no `README.md` de cada projeto consumidor.** Consulte-o antes de qualquer query.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
// ✅ CORRETO — substituir pelo schema do projeto
|
|
57
|
+
supabase.schema('SCHEMA_DO_PROJETO').from('tabela').select('*');
|
|
58
|
+
|
|
59
|
+
// ❌ ERRADO
|
|
60
|
+
supabase.from('tabela').select('*');
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Regras Invioláveis (resumo)
|
|
66
|
+
|
|
67
|
+
> Fonte canônica: `@forlogic-docs docs/engenharia/padroes/constitution.md`
|
|
68
|
+
|
|
69
|
+
| Regra | Detalhe |
|
|
70
|
+
|-------|---------|
|
|
71
|
+
| Schema obrigatório | `.schema('...')` em toda query Supabase |
|
|
72
|
+
| Sem DELETE físico | Soft delete com `deleted_at` |
|
|
73
|
+
| **Sem acesso anon** | RLS policies devem usar `TO authenticated` — **nunca** conceder acesso ao role `anon` sem justificativa documentada |
|
|
74
|
+
| Lib-first | Usar `forlogic-core` antes de criar componente |
|
|
75
|
+
| Import do Supabase | `getSupabaseClient()` de `forlogic-core` |
|
|
76
|
+
| Import de i18n | `useTranslation` de `forlogic-core`, nunca de `react-i18next` |
|
|
77
|
+
| Sem hardcoded admin | Nunca localStorage/sessionStorage para roles |
|
|
78
|
+
| **PK Override** | `VITE_SUPABASE_PK_OVERRIDE` **obrigatória** no `.env` — nunca remover. Ver `@Admin docs/design-system/patterns/feature-flags.md` |
|
|
79
|
+
|
|
80
|
+
### Política de acesso `anon` no Supabase
|
|
81
|
+
|
|
82
|
+
**Por padrão, nenhuma tabela, function ou storage policy deve conceder acesso ao role `anon`.**
|
|
83
|
+
|
|
84
|
+
Todas as policies devem usar `TO authenticated` e validar o JWT do tenant:
|
|
85
|
+
|
|
86
|
+
```sql
|
|
87
|
+
-- ✅ CORRETO
|
|
88
|
+
CREATE POLICY "select" ON schema.tabela
|
|
89
|
+
FOR SELECT TO authenticated
|
|
90
|
+
USING (((SELECT auth.jwt()) ->> 'alias'::text) = alias);
|
|
91
|
+
|
|
92
|
+
-- ❌ ERRADO — nunca usar anon
|
|
93
|
+
CREATE POLICY "select" ON schema.tabela
|
|
94
|
+
FOR SELECT TO anon, authenticated
|
|
95
|
+
USING (true);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Exceções são permitidas apenas quando:**
|
|
99
|
+
|
|
100
|
+
1. A funcionalidade é **intencionalmente pública** (ex: validação de certificado, página de candidatura externa)
|
|
101
|
+
2. A exceção está **documentada na migration SQL** com comentário `-- ANON: <motivo>`
|
|
102
|
+
3. A exceção está **registrada no `@security-memory`** do projeto
|
|
103
|
+
|
|
104
|
+
**Funções `SECURITY DEFINER`:** por padrão, revogar permissão de `anon`:
|
|
105
|
+
|
|
106
|
+
```sql
|
|
107
|
+
REVOKE EXECUTE ON FUNCTION schema.minha_funcao FROM anon;
|
|
108
|
+
-- Manter apenas authenticated
|
|
109
|
+
GRANT EXECUTE ON FUNCTION schema.minha_funcao TO authenticated;
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Design System — Categorias
|
|
115
|
+
|
|
116
|
+
> Para ver props e exemplos: `@Admin docs/design-system/<arquivo>.md`
|
|
117
|
+
|
|
118
|
+
| Categoria | Arquivo |
|
|
119
|
+
|-----------|---------|
|
|
120
|
+
| Fundação | `foundation.md` |
|
|
121
|
+
| Botões & Ações | `buttons-actions.md` |
|
|
122
|
+
| Inputs | `inputs.md` |
|
|
123
|
+
| Seletores | `selectors.md` |
|
|
124
|
+
| Data Display | `data-display.md` |
|
|
125
|
+
| Data Grid | `tables-grids.md` |
|
|
126
|
+
| Navegação | `navigation.md` |
|
|
127
|
+
| Dialogs | `dialogs.md` |
|
|
128
|
+
| Layout | `layout.md` |
|
|
129
|
+
| CRUD | `crud.md` |
|
|
130
|
+
|
|
131
|
+
### Aliases
|
|
132
|
+
|
|
133
|
+
| Original | Alias(es) |
|
|
134
|
+
|----------|-----------|
|
|
135
|
+
| Combobox | SelectSearch, MultiSelect, EntitySelect |
|
|
136
|
+
| ComboTree | TreeSelect |
|
|
137
|
+
| ActionButton | ActionMenu, RowActions |
|
|
138
|
+
| CrudPrimitiveTable | DataTable |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Instrução para IA — Leitura Obrigatória
|
|
143
|
+
|
|
144
|
+
**QUANDO** criar ou modificar qualquer arquivo `.tsx`:
|
|
145
|
+
|
|
146
|
+
- **SE** contém tabela/CRUD → **LER** `@Admin docs/design-system/crud.md` ANTES
|
|
147
|
+
- **SE** contém formulário → **LER** `@Admin docs/design-system/inputs.md` ANTES
|
|
148
|
+
- **SE** contém modal → **LER** `@Admin docs/design-system/dialogs.md` ANTES
|
|
149
|
+
- **SE** contém botões/ações → **LER** `@Admin docs/design-system/buttons-actions.md` ANTES
|
|
150
|
+
- **SE** é layout → **LER** `@Admin docs/design-system/layout.md` ANTES
|
|
151
|
+
|
|
152
|
+
**SEMPRE** consultar `@Admin docs/design-system/examples.md` como referência.
|
|
153
|
+
|
|
154
|
+
**VALIDAÇÃO**: Todo import de componente visual DEVE vir de `forlogic-core`.
|