@semacode/cli 1.5.11 → 1.5.16
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/README.md +6 -1
- package/dist/index.js +446 -32
- package/package.json +23 -32
- package/semacode-cli-1.3.1.tgz +0 -0
- package/src/angular-consumer-standalone.ts +312 -0
- package/src/cpp-symbols.ts +82 -0
- package/src/docs.ts +535 -0
- package/src/dotnet-http.ts +355 -0
- package/src/drift.ts +4933 -0
- package/src/go-http.ts +118 -0
- package/src/importador.ts +3891 -0
- package/src/index.ts +5641 -0
- package/src/java-http.ts +247 -0
- package/src/lua-symbols.ts +114 -0
- package/src/php-symbols.ts +462 -0
- package/src/projeto.ts +862 -0
- package/src/python-http.ts +258 -0
- package/src/rust-http.ts +125 -0
- package/src/tipos.ts +24 -0
- package/src/typescript-http.ts +1076 -0
- package/tsconfig.json +20 -0
- package/AGENTS.md +0 -272
- package/LICENSE +0 -22
- package/SEMA_BRIEF.curto.txt +0 -9
- package/SEMA_BRIEF.md +0 -63
- package/SEMA_BRIEF.micro.txt +0 -7
- package/SEMA_INDEX.json +0 -799
- package/dist/angular-consumer-standalone.d.ts +0 -6
- package/dist/angular-consumer-standalone.js.map +0 -1
- package/dist/cpp-symbols.d.ts +0 -10
- package/dist/cpp-symbols.js.map +0 -1
- package/dist/docs.d.ts +0 -56
- package/dist/docs.js.map +0 -1
- package/dist/dotnet-http.d.ts +0 -23
- package/dist/dotnet-http.js.map +0 -1
- package/dist/drift.d.ts +0 -225
- package/dist/drift.js.map +0 -1
- package/dist/go-http.d.ts +0 -23
- package/dist/go-http.js.map +0 -1
- package/dist/importador.d.ts +0 -31
- package/dist/importador.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/java-http.d.ts +0 -23
- package/dist/java-http.js.map +0 -1
- package/dist/lua-symbols.d.ts +0 -10
- package/dist/lua-symbols.js.map +0 -1
- package/dist/php-symbols.d.ts +0 -24
- package/dist/php-symbols.js.map +0 -1
- package/dist/projeto.d.ts +0 -53
- package/dist/projeto.js.map +0 -1
- package/dist/python-http.d.ts +0 -23
- package/dist/python-http.js.map +0 -1
- package/dist/rust-http.d.ts +0 -23
- package/dist/rust-http.js.map +0 -1
- package/dist/tipos.d.ts +0 -3
- package/dist/tipos.js.map +0 -1
- package/dist/typescript-http.d.ts +0 -35
- package/dist/typescript-http.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -102
- package/docs/cli.md +0 -110
- package/docs/como-ensinar-a-sema-para-ia.md +0 -149
- package/docs/deploy.md +0 -70
- package/docs/documentacao.md +0 -63
- package/docs/env.md +0 -56
- package/docs/extensao-vscode.md +0 -45
- package/docs/fluxo-pratico-ia-sema.md +0 -177
- package/docs/instalacao-e-primeiro-uso.md +0 -112
- package/docs/integracao-com-ia.md +0 -101
- package/docs/mcp.md +0 -53
- package/docs/pagamento-ponta-a-ponta.md +0 -155
- package/docs/persistencia-vendor-first.md +0 -145
- package/docs/prompt-base-ia-sema.md +0 -104
- package/docs/rollback.md +0 -47
- package/docs/sintaxe.md +0 -244
- package/exemplos/agendamento.sema +0 -106
- package/exemplos/assinatura.sema +0 -136
- package/exemplos/auditoria.sema +0 -88
- package/exemplos/autenticacao.sema +0 -125
- package/exemplos/automacao.sema +0 -107
- package/exemplos/cadastro_usuario.sema +0 -54
- package/exemplos/calculadora.sema +0 -78
- package/exemplos/crud_simples.sema +0 -89
- package/exemplos/estoque.sema +0 -126
- package/exemplos/exportacao.sema +0 -94
- package/exemplos/fila.sema +0 -131
- package/exemplos/integracao_externa.sema +0 -94
- package/exemplos/multi_tenant.sema +0 -140
- package/exemplos/notificacao.sema +0 -98
- package/exemplos/operacao_estrategia.sema +0 -402
- package/exemplos/pagamento.sema +0 -222
- package/exemplos/pagamento_dominio.sema +0 -35
- package/exemplos/pedido.sema +0 -119
- package/exemplos/permissao.sema +0 -121
- package/exemplos/persistencia_vendor_first.sema +0 -86
- package/exemplos/relatorio.sema +0 -93
- package/exemplos/testes_embutidos.sema +0 -45
- package/exemplos/tratamento_erro.sema +0 -157
- package/exemplos/upload_arquivo.sema +0 -93
- package/exemplos/webhook.sema +0 -96
- package/llms-full.txt +0 -34
- package/llms.txt +0 -17
- package/node_modules/@sema/gerador-css/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-css/dist/index.js +0 -592
- package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/package.json +0 -7
- package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
- package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-dart/package.json +0 -7
- package/node_modules/@sema/gerador-html/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-html/dist/index.js +0 -163
- package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-html/package.json +0 -7
- package/node_modules/@sema/gerador-javascript/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-javascript/dist/index.js +0 -421
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-javascript/package.json +0 -7
- package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
- package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-lua/package.json +0 -7
- package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
- package/node_modules/@sema/gerador-python/dist/index.js +0 -729
- package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/package.json +0 -7
- package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
- package/node_modules/@sema/gerador-typescript/dist/index.js +0 -793
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/package.json +0 -7
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -123
- package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
- package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
- package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -460
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +0 -35
- package/node_modules/@sema/nucleo/dist/index.js +0 -96
- package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -883
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -345
- package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
- package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -61
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
- package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -771
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +0 -39
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +0 -294
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -57
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1617
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
- package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
- package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
- package/node_modules/@sema/nucleo/package.json +0 -7
- package/node_modules/@sema/padroes/dist/index.d.ts +0 -25
- package/node_modules/@sema/padroes/dist/index.js +0 -316
- package/node_modules/@sema/padroes/dist/index.js.map +0 -1
- package/node_modules/@sema/padroes/package.json +0 -7
package/exemplos/pedido.sema
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
module exemplos.pedido {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Ciclo completo de pedido com itens, aprovacao e entrega."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Pedido {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
cliente_id: Id
|
|
10
|
-
status: Texto
|
|
11
|
-
total: Decimal
|
|
12
|
-
criado_em: Timestamp
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
entity ItemPedido {
|
|
17
|
-
fields {
|
|
18
|
-
id: Id
|
|
19
|
-
pedido_id: Id
|
|
20
|
-
produto_id: Id
|
|
21
|
-
quantidade: Inteiro
|
|
22
|
-
preco_unitario: Decimal
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
task criar_pedido {
|
|
27
|
-
input {
|
|
28
|
-
cliente_id: Id required
|
|
29
|
-
itens: Lista required
|
|
30
|
-
}
|
|
31
|
-
output {
|
|
32
|
-
pedido: Pedido
|
|
33
|
-
}
|
|
34
|
-
rules {
|
|
35
|
-
itens deve_ser nao_vazio
|
|
36
|
-
cliente_id deve_ser valido
|
|
37
|
-
}
|
|
38
|
-
effects {
|
|
39
|
-
consulta Cliente por cliente_id
|
|
40
|
-
consulta Produto por cada item.produto_id
|
|
41
|
-
persistencia Pedido
|
|
42
|
-
persistencia ItemPedido
|
|
43
|
-
evento pedido_criado criticidade = media
|
|
44
|
-
auditoria criacao_pedido
|
|
45
|
-
}
|
|
46
|
-
state ciclo_pedido {
|
|
47
|
-
transitions {
|
|
48
|
-
RASCUNHO -> AGUARDANDO_PAGAMENTO
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
guarantees {
|
|
52
|
-
pedido existe
|
|
53
|
-
pedido.total > 0
|
|
54
|
-
}
|
|
55
|
-
error {
|
|
56
|
-
cliente_invalido: "Cliente nao encontrado."
|
|
57
|
-
item_invalido: "Um ou mais produtos nao existem."
|
|
58
|
-
carrinho_vazio: "O pedido deve ter ao menos um item."
|
|
59
|
-
}
|
|
60
|
-
tests {
|
|
61
|
-
caso "cria pedido valido" {
|
|
62
|
-
given { cliente_id: "cli_1" itens: [{produto_id: "prod_1", quantidade: 2}] }
|
|
63
|
-
expect { sucesso: verdadeiro }
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
task cancelar_pedido {
|
|
69
|
-
input {
|
|
70
|
-
pedido_id: Id required
|
|
71
|
-
motivo: Texto required
|
|
72
|
-
}
|
|
73
|
-
output {
|
|
74
|
-
protocolo: Id
|
|
75
|
-
}
|
|
76
|
-
rules {
|
|
77
|
-
pedido_id deve_ser valido
|
|
78
|
-
pedido.status em [AGUARDANDO_PAGAMENTO, APROVADO]
|
|
79
|
-
motivo deve_ser preenchido
|
|
80
|
-
}
|
|
81
|
-
effects {
|
|
82
|
-
persistencia Pedido
|
|
83
|
-
evento pedido_cancelado criticidade = alta
|
|
84
|
-
notificacao cliente pedido_cancelado
|
|
85
|
-
auditoria cancelamento_pedido criticidade = media
|
|
86
|
-
}
|
|
87
|
-
state ciclo_pedido {
|
|
88
|
-
transitions {
|
|
89
|
-
AGUARDANDO_PAGAMENTO -> CANCELADO
|
|
90
|
-
APROVADO -> CANCELADO
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
guarantees {
|
|
94
|
-
protocolo existe
|
|
95
|
-
pedido.status == CANCELADO
|
|
96
|
-
}
|
|
97
|
-
error {
|
|
98
|
-
pedido_nao_cancelavel: "Pedido ja enviado ou entregue nao pode ser cancelado."
|
|
99
|
-
}
|
|
100
|
-
tests {
|
|
101
|
-
caso "cancela pedido pendente" {
|
|
102
|
-
given { pedido_id: "ped_1" motivo: "Desistencia do cliente" }
|
|
103
|
-
expect { sucesso: verdadeiro }
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
flow aprovacao_pedido {
|
|
109
|
-
pedido_id: Id
|
|
110
|
-
token_pagamento: Texto
|
|
111
|
-
etapa pagar usa processar_pagamento com pedido_id = pedido_id, token = token_pagamento em_sucesso reservar em_erro cancelar_por_pagamento
|
|
112
|
-
etapa reservar usa reservar_estoque com pedido_id = pedido_id depende_de pagar em_erro cancelar_por_estoque
|
|
113
|
-
etapa cancelar_por_pagamento usa cancelar_pedido com pedido_id = pedido_id, motivo = "Pagamento recusado" depende_de pagar
|
|
114
|
-
etapa cancelar_por_estoque usa cancelar_pedido com pedido_id = pedido_id, motivo = "Estoque insuficiente" depende_de reservar
|
|
115
|
-
effects {
|
|
116
|
-
auditoria fluxo_aprovacao_pedido criticidade = alta
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
package/exemplos/permissao.sema
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
module exemplos.permissao {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Controle de acesso baseado em papeis e permissoes granulares."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Papel {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
nome: Texto
|
|
10
|
-
descricao: Texto
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
entity Permissao {
|
|
15
|
-
fields {
|
|
16
|
-
id: Id
|
|
17
|
-
recurso: Texto
|
|
18
|
-
acao: Texto
|
|
19
|
-
descricao: Texto
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
task atribuir_papel {
|
|
24
|
-
input {
|
|
25
|
-
usuario_id: Id required
|
|
26
|
-
papel_id: Id required
|
|
27
|
-
}
|
|
28
|
-
output {
|
|
29
|
-
atribuicao_id: Id
|
|
30
|
-
}
|
|
31
|
-
rules {
|
|
32
|
-
usuario_id deve_ser valido
|
|
33
|
-
papel_id deve_ser valido
|
|
34
|
-
}
|
|
35
|
-
effects {
|
|
36
|
-
consulta Usuario por usuario_id
|
|
37
|
-
consulta Papel por papel_id
|
|
38
|
-
persistencia AtribuicaoPapel
|
|
39
|
-
evento papel_atribuido criticidade = media
|
|
40
|
-
auditoria atribuicao_papel criticidade = alta
|
|
41
|
-
}
|
|
42
|
-
guarantees {
|
|
43
|
-
atribuicao_id existe
|
|
44
|
-
}
|
|
45
|
-
error {
|
|
46
|
-
usuario_nao_encontrado: "Usuario nao localizado."
|
|
47
|
-
papel_nao_encontrado: "Papel nao localizado."
|
|
48
|
-
atribuicao_duplicada: "Usuario ja possui este papel."
|
|
49
|
-
}
|
|
50
|
-
tests {
|
|
51
|
-
caso "atribui papel admin" {
|
|
52
|
-
given { usuario_id: "usr_1" papel_id: "papel_admin" }
|
|
53
|
-
expect { sucesso: verdadeiro }
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
task verificar_permissao {
|
|
59
|
-
input {
|
|
60
|
-
usuario_id: Id required
|
|
61
|
-
recurso: Texto required
|
|
62
|
-
acao: Texto required
|
|
63
|
-
}
|
|
64
|
-
output {
|
|
65
|
-
autorizado: Booleano
|
|
66
|
-
}
|
|
67
|
-
rules {
|
|
68
|
-
usuario_id deve_ser valido
|
|
69
|
-
recurso deve_ser preenchido
|
|
70
|
-
acao deve_ser preenchida
|
|
71
|
-
}
|
|
72
|
-
effects {
|
|
73
|
-
consulta AtribuicaoPapel por usuario_id
|
|
74
|
-
consulta PermissaoPapel por papel_id
|
|
75
|
-
auditoria verificacao_permissao
|
|
76
|
-
}
|
|
77
|
-
guarantees {
|
|
78
|
-
autorizado existe
|
|
79
|
-
}
|
|
80
|
-
tests {
|
|
81
|
-
caso "usuario autorizado" {
|
|
82
|
-
given { usuario_id: "usr_admin" recurso: "relatorios" acao: "exportar" }
|
|
83
|
-
expect { sucesso: verdadeiro }
|
|
84
|
-
}
|
|
85
|
-
caso "usuario sem permissao" {
|
|
86
|
-
given { usuario_id: "usr_basico" recurso: "admin" acao: "deletar" }
|
|
87
|
-
expect { sucesso: verdadeiro }
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
task revogar_papel {
|
|
93
|
-
input {
|
|
94
|
-
usuario_id: Id required
|
|
95
|
-
papel_id: Id required
|
|
96
|
-
motivo: Texto required
|
|
97
|
-
}
|
|
98
|
-
output {
|
|
99
|
-
protocolo: Id
|
|
100
|
-
}
|
|
101
|
-
rules {
|
|
102
|
-
usuario_id deve_ser valido
|
|
103
|
-
papel_id deve_ser valido
|
|
104
|
-
motivo deve_ser preenchido
|
|
105
|
-
}
|
|
106
|
-
effects {
|
|
107
|
-
persistencia AtribuicaoPapel
|
|
108
|
-
evento papel_revogado criticidade = alta
|
|
109
|
-
auditoria revogacao_papel criticidade = alta
|
|
110
|
-
}
|
|
111
|
-
guarantees {
|
|
112
|
-
protocolo existe
|
|
113
|
-
}
|
|
114
|
-
tests {
|
|
115
|
-
caso "revoga papel" {
|
|
116
|
-
given { usuario_id: "usr_1" papel_id: "papel_admin" motivo: "Saida da equipe" }
|
|
117
|
-
expect { sucesso: verdadeiro }
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
module exemplos.persistencia.vendor_first {
|
|
2
|
-
database principal_postgres {
|
|
3
|
-
engine: postgres
|
|
4
|
-
schema: public
|
|
5
|
-
consistency: forte
|
|
6
|
-
durability: alta
|
|
7
|
-
transaction_model: mvcc
|
|
8
|
-
query_model: sql
|
|
9
|
-
capabilities {
|
|
10
|
-
joins
|
|
11
|
-
views
|
|
12
|
-
}
|
|
13
|
-
table pedidos {
|
|
14
|
-
entity: Pedido
|
|
15
|
-
}
|
|
16
|
-
relationship pedido_cliente {
|
|
17
|
-
from: Pedido
|
|
18
|
-
to: Cliente
|
|
19
|
-
}
|
|
20
|
-
query buscar_pedidos {
|
|
21
|
-
mode: sql
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
database principal_mysql {
|
|
26
|
-
engine: mysql
|
|
27
|
-
consistency: forte
|
|
28
|
-
durability: alta
|
|
29
|
-
transaction_model: bloqueio
|
|
30
|
-
query_model: sql
|
|
31
|
-
table faturamento {
|
|
32
|
-
table: faturamento
|
|
33
|
-
}
|
|
34
|
-
query buscar_faturas {
|
|
35
|
-
mode: sql
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
database principal_sqlite {
|
|
40
|
-
engine: sqlite
|
|
41
|
-
consistency: snapshot
|
|
42
|
-
durability: media
|
|
43
|
-
transaction_model: single_thread
|
|
44
|
-
query_model: sql
|
|
45
|
-
table cache_local {
|
|
46
|
-
table: cache_local
|
|
47
|
-
}
|
|
48
|
-
retention limpeza_local {
|
|
49
|
-
retention: 7d
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
database principal_mongodb {
|
|
54
|
-
engine: mongodb
|
|
55
|
-
consistency: eventual
|
|
56
|
-
durability: alta
|
|
57
|
-
transaction_model: documento
|
|
58
|
-
query_model: documento
|
|
59
|
-
collection pedidos {
|
|
60
|
-
collection: pedidos
|
|
61
|
-
}
|
|
62
|
-
document pedido_snapshot {
|
|
63
|
-
entity: PedidoSnapshot
|
|
64
|
-
}
|
|
65
|
-
query pipeline_pedido {
|
|
66
|
-
mode: pipeline
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
database principal_redis {
|
|
71
|
-
engine: redis
|
|
72
|
-
consistency: eventual
|
|
73
|
-
durability: media
|
|
74
|
-
transaction_model: single_thread
|
|
75
|
-
query_model: chave_valor
|
|
76
|
-
keyspace cache_pedidos {
|
|
77
|
-
ttl: 300s
|
|
78
|
-
}
|
|
79
|
-
stream eventos_pedido {
|
|
80
|
-
surface: fila
|
|
81
|
-
}
|
|
82
|
-
retention expurgo_cache {
|
|
83
|
-
retention: 300s
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
package/exemplos/relatorio.sema
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
module exemplos.relatorio {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Geracao assincrona de relatorios com download e notificacao."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Relatorio {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
tipo: Texto
|
|
10
|
-
parametros: Objeto
|
|
11
|
-
status: Texto
|
|
12
|
-
url_download: Texto
|
|
13
|
-
solicitado_por: Id
|
|
14
|
-
criado_em: Timestamp
|
|
15
|
-
concluido_em: Timestamp
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
task solicitar_relatorio {
|
|
20
|
-
input {
|
|
21
|
-
tipo: Texto required
|
|
22
|
-
data_inicio: Data required
|
|
23
|
-
data_fim: Data required
|
|
24
|
-
formato: Texto
|
|
25
|
-
}
|
|
26
|
-
output {
|
|
27
|
-
relatorio_id: Id
|
|
28
|
-
}
|
|
29
|
-
rules {
|
|
30
|
-
tipo em [VENDAS, ESTOQUE, USUARIOS, FINANCEIRO]
|
|
31
|
-
data_inicio deve_ser anterior_a data_fim
|
|
32
|
-
formato em [PDF, CSV, XLSX]
|
|
33
|
-
}
|
|
34
|
-
effects {
|
|
35
|
-
persistencia Relatorio
|
|
36
|
-
evento relatorio_solicitado criticidade = baixa
|
|
37
|
-
auditoria solicitacao_relatorio
|
|
38
|
-
}
|
|
39
|
-
state ciclo_relatorio {
|
|
40
|
-
transitions {
|
|
41
|
-
PENDENTE -> EM_PROCESSAMENTO
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
guarantees {
|
|
45
|
-
relatorio_id existe
|
|
46
|
-
}
|
|
47
|
-
error {
|
|
48
|
-
tipo_invalido: "Tipo de relatorio nao suportado."
|
|
49
|
-
periodo_invalido: "Data de inicio deve ser anterior a data de fim."
|
|
50
|
-
limite_periodo: "Periodo maximo e de 12 meses."
|
|
51
|
-
}
|
|
52
|
-
tests {
|
|
53
|
-
caso "solicita relatorio de vendas" {
|
|
54
|
-
given { tipo: "VENDAS" data_inicio: "2025-01-01" data_fim: "2025-03-31" formato: "PDF" }
|
|
55
|
-
expect { sucesso: verdadeiro }
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
task concluir_relatorio {
|
|
61
|
-
input {
|
|
62
|
-
relatorio_id: Id required
|
|
63
|
-
url_download: Texto required
|
|
64
|
-
}
|
|
65
|
-
output {
|
|
66
|
-
protocolo: Id
|
|
67
|
-
}
|
|
68
|
-
rules {
|
|
69
|
-
relatorio_id deve_ser valido
|
|
70
|
-
url_download deve_ser preenchida
|
|
71
|
-
}
|
|
72
|
-
effects {
|
|
73
|
-
persistencia Relatorio
|
|
74
|
-
notificacao usuario relatorio_pronto criticidade = media
|
|
75
|
-
evento relatorio_concluido
|
|
76
|
-
auditoria conclusao_relatorio
|
|
77
|
-
}
|
|
78
|
-
state ciclo_relatorio {
|
|
79
|
-
transitions {
|
|
80
|
-
EM_PROCESSAMENTO -> CONCLUIDO
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
guarantees {
|
|
84
|
-
protocolo existe
|
|
85
|
-
}
|
|
86
|
-
tests {
|
|
87
|
-
caso "conclui relatorio" {
|
|
88
|
-
given { relatorio_id: "rel_1" url_download: "https://storage/rel_1.pdf" }
|
|
89
|
-
expect { sucesso: verdadeiro }
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module exemplos.testes.embutidos {
|
|
2
|
-
task validar_documento {
|
|
3
|
-
input {
|
|
4
|
-
documento: Texto required
|
|
5
|
-
}
|
|
6
|
-
output {
|
|
7
|
-
valido: Booleano
|
|
8
|
-
motivo: Texto
|
|
9
|
-
}
|
|
10
|
-
rules {
|
|
11
|
-
documento deve_ser preenchido
|
|
12
|
-
}
|
|
13
|
-
effects {
|
|
14
|
-
auditoria validacao_documento
|
|
15
|
-
}
|
|
16
|
-
guarantees {
|
|
17
|
-
valido existe
|
|
18
|
-
motivo existe
|
|
19
|
-
}
|
|
20
|
-
tests {
|
|
21
|
-
caso "documento valido" {
|
|
22
|
-
given {
|
|
23
|
-
documento: 12345678900
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
expect {
|
|
27
|
-
sucesso: verdadeiro
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
caso "documento vazio" {
|
|
31
|
-
given {
|
|
32
|
-
documento: ""
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
expect {
|
|
36
|
-
sucesso: falso
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
error {
|
|
40
|
-
tipo: "entrada_invalida"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
module exemplos.tratamento.erro {
|
|
2
|
-
task executar_operacao_sensivel {
|
|
3
|
-
input {
|
|
4
|
-
chave: Texto required
|
|
5
|
-
}
|
|
6
|
-
output {
|
|
7
|
-
protocolo: Id
|
|
8
|
-
}
|
|
9
|
-
rules {
|
|
10
|
-
chave existe e chave deve_ser preenchida
|
|
11
|
-
}
|
|
12
|
-
effects {
|
|
13
|
-
consulta cofre
|
|
14
|
-
auditoria falha_operacao_sensivel
|
|
15
|
-
}
|
|
16
|
-
guarantees {
|
|
17
|
-
protocolo existe
|
|
18
|
-
}
|
|
19
|
-
error {
|
|
20
|
-
acesso_negado: "A chave informada nao tem permissao."
|
|
21
|
-
recurso_indisponivel: "O servico esta temporariamente indisponivel."
|
|
22
|
-
auditoria_obrigatoria: "Toda falha precisa ser registrada."
|
|
23
|
-
}
|
|
24
|
-
tests {
|
|
25
|
-
caso "falha por acesso negado" {
|
|
26
|
-
given {
|
|
27
|
-
chave: "sem_permissao"
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
expect {
|
|
31
|
-
sucesso: falso
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
error {
|
|
35
|
-
tipo: "acesso_negado"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
task responder_acesso_negado {
|
|
42
|
-
input {
|
|
43
|
-
chave: Texto required
|
|
44
|
-
}
|
|
45
|
-
output {
|
|
46
|
-
protocolo_resposta: Id
|
|
47
|
-
}
|
|
48
|
-
effects {
|
|
49
|
-
notificacao cliente acesso_negado
|
|
50
|
-
auditoria acesso_negado
|
|
51
|
-
}
|
|
52
|
-
guarantees {
|
|
53
|
-
protocolo_resposta existe
|
|
54
|
-
}
|
|
55
|
-
tests {
|
|
56
|
-
caso "responde acesso negado" {
|
|
57
|
-
given {
|
|
58
|
-
chave: "sem_permissao"
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
expect {
|
|
62
|
-
sucesso: verdadeiro
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
task responder_retentativa {
|
|
69
|
-
input {
|
|
70
|
-
chave: Texto required
|
|
71
|
-
}
|
|
72
|
-
output {
|
|
73
|
-
protocolo_resposta: Id
|
|
74
|
-
}
|
|
75
|
-
effects {
|
|
76
|
-
notificacao cliente retentativa_programada
|
|
77
|
-
auditoria retentativa
|
|
78
|
-
}
|
|
79
|
-
guarantees {
|
|
80
|
-
protocolo_resposta existe
|
|
81
|
-
}
|
|
82
|
-
tests {
|
|
83
|
-
caso "agenda retentativa" {
|
|
84
|
-
given {
|
|
85
|
-
chave: "instavel"
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
expect {
|
|
89
|
-
sucesso: verdadeiro
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
task registrar_auditoria_falha {
|
|
96
|
-
input {
|
|
97
|
-
chave: Texto required
|
|
98
|
-
}
|
|
99
|
-
output {
|
|
100
|
-
auditoria_id: Id
|
|
101
|
-
}
|
|
102
|
-
effects {
|
|
103
|
-
auditoria falha_operacional
|
|
104
|
-
persistencia auditoria_falha
|
|
105
|
-
}
|
|
106
|
-
guarantees {
|
|
107
|
-
auditoria_id existe
|
|
108
|
-
}
|
|
109
|
-
tests {
|
|
110
|
-
caso "audita falha" {
|
|
111
|
-
given {
|
|
112
|
-
chave: "sem_permissao"
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
expect {
|
|
116
|
-
sucesso: verdadeiro
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
task registrar_sucesso {
|
|
123
|
-
input {
|
|
124
|
-
protocolo: Id required
|
|
125
|
-
}
|
|
126
|
-
output {
|
|
127
|
-
registro_id: Id
|
|
128
|
-
}
|
|
129
|
-
effects {
|
|
130
|
-
auditoria operacao_concluida
|
|
131
|
-
evento operacao_sensivel_concluida
|
|
132
|
-
}
|
|
133
|
-
guarantees {
|
|
134
|
-
registro_id existe
|
|
135
|
-
}
|
|
136
|
-
tests {
|
|
137
|
-
caso "registra sucesso" {
|
|
138
|
-
given {
|
|
139
|
-
protocolo: "prot_1"
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
expect {
|
|
143
|
-
sucesso: verdadeiro
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
flow resposta_segura {
|
|
150
|
-
chave: Texto
|
|
151
|
-
etapa tentar usa executar_operacao_sensivel com chave = chave em_sucesso concluir em_erro registrar_falha por_erro acesso_negado = tratar_acesso_negado, recurso_indisponivel = agendar_retentativa
|
|
152
|
-
etapa tratar_acesso_negado usa responder_acesso_negado com chave = chave depende_de tentar
|
|
153
|
-
etapa agendar_retentativa usa responder_retentativa com chave = chave depende_de tentar
|
|
154
|
-
etapa registrar_falha usa registrar_auditoria_falha com chave = chave depende_de tentar
|
|
155
|
-
etapa concluir usa registrar_sucesso com protocolo = tentar.protocolo depende_de tentar
|
|
156
|
-
}
|
|
157
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
module exemplos.upload.arquivo {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Upload de arquivos com validacao de tipo, tamanho e processamento."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Arquivo {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
nome: Texto
|
|
10
|
-
tipo_mime: Texto
|
|
11
|
-
tamanho_bytes: Inteiro
|
|
12
|
-
url: Texto
|
|
13
|
-
status: Texto
|
|
14
|
-
enviado_por: Id
|
|
15
|
-
criado_em: Timestamp
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
task iniciar_upload {
|
|
20
|
-
input {
|
|
21
|
-
nome: Texto required
|
|
22
|
-
tipo_mime: Texto required
|
|
23
|
-
tamanho_bytes: Inteiro required
|
|
24
|
-
}
|
|
25
|
-
output {
|
|
26
|
-
upload_id: Id
|
|
27
|
-
url_upload: Texto
|
|
28
|
-
}
|
|
29
|
-
rules {
|
|
30
|
-
tipo_mime em [image/jpeg, image/png, application/pdf, text/csv]
|
|
31
|
-
tamanho_bytes <= 10485760
|
|
32
|
-
nome deve_ser preenchido
|
|
33
|
-
}
|
|
34
|
-
effects {
|
|
35
|
-
consulta storage criticidade = alta
|
|
36
|
-
persistencia Arquivo
|
|
37
|
-
auditoria upload_iniciado
|
|
38
|
-
}
|
|
39
|
-
guarantees {
|
|
40
|
-
upload_id existe
|
|
41
|
-
url_upload existe
|
|
42
|
-
}
|
|
43
|
-
error {
|
|
44
|
-
tipo_nao_permitido: "Tipo de arquivo nao aceito."
|
|
45
|
-
tamanho_excedido: "Arquivo excede o limite de 10MB."
|
|
46
|
-
storage_indisponivel: "Servico de armazenamento indisponivel."
|
|
47
|
-
}
|
|
48
|
-
tests {
|
|
49
|
-
caso "inicia upload de imagem" {
|
|
50
|
-
given { nome: "foto.jpg" tipo_mime: "image/jpeg" tamanho_bytes: 512000 }
|
|
51
|
-
expect { sucesso: verdadeiro }
|
|
52
|
-
}
|
|
53
|
-
caso "rejeita arquivo muito grande" {
|
|
54
|
-
given { nome: "video.mp4" tipo_mime: "video/mp4" tamanho_bytes: 20971520 }
|
|
55
|
-
expect { sucesso: falso }
|
|
56
|
-
error { tipo: "tamanho_excedido" }
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
task confirmar_upload {
|
|
62
|
-
input {
|
|
63
|
-
upload_id: Id required
|
|
64
|
-
}
|
|
65
|
-
output {
|
|
66
|
-
arquivo: Arquivo
|
|
67
|
-
}
|
|
68
|
-
rules {
|
|
69
|
-
upload_id deve_ser valido
|
|
70
|
-
}
|
|
71
|
-
effects {
|
|
72
|
-
consulta storage por upload_id criticidade = alta
|
|
73
|
-
persistencia Arquivo
|
|
74
|
-
evento arquivo_disponivel criticidade = baixa
|
|
75
|
-
auditoria upload_confirmado
|
|
76
|
-
}
|
|
77
|
-
state ciclo_arquivo {
|
|
78
|
-
transitions {
|
|
79
|
-
PENDENTE -> DISPONIVEL
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
guarantees {
|
|
83
|
-
arquivo existe
|
|
84
|
-
arquivo.url existe
|
|
85
|
-
}
|
|
86
|
-
tests {
|
|
87
|
-
caso "confirma upload realizado" {
|
|
88
|
-
given { upload_id: "upl_1" }
|
|
89
|
-
expect { sucesso: verdadeiro }
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|