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.
Files changed (69) hide show
  1. package/.note/memory/features/import/attachment-idempotency-registry.md +8 -8
  2. package/.note/memory/features/import/attachment-strategy.md +30 -30
  3. package/.note/memory/patterns/admin-i18n-policy.md +20 -20
  4. package/.note/memory/patterns/alias-url-resolution.md +69 -69
  5. package/.note/memory/patterns/doc-sync-rule.md +35 -35
  6. package/.note/memory/patterns/documentation-standard.md +17 -17
  7. package/.note/memory/patterns/dynamic-supabase-config.md +4 -4
  8. package/.note/memory/patterns/environment-detection-logic.md +35 -35
  9. package/.note/memory/patterns/i18n-architecture.md +3 -3
  10. package/README.md +120 -120
  11. package/dist/README.md +1079 -0
  12. package/dist/bin/bootstrap.js +40 -0
  13. package/dist/bin/pull-docs.js +186 -0
  14. package/dist/components/ui/color-picker.d.ts +2 -0
  15. package/dist/components/ui/combo-tree.d.ts +3 -1
  16. package/dist/components/ui/combobox.d.ts +2 -1
  17. package/dist/components/ui/select.d.ts +9 -2
  18. package/dist/docs/KNOWLEDGE.md +109 -0
  19. package/dist/index.css +1 -1
  20. package/dist/index.css.map +1 -1
  21. package/dist/index.esm.js +1 -1
  22. package/dist/index.js +1 -1
  23. package/docs/PUBLISH.md +168 -168
  24. package/docs/STORAGE_BUCKETS.md +456 -456
  25. package/docs/SUPABASE_SECRETS.md +122 -122
  26. package/docs/WORKSPACE_KNOWLEDGE.md +154 -154
  27. package/docs/design-system/buttons-actions.md +130 -130
  28. package/docs/design-system/charts-dashboards.md +301 -340
  29. package/docs/design-system/crud.md +114 -174
  30. package/docs/design-system/data-display.md +106 -106
  31. package/docs/design-system/dialogs.md +212 -212
  32. package/docs/design-system/domain.md +329 -319
  33. package/docs/design-system/examples.md +275 -275
  34. package/docs/design-system/foundation.md +1 -1
  35. package/docs/design-system/inputs.md +137 -132
  36. package/docs/design-system/layout.md +154 -202
  37. package/docs/design-system/navigation.md +331 -272
  38. package/docs/design-system/notifications-feedback.md +34 -34
  39. package/docs/design-system/patterns/README.md +53 -53
  40. package/docs/design-system/patterns/action-button.md +22 -22
  41. package/docs/design-system/patterns/alertdialog-deletion.md +46 -46
  42. package/docs/design-system/patterns/baseform-custom-fields.md +59 -59
  43. package/docs/design-system/patterns/baseform-usage.md +42 -42
  44. package/docs/design-system/patterns/body-content-scroll.md +56 -56
  45. package/docs/design-system/patterns/combo-tree.md +23 -23
  46. package/docs/design-system/patterns/components-registry.md +17 -17
  47. package/docs/design-system/patterns/core-providers.md +41 -41
  48. package/docs/design-system/patterns/crud-bulk-actions.md +12 -12
  49. package/docs/design-system/patterns/crud-config-props.md +16 -16
  50. package/docs/design-system/patterns/crud-defaults.md +17 -17
  51. package/docs/design-system/patterns/crud-toolbar.md +28 -28
  52. package/docs/design-system/patterns/delete-confirmation.md +40 -40
  53. package/docs/design-system/patterns/dialog-body-scroll.md +26 -26
  54. package/docs/design-system/patterns/dialog-structure.md +32 -32
  55. package/docs/design-system/patterns/dialog-variants.md +41 -41
  56. package/docs/design-system/patterns/feature-flags.md +81 -81
  57. package/docs/design-system/patterns/header-metadata.md +57 -57
  58. package/docs/design-system/patterns/i18n-setup.md +117 -117
  59. package/docs/design-system/patterns/pagination.md +27 -27
  60. package/docs/design-system/patterns/single-scroll.md +39 -39
  61. package/docs/design-system/patterns/vite-tailwind-setup.md +49 -49
  62. package/docs/design-system/platform.md +18 -18
  63. package/docs/design-system/selectors.md +287 -258
  64. package/docs/design-system/tables-grids.md +38 -95
  65. package/package.json +152 -152
  66. package/dist/assets/docs-BEwTKYu3.css +0 -1
  67. package/dist/assets/docs-Bgpz6ETN.js +0 -10752
  68. package/dist/assets/index-SqMwTzMJ.js +0 -97
  69. package/dist/index.html +0 -34
@@ -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`.