@oondemand/create-central-oon 0.5.6 → 0.6.0

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 (70) hide show
  1. package/README.md +41 -89
  2. package/bin/cli.js +4 -17
  3. package/docs/ADVANCED_UX_PATTERNS.md +3 -2
  4. package/docs/AGENTS.md +3 -4
  5. package/docs/BACKEND_API.md +2 -4
  6. package/docs/BACKEND_PATTERNS.md +1 -2
  7. package/docs/BACKEND_PROCESS_MANIFEST.md +6 -6
  8. package/docs/CAPABILITIES.md +2 -3
  9. package/docs/CHECKLIST_IMPLEMENTACAO.md +4 -4
  10. package/docs/FRONTEND_API.md +20 -23
  11. package/docs/FRONTEND_CODE_FIRST.md +35 -0
  12. package/docs/FRONTEND_PATTERNS.md +13 -15
  13. package/docs/METADATA_CRUD_UI.md +1 -1
  14. package/docs/PORTAL_COCKPIT_PATTERNS.md +10 -145
  15. package/docs/REACTIVE_DOMAIN_FORMULAS.md +2 -2
  16. package/package.json +1 -1
  17. package/schemas/central.app.schema.json +2 -16
  18. package/src/conformance.js +42 -106
  19. package/src/index.js +4 -28
  20. package/src/render.js +4 -30
  21. package/templates/_base/README.md +7 -6
  22. package/templates/_base/backend/package.json +1 -1
  23. package/templates/_base/central.app.json +4 -9
  24. package/templates/_base/frontend/package.json +1 -1
  25. package/templates/_base/frontend/src/app/app.tsx +25 -0
  26. package/templates/_base/frontend/src/app/navigation.ts +5 -0
  27. package/templates/_base/frontend/src/app/routes.tsx +6 -0
  28. package/templates/_base/frontend/src/app/theme.ts +8 -0
  29. package/templates/_base/frontend/src/components/gitkeep +1 -0
  30. package/templates/_base/frontend/src/features/gitkeep +1 -0
  31. package/templates/_base/frontend/src/layouts/gitkeep +1 -0
  32. package/templates/_base/frontend/src/main.tsx +3 -8
  33. package/templates/_base/frontend/src/pages/HomePage.tsx +25 -0
  34. package/templates/_base/frontend/tsconfig.json +1 -1
  35. package/templates/_base/package.json +1 -1
  36. package/docs/CONNECTORS_AND_INTEGRATIONS.md +0 -66
  37. package/docs/FRONTEND_MANIFEST_REFERENCE.md +0 -487
  38. package/templates/_base/backend/src/integrations/gitkeep +0 -0
  39. package/templates/_base/frontend/central.ui.json +0 -58
  40. package/templates/_base/frontend/src/collections/gitkeep +0 -0
  41. package/templates/_base/frontend/src/dashboards/gitkeep +0 -0
  42. package/templates/_base/frontend/src/documents/gitkeep +0 -0
  43. package/templates/_base/frontend/src/overrides/gitkeep +0 -0
  44. package/templates/_base/frontend/src/pipelines/gitkeep +0 -0
  45. package/templates/basic/backend/src/models/Pessoa.js +0 -21
  46. package/templates/basic/frontend/central.ui.json +0 -8
  47. package/templates/documentos-fiscais/backend/central.config.js +0 -32
  48. package/templates/documentos-fiscais/backend/src/models/DocumentoFiscal.js +0 -23
  49. package/templates/documentos-fiscais/frontend/central.ui.json +0 -16
  50. package/templates/multi-moedas/backend/central.config.js +0 -32
  51. package/templates/multi-moedas/backend/src/models/Cotacao.js +0 -23
  52. package/templates/multi-moedas/backend/src/models/Moeda.js +0 -15
  53. package/templates/multi-moedas/frontend/central.ui.json +0 -11
  54. package/templates/omie-sidecar/backend/central.config.js +0 -33
  55. package/templates/omie-sidecar/backend/src/mappings/pessoa-cliente.js +0 -20
  56. package/templates/omie-sidecar/backend/src/models/Pessoa.js +0 -24
  57. package/templates/omie-sidecar/backend/src/triggers/Pessoa.js +0 -14
  58. package/templates/omie-sidecar/frontend/central.ui.json +0 -8
  59. package/templates/pedidos-marketplace/backend/central.config.js +0 -32
  60. package/templates/pedidos-marketplace/backend/src/models/Pedido.js +0 -22
  61. package/templates/pedidos-marketplace/backend/src/models/Produto.js +0 -16
  62. package/templates/pedidos-marketplace/frontend/central.ui.json +0 -10
  63. package/templates/servicos-prestados/backend/central.config.js +0 -32
  64. package/templates/servicos-prestados/backend/src/models/Cliente.js +0 -15
  65. package/templates/servicos-prestados/backend/src/models/ServicoPrestado.js +0 -22
  66. package/templates/servicos-prestados/frontend/central.ui.json +0 -10
  67. package/templates/servicos-tomados/backend/central.config.js +0 -32
  68. package/templates/servicos-tomados/backend/src/models/Pessoa.js +0 -15
  69. package/templates/servicos-tomados/backend/src/models/Servico.js +0 -22
  70. package/templates/servicos-tomados/frontend/central.ui.json +0 -10
@@ -1,58 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": {
4
- "metadataUrl": "/core/metadata"
5
- },
6
- "navigation": {
7
- "mode": "auto"
8
- },
9
- "pages": [
10
- {
11
- "path": "/",
12
- "label": "Início",
13
- "title": "Boas-vindas ao __NAME__",
14
- "order": 10,
15
- "blocks": [
16
- {
17
- "type": "markdown",
18
- "content": "Seu oon-app já está pronto para receber o domínio da solução. Esta Home é declarativa e renderizada pelo OonCore."
19
- },
20
- {
21
- "type": "section",
22
- "title": "O que o OonCore já entrega",
23
- "description": "A base técnica comum está pronta para você concentrar a implementação nas regras do negócio.",
24
- "blocks": [
25
- {
26
- "type": "markdown",
27
- "content": "• Autenticação integrada, sessão e contexto do tenant.\n• Shell responsivo, navegação, roteamento e estados de carregamento e erro.\n• RBAC, catálogo de perfis e gestão de Usuários e Acessos.\n• Metadata, CRUD, formulários, tabelas, filtros, dashboards e esteiras declarativas.\n• Contratos para documentos, integrações, auditoria, validação e observabilidade."
28
- }
29
- ]
30
- },
31
- {
32
- "type": "section",
33
- "title": "O que a Plataforma Oon entrega",
34
- "description": "O ciclo operacional do app permanece governado pela plataforma.",
35
- "blocks": [
36
- {
37
- "type": "markdown",
38
- "content": "• Repositório GitHub privado e código-fonte versionado.\n• Publicação automática em Dev a partir da branch main.\n• Ambiente isolado com aplicação, banco de dados, URL pública, certificado e secrets.\n• Acompanhamento no Workspace e no Meus Apps, com promoção controlada entre ambientes.\n• Documentação técnica e funcional centralizada no Oon Docs."
39
- }
40
- ]
41
- },
42
- {
43
- "type": "section",
44
- "title": "Próximos passos",
45
- "blocks": [
46
- {
47
- "type": "markdown",
48
- "content": "1. Rode npm install e npm run ooncore:docs para sincronizar a documentação local.\n2. Leia .ooncore/AGENTS.md e o contexto da versão instalada.\n3. Modele o domínio em backend/src/models e declare as telas em frontend/central.ui.json.\n4. Acrescente permissões de negócio e distribua-as entre os perfis no central.app.json.\n5. Rode npm run check, publique o repositório e acompanhe o ambiente de Dev."
49
- }
50
- ]
51
- }
52
- ]
53
- }
54
- ],
55
- "collections": [],
56
- "pipelines": [],
57
- "documents": []
58
- }
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,21 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Pessoa — domínio puro: só schema + CRUD. Auth, RBAC, paginação, auditoria e
5
- * metadata vêm do Core. A tela é renderizada pelo front a partir da metadata.
6
- */
7
- defineModel({
8
- name: "Pessoa",
9
- singular: "pessoa",
10
- basePath: "/pessoas",
11
- schema: {
12
- nome: fields.string({ required: true, label: "Nome" }),
13
- email: fields.string({ label: "E-mail" }),
14
- documento: fields.string({ label: "Documento" }),
15
- tipo: fields.enum(["pf", "pj"], { label: "Tipo", default: "pf" }),
16
- status: fields.enum(["ativo", "inativo"], { label: "Status", default: "ativo" }),
17
- },
18
- // A ativação de desenvolvimento concede o perfil "desenvolvedor".
19
- // O papel "admin" permanece autorizado globalmente pelo RBAC do Core.
20
- crud: { enabled: true, roles: { write: ["desenvolvedor"] } },
21
- });
@@ -1,8 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [{ "model": "Pessoa", "mode": "dynamic" }],
6
- "pipelines": [],
7
- "documents": []
8
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Central __NAME__ — template documentos-fiscais. Liga o módulo de documentos
3
- * do Core (aprovação, anexos, status).
4
- */
5
- module.exports = {
6
- ecosystem: { role: "member" },
7
- activation: { enabled: true, configurationVersion: 1, fields: [] },
8
- name: "__NAME__",
9
- slug: "__SLUG__",
10
-
11
- modules: {
12
- collections: true,
13
- documents: true,
14
- pipelines: false,
15
- integrations: false,
16
- omie: false,
17
- assistants: false,
18
- currencies: false,
19
- },
20
-
21
- domain: {
22
- models: "src/models",
23
- validations: "src/validations",
24
- triggers: "src/triggers",
25
- hooks: "src/hooks",
26
- mappings: "src/mappings",
27
- documents: "src/documents",
28
- pipelines: "src/pipelines",
29
- integrations: "src/integrations",
30
- routes: "src/routes",
31
- },
32
- };
@@ -1,23 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Documento fiscal com fluxo de aprovação. O front (CoreDocument) usa o
5
- * `status` para badge e as actions RESTful approve/reject do Core.
6
- */
7
- defineModel({
8
- name: "DocumentoFiscal",
9
- singular: "documentoFiscal",
10
- basePath: "/documentos-fiscais",
11
- schema: {
12
- numero: fields.string({ required: true, label: "Número" }),
13
- tipo: fields.enum(["nfe", "nfse", "nfce", "outro"], { label: "Tipo", default: "nfe" }),
14
- emitente: fields.string({ label: "Emitente" }),
15
- valor: fields.currency({ label: "Valor" }),
16
- dataEmissao: fields.date({ label: "Emissão" }),
17
- status: fields.enum(["pendente", "aprovado", "reprovado"], {
18
- default: "pendente",
19
- label: "Status",
20
- }),
21
- },
22
- crud: { enabled: true, roles: { write: ["admin"] } },
23
- });
@@ -1,16 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [],
6
- "pipelines": [],
7
- "documents": [
8
- {
9
- "model": "DocumentoFiscal",
10
- "label": "Documentos fiscais",
11
- "approval": true,
12
- "attachments": true,
13
- "section": "Fiscal"
14
- }
15
- ]
16
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Central __NAME__ — template multi-moedas. Liga o módulo de moedas do Core
3
- * (cotações, conversão).
4
- */
5
- module.exports = {
6
- ecosystem: { role: "member" },
7
- activation: { enabled: true, configurationVersion: 1, fields: [] },
8
- name: "__NAME__",
9
- slug: "__SLUG__",
10
-
11
- modules: {
12
- collections: true,
13
- documents: false,
14
- pipelines: false,
15
- integrations: false,
16
- omie: false,
17
- assistants: false,
18
- currencies: true,
19
- },
20
-
21
- domain: {
22
- models: "src/models",
23
- validations: "src/validations",
24
- triggers: "src/triggers",
25
- hooks: "src/hooks",
26
- mappings: "src/mappings",
27
- documents: "src/documents",
28
- pipelines: "src/pipelines",
29
- integrations: "src/integrations",
30
- routes: "src/routes",
31
- },
32
- };
@@ -1,23 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Cotação em moeda estrangeira com valor convertido para BRL. Mostra os
5
- * helpers `fields.currency*` do módulo Multi-moedas.
6
- */
7
- defineModel({
8
- name: "Cotacao",
9
- singular: "cotacao",
10
- basePath: "/cotacoes",
11
- schema: {
12
- descricao: fields.string({ required: true, label: "Descrição" }),
13
- valor: fields.currency({ label: "Valor" }),
14
- moeda: fields.currencyCode({ label: "Moeda" }),
15
- valorConvertido: fields.currencyConverted({ base: "BRL", label: "Valor (BRL)" }),
16
- validade: fields.date({ label: "Validade" }),
17
- status: fields.enum(["rascunho", "enviada", "aprovada", "recusada"], {
18
- default: "rascunho",
19
- label: "Status",
20
- }),
21
- },
22
- crud: { enabled: true, roles: { write: ["admin"] } },
23
- });
@@ -1,15 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /** Moeda com cotação corrente (atualizada via action do módulo currencies). */
4
- defineModel({
5
- name: "Moeda",
6
- singular: "moeda",
7
- basePath: "/moedas",
8
- schema: {
9
- codigo: fields.currencyCode({ required: true, label: "Código" }),
10
- nome: fields.string({ required: true, label: "Nome" }),
11
- cotacao: fields.number({ label: "Cotação (BRL)", default: 1 }),
12
- ativa: fields.boolean({ label: "Ativa", default: true }),
13
- },
14
- crud: { enabled: true, roles: { write: ["admin"] } },
15
- });
@@ -1,11 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [
6
- { "model": "Moeda", "mode": "dynamic", "section": "Multi-moedas" },
7
- { "model": "Cotacao", "mode": "dynamic", "section": "Multi-moedas" }
8
- ],
9
- "pipelines": [],
10
- "documents": []
11
- }
@@ -1,33 +0,0 @@
1
- /**
2
- * Central __NAME__ — template omie-sidecar. Liga os módulos de integração e
3
- * Omie do Core. O engine de Omie (chaves, fila, retries) vive no Core; aqui só
4
- * declaramos o mapping de domínio.
5
- */
6
- module.exports = {
7
- ecosystem: { role: "member" },
8
- activation: { enabled: true, configurationVersion: 1, fields: [] },
9
- name: "__NAME__",
10
- slug: "__SLUG__",
11
-
12
- modules: {
13
- collections: true,
14
- documents: false,
15
- pipelines: false,
16
- integrations: true,
17
- omie: true,
18
- assistants: false,
19
- currencies: false,
20
- },
21
-
22
- domain: {
23
- models: "src/models",
24
- validations: "src/validations",
25
- triggers: "src/triggers",
26
- hooks: "src/hooks",
27
- mappings: "src/mappings",
28
- documents: "src/documents",
29
- pipelines: "src/pipelines",
30
- integrations: "src/integrations",
31
- routes: "src/routes",
32
- },
33
- };
@@ -1,20 +0,0 @@
1
- const { defineOmieMapping } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Mapping de domínio Pessoa -> Cliente Omie. `toOmie` traduz o payload do
5
- * domínio na chamada da API Omie. O engine (chaves, fila, retries) é do Core.
6
- */
7
- defineOmieMapping("pessoa-cliente", {
8
- toOmie: (pessoa) => ({
9
- endpoint: "geral/clientes/",
10
- call: "IncluirCliente",
11
- param: [
12
- {
13
- codigo_cliente_integracao: String(pessoa.idPessoa || pessoa._id || ""),
14
- razao_social: pessoa.nome,
15
- email: pessoa.email,
16
- cnpj_cpf: pessoa.documento,
17
- },
18
- ],
19
- }),
20
- });
@@ -1,24 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Pessoa/Cliente sincronizada com a Omie. Os campos de sincronização são
5
- * preenchidos pelo Core via o mapping declarado em src/mappings.
6
- */
7
- defineModel({
8
- name: "Pessoa",
9
- singular: "pessoa",
10
- basePath: "/pessoas",
11
- schema: {
12
- nome: fields.string({ required: true, label: "Nome" }),
13
- email: fields.string({ label: "E-mail" }),
14
- documento: fields.string({ label: "Documento" }),
15
- tipo: fields.enum(["pf", "pj"], { label: "Tipo", default: "pf" }),
16
- codigo_cliente_omie: fields.string({ searchable: false, label: "Código Omie" }),
17
- status_sincronizacao_omie: fields.enum(["pendente", "sucesso", "erro"], {
18
- default: "pendente",
19
- label: "Sync Omie",
20
- }),
21
- status: fields.enum(["ativo", "inativo"], { label: "Status", default: "ativo" }),
22
- },
23
- crud: { enabled: true, roles: { write: ["admin"] } },
24
- });
@@ -1,14 +0,0 @@
1
- const { defineTrigger, omie } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Após criar/alterar uma Pessoa, enfileira o sync com a Omie usando o mapping
5
- * declarado. No-op seguro se a Omie não estiver configurada (sem app_key).
6
- */
7
- defineTrigger("Pessoa", {
8
- after: async (doc) => {
9
- await omie.sync({
10
- mapping: "pessoa-cliente",
11
- payload: { idPessoa: String(doc._id), nome: doc.nome, email: doc.email, documento: doc.documento },
12
- });
13
- },
14
- });
@@ -1,8 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [{ "model": "Pessoa", "mode": "dynamic", "section": "Cadastros" }],
6
- "pipelines": [],
7
- "documents": []
8
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Central __NAME__ — template pedidos-marketplace. Catálogo de produtos +
3
- * esteira de pedidos.
4
- */
5
- module.exports = {
6
- ecosystem: { role: "member" },
7
- activation: { enabled: true, configurationVersion: 1, fields: [] },
8
- name: "__NAME__",
9
- slug: "__SLUG__",
10
-
11
- modules: {
12
- collections: true,
13
- documents: false,
14
- pipelines: true,
15
- integrations: false,
16
- omie: false,
17
- assistants: false,
18
- currencies: false,
19
- },
20
-
21
- domain: {
22
- models: "src/models",
23
- validations: "src/validations",
24
- triggers: "src/triggers",
25
- hooks: "src/hooks",
26
- mappings: "src/mappings",
27
- documents: "src/documents",
28
- pipelines: "src/pipelines",
29
- integrations: "src/integrations",
30
- routes: "src/routes",
31
- },
32
- };
@@ -1,22 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Pedido do marketplace. O campo `status` define as colunas da esteira de
5
- * fulfillment renderizada pelo front (CorePipeline).
6
- */
7
- defineModel({
8
- name: "Pedido",
9
- singular: "pedido",
10
- basePath: "/pedidos",
11
- schema: {
12
- numero: fields.string({ required: true, label: "Número" }),
13
- cliente: fields.string({ label: "Cliente" }),
14
- total: fields.currency({ label: "Total" }),
15
- dataPedido: fields.date({ label: "Data" }),
16
- status: fields.enum(
17
- ["novo", "pago", "separacao", "enviado", "entregue", "cancelado"],
18
- { default: "novo", label: "Status" }
19
- ),
20
- },
21
- crud: { enabled: true, roles: { write: ["admin"] } },
22
- });
@@ -1,16 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /** Produto do catálogo do marketplace. */
4
- defineModel({
5
- name: "Produto",
6
- singular: "produto",
7
- basePath: "/produtos",
8
- schema: {
9
- nome: fields.string({ required: true, label: "Produto" }),
10
- sku: fields.string({ label: "SKU" }),
11
- preco: fields.currency({ label: "Preço" }),
12
- estoque: fields.number({ label: "Estoque", default: 0 }),
13
- status: fields.enum(["ativo", "inativo"], { label: "Status", default: "ativo" }),
14
- },
15
- crud: { enabled: true, roles: { write: ["admin"] } },
16
- });
@@ -1,10 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [{ "model": "Produto", "mode": "dynamic", "section": "Catálogo" }],
6
- "pipelines": [
7
- { "model": "Pedido", "label": "Pedidos", "stageField": "status", "section": "Operação" }
8
- ],
9
- "documents": []
10
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Central __NAME__ — template servicos-prestados. Esteira de acompanhamento
3
- * dos serviços prestados ao cliente.
4
- */
5
- module.exports = {
6
- ecosystem: { role: "member" },
7
- activation: { enabled: true, configurationVersion: 1, fields: [] },
8
- name: "__NAME__",
9
- slug: "__SLUG__",
10
-
11
- modules: {
12
- collections: true,
13
- documents: false,
14
- pipelines: true,
15
- integrations: false,
16
- omie: false,
17
- assistants: false,
18
- currencies: false,
19
- },
20
-
21
- domain: {
22
- models: "src/models",
23
- validations: "src/validations",
24
- triggers: "src/triggers",
25
- hooks: "src/hooks",
26
- mappings: "src/mappings",
27
- documents: "src/documents",
28
- pipelines: "src/pipelines",
29
- integrations: "src/integrations",
30
- routes: "src/routes",
31
- },
32
- };
@@ -1,15 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /** Cliente a quem os serviços são prestados. */
4
- defineModel({
5
- name: "Cliente",
6
- singular: "cliente",
7
- basePath: "/clientes",
8
- schema: {
9
- nome: fields.string({ required: true, label: "Nome" }),
10
- email: fields.string({ label: "E-mail" }),
11
- documento: fields.string({ label: "Documento" }),
12
- status: fields.enum(["ativo", "inativo"], { label: "Status", default: "ativo" }),
13
- },
14
- crud: { enabled: true, roles: { write: ["admin"] } },
15
- });
@@ -1,22 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Serviço prestado a um Cliente. O campo `etapa` define as colunas da esteira
5
- * renderizada pelo front (CorePipeline).
6
- */
7
- defineModel({
8
- name: "ServicoPrestado",
9
- singular: "servicoPrestado",
10
- basePath: "/servicos-prestados",
11
- schema: {
12
- descricao: fields.string({ required: true, label: "Descrição" }),
13
- cliente: fields.ref("Cliente", { required: true, label: "Cliente" }),
14
- valor: fields.currency({ label: "Valor" }),
15
- dataInicio: fields.date({ label: "Início" }),
16
- etapa: fields.enum(["proposta", "em-execucao", "entregue", "faturado", "cancelado"], {
17
- default: "proposta",
18
- label: "Etapa",
19
- }),
20
- },
21
- crud: { enabled: true, roles: { write: ["admin"] } },
22
- });
@@ -1,10 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [{ "model": "Cliente", "mode": "dynamic", "section": "Cadastros" }],
6
- "pipelines": [
7
- { "model": "ServicoPrestado", "label": "Serviços prestados", "stageField": "etapa", "section": "Operação" }
8
- ],
9
- "documents": []
10
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Central __NAME__ — template servicos-tomados. Liga o módulo de esteiras
3
- * (pipelines) do Core para acompanhar o processamento dos serviços.
4
- */
5
- module.exports = {
6
- ecosystem: { role: "member" },
7
- activation: { enabled: true, configurationVersion: 1, fields: [] },
8
- name: "__NAME__",
9
- slug: "__SLUG__",
10
-
11
- modules: {
12
- collections: true,
13
- documents: false,
14
- pipelines: true,
15
- integrations: false,
16
- omie: false,
17
- assistants: false,
18
- currencies: false,
19
- },
20
-
21
- domain: {
22
- models: "src/models",
23
- validations: "src/validations",
24
- triggers: "src/triggers",
25
- hooks: "src/hooks",
26
- mappings: "src/mappings",
27
- documents: "src/documents",
28
- pipelines: "src/pipelines",
29
- integrations: "src/integrations",
30
- routes: "src/routes",
31
- },
32
- };
@@ -1,15 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /** Prestador de serviço. */
4
- defineModel({
5
- name: "Pessoa",
6
- singular: "pessoa",
7
- basePath: "/pessoas",
8
- schema: {
9
- nome: fields.string({ required: true, label: "Nome" }),
10
- email: fields.string({ label: "E-mail" }),
11
- documento: fields.string({ label: "Documento" }),
12
- status: fields.enum(["ativo", "inativo"], { label: "Status", default: "ativo" }),
13
- },
14
- crud: { enabled: true, roles: { write: ["admin"] } },
15
- });
@@ -1,22 +0,0 @@
1
- const { defineModel, fields } = require("@oondemand/oon-core-back");
2
-
3
- /**
4
- * Serviço tomado, vinculado a uma Pessoa. O campo `statusProcessamento` define
5
- * as colunas da esteira renderizada pelo front (CorePipeline).
6
- */
7
- defineModel({
8
- name: "Servico",
9
- singular: "servico",
10
- basePath: "/servicos",
11
- schema: {
12
- descricao: fields.string({ required: true, label: "Descrição" }),
13
- pessoa: fields.ref("Pessoa", { required: true, label: "Prestador" }),
14
- valor: fields.currency({ label: "Valor" }),
15
- dataContratacao: fields.date({ label: "Contratação" }),
16
- statusProcessamento: fields.enum(
17
- ["aberto", "pendente", "processando", "pago", "cancelado"],
18
- { default: "aberto", label: "Etapa" }
19
- ),
20
- },
21
- crud: { enabled: true, roles: { write: ["admin"] } },
22
- });
@@ -1,10 +0,0 @@
1
- {
2
- "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
5
- "collections": [{ "model": "Pessoa", "label": "Prestadores", "mode": "dynamic", "section": "Cadastros" }],
6
- "pipelines": [
7
- { "model": "Servico", "label": "Serviços tomados", "stageField": "statusProcessamento", "section": "Operação" }
8
- ],
9
- "documents": []
10
- }