@oondemand/create-central-oon 0.7.1 → 0.7.3
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/docs/AGENTS.md
CHANGED
|
@@ -32,6 +32,7 @@ O `AGENTS.md` da raiz pertence ao projeto e nunca pode ser sobrescrito pelo scaf
|
|
|
32
32
|
| Configurar templates ou enviar e-mail | [TRANSACTIONAL_EMAIL.md](TRANSACTIONAL_EMAIL.md), [RBAC_SECURITY.md](RBAC_SECURITY.md) |
|
|
33
33
|
| Execução local | [RUNTIME_MODES.md](RUNTIME_MODES.md), [LOCAL_DEVELOPMENT.md](LOCAL_DEVELOPMENT.md), [LOCAL_SECURITY_BOUNDARY.md](LOCAL_SECURITY_BOUNDARY.md) |
|
|
34
34
|
| Rotas, hooks, jobs e filas | [ROUTES_HOOKS_WORKERS.md](ROUTES_HOOKS_WORKERS.md), [BACKEND_PATTERNS.md](BACKEND_PATTERNS.md) |
|
|
35
|
+
| Publicação, imports e assets de runtime | [APP_PACKAGING.md](APP_PACKAGING.md) |
|
|
35
36
|
| Upgrade do Core | [CORE_UPGRADE.md](CORE_UPGRADE.md), [TESTING_CONFORMANCE.md](TESTING_CONFORMANCE.md), [releases/0.7.0.md](releases/0.7.0.md) |
|
|
36
37
|
| UX avançada | [ADVANCED_UX_PATTERNS.md](ADVANCED_UX_PATTERNS.md), [DETAIL_MODAL_AND_RELATED_GRIDS.md](DETAIL_MODAL_AND_RELATED_GRIDS.md), [PORTAL_COCKPIT_PATTERNS.md](PORTAL_COCKPIT_PATTERNS.md) |
|
|
37
38
|
|
|
@@ -54,3 +55,4 @@ npm test
|
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
Uma entrega que depende da leitura de fonte privada ou de outro App não está concluída: registre a lacuna na documentação distribuída.
|
|
58
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Empacotamento e validação da imagem do Oon-App
|
|
2
|
+
|
|
3
|
+
O contrato abaixo descreve o builder governado de delivery do OonCore. Estar no
|
|
4
|
+
checkout ou no contexto Docker **não** significa estar na imagem final.
|
|
5
|
+
|
|
6
|
+
| Origem | Destino/efeito | Contrato |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `backend/` | `/app/backend/` | Código, manifests e assets de runtime; preserva caminhos relativos |
|
|
9
|
+
| `backend/package*.json` | instalação no estágio backend | Somente dependências de produção (`--omit=dev`) |
|
|
10
|
+
| `frontend/` | compilação no estágio frontend | `npm run build`; fontes não são copiadas para o runtime |
|
|
11
|
+
| `frontend/dist/` produzido no build | `/usr/share/nginx/html/` | Artefatos estáticos compilados |
|
|
12
|
+
| `central.app.json` | `/app/central.app.json` e `/src/central.app.json` no build frontend | Quando existente |
|
|
13
|
+
| Definições em `capabilitySettings["core.transactional-email"].templates[].definition` | Mesmo caminho relativo a `/app` | Somente arquivos declarados, dentro da raiz; traversal/symlink externo rejeitado |
|
|
14
|
+
| `docs/`, `.ooncore/`, arquivos da raiz e demais diretórios | Sem cópia genérica para o runtime | Não usar como origem de imports necessários em produção |
|
|
15
|
+
| `node_modules`, `.git`, `.env*`, `.npmrc`, `*.pem`, `*.key` | Excluídos pelo builder | A instalação local não pode sobrescrever dependências de produção |
|
|
16
|
+
| `frontend/.env.production` | Entrada do build frontend | Única exceção `.env`; gerada pelo executor, sem segredos |
|
|
17
|
+
| Testes dentro de `backend/` | Podem ser copiados como qualquer arquivo backend | Não são executados no runtime; não colocar segredos em fixtures |
|
|
18
|
+
|
|
19
|
+
O `.dockerignore` do App é preservado e acrescido de exclusões obrigatórias em
|
|
20
|
+
`.oon-delivery/Dockerfile.dockerignore`. Ele pode restringir ainda mais o contexto,
|
|
21
|
+
mas não reintroduzir dependências locais ou arquivos excluídos por essas regras.
|
|
22
|
+
As extensões listadas não identificam todos os segredos possíveis: nunca versione
|
|
23
|
+
credenciais. Assets adicionais não têm um mecanismo de cópia genérica.
|
|
24
|
+
|
|
25
|
+
## Assets e dependências
|
|
26
|
+
|
|
27
|
+
Para catálogos usados por `backend/src/services/omie-contracts.js`, use por exemplo:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
backend/src/assets/omie/catalog.json
|
|
31
|
+
backend/src/assets/omie/conversion-catalog.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
const catalog = require('../assets/omie/catalog.json');
|
|
36
|
+
const conversions = require('../assets/omie/conversion-catalog.json');
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
O import `require('../../../docs/omie/catalog.json')` depende de um diretório da
|
|
40
|
+
raiz que não está na imagem; o resultado esperado é `IMAGE_MODULE_NOT_FOUND`.
|
|
41
|
+
Declare pacotes exigidos em runtime em `backend/package.json#dependencies`, não
|
|
42
|
+
apenas em `devDependencies` nem apenas no package da raiz.
|
|
43
|
+
|
|
44
|
+
## Carregamento não é cópia
|
|
45
|
+
|
|
46
|
+
O bootstrap carrega `central.config.js`, manifests declarativos do backend e os
|
|
47
|
+
arquivos `.js`/`.cjs` recursivos de `src/models`, `src/validations`, `src/triggers`,
|
|
48
|
+
`src/routes`, `src/pipelines`, `src/documents` e `src/hooks`. Outros diretórios,
|
|
49
|
+
como `src/services` e `src/assets`, entram por imports desses módulos; não são
|
|
50
|
+
autocarregados só por existirem. Não mantenha scripts executáveis de teste nos
|
|
51
|
+
diretórios de autocarregamento.
|
|
52
|
+
|
|
53
|
+
## Testes e imagem final
|
|
54
|
+
|
|
55
|
+
Se existe `scripts.test` na raiz, ele é o ponto de entrada da suíte e deve
|
|
56
|
+
orquestrar os componentes. Sem esse script, o executor roda os testes declarados
|
|
57
|
+
em backend e frontend. Não há inferência por texto de comando. Relatórios
|
|
58
|
+
registram `not_declared`, `root_orchestrated`, `not_run`, `passed` ou `failed`;
|
|
59
|
+
nenhum teste declarado não equivale a uma suíte aprovada.
|
|
60
|
+
|
|
61
|
+
Os testes usam dependências instaladas sem lifecycle scripts, em contêiner sem
|
|
62
|
+
credenciais e sem rede durante a execução. Testes que exigem serviços externos ou
|
|
63
|
+
scripts de instalação precisam ser compatibilizados com esse contrato; uma falha
|
|
64
|
+
nessa etapa não é automaticamente classificada como defeito da aplicação.
|
|
65
|
+
|
|
66
|
+
Após o build, a **mesma imagem**, identificada por ID `sha256`, é iniciada com o
|
|
67
|
+
entrypoint normal, usuário não privilegiado, filesystem de leitura, diretórios
|
|
68
|
+
temporários limitados, limites de CPU/memória/processos e timeout. MongoDB é
|
|
69
|
+
descartável. Ambos compartilham apenas loopback, sem acesso à rede externa,
|
|
70
|
+
credenciais reais, socket Docker ou mounts do host. Não há bypass de imports,
|
|
71
|
+
ativação ou permissões. Readiness deve passar em três observações consecutivas.
|
|
72
|
+
|
|
73
|
+
A morte do backend ou Nginx encerra o contêiner. Liveness consulta o backend sem
|
|
74
|
+
exigir banco saudável; readiness conserva os requisitos de banco. Perda
|
|
75
|
+
transitória do banco não deve provocar reinício só pela liveness.
|
|
76
|
+
|
|
77
|
+
Falha impede exportação da imagem para deploy; o executor não faz push,
|
|
78
|
+
provisionamento nem apply. O Workspace recebe etapa, categoria, código, caminho e
|
|
79
|
+
importador quando disponíveis e orientação. `502`/timeout isolados não comprovam
|
|
80
|
+
erro de código. O relatório não contém logs ou stack brutos.
|
|
81
|
+
|
|
82
|
+
Essa prova cobre carregamento e inicialização na configuração isolada. Não
|
|
83
|
+
substitui testes funcionais, autenticação/tenancy, integrações reais, imports
|
|
84
|
+
preguiçosos acionados somente por requisições nem a homologação Dev → HML → Prod.
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"sync:metadata": "oonCore-front sync:metadata"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@oondemand/oon-core-front": "^0.7.
|
|
14
|
+
"@oondemand/oon-core-front": "^0.7.3",
|
|
15
15
|
"@chakra-ui/react": "^3.13.0",
|
|
16
16
|
"@emotion/react": "^11.14.0",
|
|
17
17
|
"@tanstack/react-query": "^5.65.0",
|