@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
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
module exemplos.autenticacao {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Login, logout e renovacao de sessao com tokens."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Sessao {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
usuario_id: Id
|
|
10
|
-
token: Texto
|
|
11
|
-
refresh_token: Texto
|
|
12
|
-
expira_em: Timestamp
|
|
13
|
-
ativo: Booleano
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
task fazer_login {
|
|
18
|
-
input {
|
|
19
|
-
email: Email required
|
|
20
|
-
senha: Texto required
|
|
21
|
-
}
|
|
22
|
-
output {
|
|
23
|
-
token: Texto
|
|
24
|
-
refresh_token: Texto
|
|
25
|
-
expira_em: Timestamp
|
|
26
|
-
}
|
|
27
|
-
rules {
|
|
28
|
-
email deve_ser email_valido
|
|
29
|
-
senha deve_ser preenchida
|
|
30
|
-
}
|
|
31
|
-
effects {
|
|
32
|
-
consulta Usuario por email
|
|
33
|
-
persistencia Sessao
|
|
34
|
-
auditoria login_realizado
|
|
35
|
-
evento sessao_iniciada
|
|
36
|
-
}
|
|
37
|
-
state ciclo_sessao {
|
|
38
|
-
transitions {
|
|
39
|
-
INATIVA -> ATIVA
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
guarantees {
|
|
43
|
-
token existe
|
|
44
|
-
refresh_token existe
|
|
45
|
-
}
|
|
46
|
-
error {
|
|
47
|
-
credenciais_invalidas: "Email ou senha incorretos."
|
|
48
|
-
conta_bloqueada: "Esta conta foi temporariamente bloqueada."
|
|
49
|
-
conta_inativa: "Esta conta nao esta ativa."
|
|
50
|
-
}
|
|
51
|
-
tests {
|
|
52
|
-
caso "login valido" {
|
|
53
|
-
given { email: "user@app.com" senha: "senha123" }
|
|
54
|
-
expect { sucesso: verdadeiro }
|
|
55
|
-
}
|
|
56
|
-
caso "senha errada" {
|
|
57
|
-
given { email: "user@app.com" senha: "errada" }
|
|
58
|
-
expect { sucesso: falso }
|
|
59
|
-
error { tipo: "credenciais_invalidas" }
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
task renovar_token {
|
|
65
|
-
input {
|
|
66
|
-
refresh_token: Texto required
|
|
67
|
-
}
|
|
68
|
-
output {
|
|
69
|
-
token: Texto
|
|
70
|
-
expira_em: Timestamp
|
|
71
|
-
}
|
|
72
|
-
rules {
|
|
73
|
-
refresh_token deve_ser valido
|
|
74
|
-
refresh_token deve_ser nao_expirado
|
|
75
|
-
}
|
|
76
|
-
effects {
|
|
77
|
-
consulta Sessao por refresh_token
|
|
78
|
-
persistencia Sessao
|
|
79
|
-
auditoria token_renovado
|
|
80
|
-
}
|
|
81
|
-
guarantees {
|
|
82
|
-
token existe
|
|
83
|
-
}
|
|
84
|
-
error {
|
|
85
|
-
refresh_invalido: "Token de renovacao invalido ou expirado."
|
|
86
|
-
}
|
|
87
|
-
tests {
|
|
88
|
-
caso "renova com token valido" {
|
|
89
|
-
given { refresh_token: "valid_refresh" }
|
|
90
|
-
expect { sucesso: verdadeiro }
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
task fazer_logout {
|
|
96
|
-
input {
|
|
97
|
-
token: Texto required
|
|
98
|
-
}
|
|
99
|
-
output {
|
|
100
|
-
protocolo: Id
|
|
101
|
-
}
|
|
102
|
-
rules {
|
|
103
|
-
token deve_ser valido
|
|
104
|
-
}
|
|
105
|
-
effects {
|
|
106
|
-
persistencia Sessao
|
|
107
|
-
auditoria logout_realizado
|
|
108
|
-
evento sessao_encerrada
|
|
109
|
-
}
|
|
110
|
-
state ciclo_sessao {
|
|
111
|
-
transitions {
|
|
112
|
-
ATIVA -> INATIVA
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
guarantees {
|
|
116
|
-
protocolo existe
|
|
117
|
-
}
|
|
118
|
-
tests {
|
|
119
|
-
caso "logout valido" {
|
|
120
|
-
given { token: "valid_token" }
|
|
121
|
-
expect { sucesso: verdadeiro }
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
package/exemplos/automacao.sema
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
module exemplos.automacao {
|
|
2
|
-
state onboarding_status {
|
|
3
|
-
origem: automacao
|
|
4
|
-
fields {
|
|
5
|
-
lead_id: Id
|
|
6
|
-
etapa_atual: Texto
|
|
7
|
-
concluido: Booleano
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
task executar_onboarding {
|
|
12
|
-
input {
|
|
13
|
-
lead_id: Id required
|
|
14
|
-
email: Email required
|
|
15
|
-
}
|
|
16
|
-
output {
|
|
17
|
-
protocolo: Id
|
|
18
|
-
}
|
|
19
|
-
rules {
|
|
20
|
-
lead_id deve_ser valido
|
|
21
|
-
email deve_ser email_valido
|
|
22
|
-
}
|
|
23
|
-
effects {
|
|
24
|
-
consulta crm
|
|
25
|
-
persistencia conta
|
|
26
|
-
notificacao email detalhe_boas_vindas
|
|
27
|
-
auditoria onboarding
|
|
28
|
-
}
|
|
29
|
-
guarantees {
|
|
30
|
-
protocolo existe
|
|
31
|
-
persistencia concluida
|
|
32
|
-
}
|
|
33
|
-
tests {
|
|
34
|
-
caso "onboarding completo" {
|
|
35
|
-
given {
|
|
36
|
-
lead_id: "lead_1"
|
|
37
|
-
email: "cliente@empresa.com"
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
expect {
|
|
41
|
-
sucesso: verdadeiro
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
task registrar_auditoria {
|
|
48
|
-
input {
|
|
49
|
-
protocolo: Id required
|
|
50
|
-
}
|
|
51
|
-
output {
|
|
52
|
-
auditoria_id: Id
|
|
53
|
-
}
|
|
54
|
-
effects {
|
|
55
|
-
auditoria onboarding
|
|
56
|
-
}
|
|
57
|
-
guarantees {
|
|
58
|
-
auditoria_id existe
|
|
59
|
-
}
|
|
60
|
-
tests {
|
|
61
|
-
caso "auditoria registrada" {
|
|
62
|
-
given {
|
|
63
|
-
protocolo: "prot_1"
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
expect {
|
|
67
|
-
sucesso: verdadeiro
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
task registrar_falha_onboarding {
|
|
74
|
-
input {
|
|
75
|
-
lead_id: Id required
|
|
76
|
-
}
|
|
77
|
-
output {
|
|
78
|
-
protocolo_falha: Id
|
|
79
|
-
}
|
|
80
|
-
effects {
|
|
81
|
-
auditoria falha_onboarding
|
|
82
|
-
persistencia onboarding_falha
|
|
83
|
-
}
|
|
84
|
-
guarantees {
|
|
85
|
-
protocolo_falha existe
|
|
86
|
-
}
|
|
87
|
-
tests {
|
|
88
|
-
caso "falha registrada" {
|
|
89
|
-
given {
|
|
90
|
-
lead_id: "lead_1"
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
expect {
|
|
94
|
-
sucesso: verdadeiro
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
flow onboarding_cliente {
|
|
101
|
-
lead_id: Id
|
|
102
|
-
email: Email
|
|
103
|
-
etapa receber usa executar_onboarding com lead_id = lead_id, email = email quando (sucesso existe ou persistencia concluida) em_sucesso auditar em_erro registrar_falha
|
|
104
|
-
etapa auditar usa registrar_auditoria com protocolo = receber.protocolo depende_de receber
|
|
105
|
-
etapa registrar_falha usa registrar_falha_onboarding com lead_id = lead_id depende_de receber
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
module exemplos.cadastro.usuario {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Cadastro de usuario com entidade,validacoes e persistencia declarada."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Usuario {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
nome: Texto
|
|
10
|
-
email: Email
|
|
11
|
-
ativo: Booleano
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
task criar_usuario {
|
|
16
|
-
input {
|
|
17
|
-
nome: Texto required
|
|
18
|
-
email: Email required
|
|
19
|
-
}
|
|
20
|
-
output {
|
|
21
|
-
usuario: Usuario
|
|
22
|
-
}
|
|
23
|
-
rules {
|
|
24
|
-
nome deve_ser preenchido
|
|
25
|
-
email deve_ser email_valido
|
|
26
|
-
email deve_ser unico em Usuario.email
|
|
27
|
-
}
|
|
28
|
-
effects {
|
|
29
|
-
persistencia Usuario
|
|
30
|
-
evento usuario_criado
|
|
31
|
-
auditoria cadastro_usuario
|
|
32
|
-
}
|
|
33
|
-
guarantees {
|
|
34
|
-
usuario existe
|
|
35
|
-
persistencia concluida
|
|
36
|
-
}
|
|
37
|
-
error {
|
|
38
|
-
email_duplicado: "Ja existe usuario com este email."
|
|
39
|
-
entrada_invalida: "Os dados informados nao atendem as regras."
|
|
40
|
-
}
|
|
41
|
-
tests {
|
|
42
|
-
caso "cria usuario valido" {
|
|
43
|
-
given {
|
|
44
|
-
nome: "Ana"
|
|
45
|
-
email: "ana@empresa.com"
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
expect {
|
|
49
|
-
sucesso: verdadeiro
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
module exemplos.calculadora {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Operacoes aritmeticas simples com garantias e testes."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
comments {
|
|
7
|
-
observacao: "Exemplo base para demonstrar tarefas semanticas puras."
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
task somar {
|
|
11
|
-
input {
|
|
12
|
-
a: Numero required
|
|
13
|
-
b: Numero required
|
|
14
|
-
}
|
|
15
|
-
output {
|
|
16
|
-
resultado: Numero
|
|
17
|
-
}
|
|
18
|
-
rules {
|
|
19
|
-
a deve_ser numero_valido
|
|
20
|
-
b deve_ser numero_valido
|
|
21
|
-
}
|
|
22
|
-
effects {
|
|
23
|
-
auditoria operacao soma
|
|
24
|
-
}
|
|
25
|
-
guarantees {
|
|
26
|
-
resultado existe
|
|
27
|
-
}
|
|
28
|
-
error {
|
|
29
|
-
entrada_invalida: "Os valores precisam ser numericos."
|
|
30
|
-
}
|
|
31
|
-
tests {
|
|
32
|
-
caso "soma basica" {
|
|
33
|
-
given {
|
|
34
|
-
a: 2
|
|
35
|
-
b: 3
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
expect {
|
|
39
|
-
sucesso: verdadeiro
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
task dividir {
|
|
46
|
-
input {
|
|
47
|
-
dividendo: Numero required
|
|
48
|
-
divisor: Numero required
|
|
49
|
-
}
|
|
50
|
-
output {
|
|
51
|
-
resultado: Numero
|
|
52
|
-
}
|
|
53
|
-
rules {
|
|
54
|
-
divisor deve_ser diferente_de_zero
|
|
55
|
-
}
|
|
56
|
-
effects {
|
|
57
|
-
auditoria operacao divisao
|
|
58
|
-
}
|
|
59
|
-
guarantees {
|
|
60
|
-
resultado existe
|
|
61
|
-
}
|
|
62
|
-
error {
|
|
63
|
-
divisor_zero: "Nao e permitido dividir por zero."
|
|
64
|
-
}
|
|
65
|
-
tests {
|
|
66
|
-
caso "divisao valida" {
|
|
67
|
-
given {
|
|
68
|
-
dividendo: 10
|
|
69
|
-
divisor: 2
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
expect {
|
|
73
|
-
sucesso: verdadeiro
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
module exemplos.crud.simples {
|
|
2
|
-
entity Produto {
|
|
3
|
-
fields {
|
|
4
|
-
id: Id
|
|
5
|
-
nome: Texto
|
|
6
|
-
preco: Decimal
|
|
7
|
-
ativo: Booleano
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
task criar_produto {
|
|
12
|
-
input {
|
|
13
|
-
nome: Texto required
|
|
14
|
-
preco: Decimal required
|
|
15
|
-
}
|
|
16
|
-
output {
|
|
17
|
-
produto: Produto
|
|
18
|
-
}
|
|
19
|
-
rules {
|
|
20
|
-
nome deve_ser preenchido
|
|
21
|
-
preco deve_ser positivo
|
|
22
|
-
}
|
|
23
|
-
effects {
|
|
24
|
-
persistencia Produto
|
|
25
|
-
auditoria produto_criado
|
|
26
|
-
}
|
|
27
|
-
guarantees {
|
|
28
|
-
produto existe
|
|
29
|
-
}
|
|
30
|
-
tests {
|
|
31
|
-
caso "cria produto" {
|
|
32
|
-
given {
|
|
33
|
-
nome: "Caneca"
|
|
34
|
-
preco: 39.9
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
expect {
|
|
38
|
-
sucesso: verdadeiro
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
task atualizar_produto {
|
|
45
|
-
input {
|
|
46
|
-
id: Id required
|
|
47
|
-
nome: Texto
|
|
48
|
-
preco: Decimal
|
|
49
|
-
}
|
|
50
|
-
output {
|
|
51
|
-
produto: Produto
|
|
52
|
-
}
|
|
53
|
-
rules {
|
|
54
|
-
id deve_ser valido
|
|
55
|
-
}
|
|
56
|
-
effects {
|
|
57
|
-
persistencia Produto
|
|
58
|
-
auditoria produto_atualizado
|
|
59
|
-
}
|
|
60
|
-
guarantees {
|
|
61
|
-
produto existe
|
|
62
|
-
}
|
|
63
|
-
tests {
|
|
64
|
-
caso "atualiza produto" {
|
|
65
|
-
given {
|
|
66
|
-
id: "prod_1"
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
expect {
|
|
70
|
-
sucesso: verdadeiro
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
route produtos {
|
|
77
|
-
metodo: POST
|
|
78
|
-
caminho: /produtos
|
|
79
|
-
task: criar_produto
|
|
80
|
-
finalidade: cadastro_produto
|
|
81
|
-
input {
|
|
82
|
-
nome: Texto
|
|
83
|
-
preco: Decimal
|
|
84
|
-
}
|
|
85
|
-
output {
|
|
86
|
-
produto: Produto
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
package/exemplos/estoque.sema
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
module exemplos.estoque {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Controle de estoque com reserva, entrada e saida de produtos."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity ItemEstoque {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
produto_id: Id
|
|
10
|
-
quantidade: Inteiro
|
|
11
|
-
quantidade_reservada: Inteiro
|
|
12
|
-
localizacao: Texto
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
entity MovimentacaoEstoque {
|
|
17
|
-
fields {
|
|
18
|
-
id: Id
|
|
19
|
-
produto_id: Id
|
|
20
|
-
tipo: Texto
|
|
21
|
-
quantidade: Inteiro
|
|
22
|
-
motivo: Texto
|
|
23
|
-
realizada_em: Timestamp
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
task reservar_estoque {
|
|
28
|
-
input {
|
|
29
|
-
produto_id: Id required
|
|
30
|
-
quantidade: Inteiro required
|
|
31
|
-
pedido_id: Id required
|
|
32
|
-
}
|
|
33
|
-
output {
|
|
34
|
-
reserva_id: Id
|
|
35
|
-
}
|
|
36
|
-
rules {
|
|
37
|
-
quantidade > 0
|
|
38
|
-
produto_id deve_ser valido
|
|
39
|
-
}
|
|
40
|
-
effects {
|
|
41
|
-
consulta ItemEstoque por produto_id criticidade = alta
|
|
42
|
-
persistencia ItemEstoque
|
|
43
|
-
persistencia MovimentacaoEstoque
|
|
44
|
-
evento estoque_reservado criticidade = media
|
|
45
|
-
auditoria reserva_estoque
|
|
46
|
-
}
|
|
47
|
-
guarantees {
|
|
48
|
-
reserva_id existe
|
|
49
|
-
ItemEstoque.quantidade_reservada >= quantidade
|
|
50
|
-
}
|
|
51
|
-
error {
|
|
52
|
-
estoque_insuficiente: "Quantidade solicitada indisponivel em estoque."
|
|
53
|
-
produto_nao_encontrado: "Produto nao localizado no estoque."
|
|
54
|
-
}
|
|
55
|
-
tests {
|
|
56
|
-
caso "reserva com estoque disponivel" {
|
|
57
|
-
given { produto_id: "prod_1" quantidade: 5 pedido_id: "ped_1" }
|
|
58
|
-
expect { sucesso: verdadeiro }
|
|
59
|
-
}
|
|
60
|
-
caso "reserva sem estoque" {
|
|
61
|
-
given { produto_id: "prod_sem" quantidade: 999 pedido_id: "ped_2" }
|
|
62
|
-
expect { sucesso: falso }
|
|
63
|
-
error { tipo: "estoque_insuficiente" }
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
task registrar_entrada {
|
|
69
|
-
input {
|
|
70
|
-
produto_id: Id required
|
|
71
|
-
quantidade: Inteiro required
|
|
72
|
-
motivo: Texto required
|
|
73
|
-
}
|
|
74
|
-
output {
|
|
75
|
-
movimentacao_id: Id
|
|
76
|
-
}
|
|
77
|
-
rules {
|
|
78
|
-
quantidade > 0
|
|
79
|
-
motivo deve_ser preenchido
|
|
80
|
-
}
|
|
81
|
-
effects {
|
|
82
|
-
persistencia ItemEstoque
|
|
83
|
-
persistencia MovimentacaoEstoque
|
|
84
|
-
evento estoque_reposto
|
|
85
|
-
auditoria entrada_estoque
|
|
86
|
-
}
|
|
87
|
-
guarantees {
|
|
88
|
-
movimentacao_id existe
|
|
89
|
-
}
|
|
90
|
-
tests {
|
|
91
|
-
caso "entrada valida" {
|
|
92
|
-
given { produto_id: "prod_1" quantidade: 100 motivo: "Reposicao mensal" }
|
|
93
|
-
expect { sucesso: verdadeiro }
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
task liberar_reserva {
|
|
99
|
-
input {
|
|
100
|
-
reserva_id: Id required
|
|
101
|
-
motivo: Texto required
|
|
102
|
-
}
|
|
103
|
-
output {
|
|
104
|
-
protocolo: Id
|
|
105
|
-
}
|
|
106
|
-
rules {
|
|
107
|
-
reserva_id deve_ser valido
|
|
108
|
-
motivo deve_ser preenchido
|
|
109
|
-
}
|
|
110
|
-
effects {
|
|
111
|
-
persistencia ItemEstoque
|
|
112
|
-
persistencia MovimentacaoEstoque
|
|
113
|
-
evento reserva_liberada
|
|
114
|
-
auditoria liberacao_reserva
|
|
115
|
-
}
|
|
116
|
-
guarantees {
|
|
117
|
-
protocolo existe
|
|
118
|
-
}
|
|
119
|
-
tests {
|
|
120
|
-
caso "libera reserva existente" {
|
|
121
|
-
given { reserva_id: "res_1" motivo: "Pedido cancelado" }
|
|
122
|
-
expect { sucesso: verdadeiro }
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
package/exemplos/exportacao.sema
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
module exemplos.exportacao {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Exportacao de dados em multiplos formatos com controle de acesso e rastreamento."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity ExportacaoDados {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
tipo: Texto
|
|
10
|
-
formato: Texto
|
|
11
|
-
filtros: Objeto
|
|
12
|
-
total_registros: Inteiro
|
|
13
|
-
url_arquivo: Texto
|
|
14
|
-
status: Texto
|
|
15
|
-
solicitado_por: Id
|
|
16
|
-
expira_em: Timestamp
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
task solicitar_exportacao {
|
|
21
|
-
input {
|
|
22
|
-
tipo: Texto required
|
|
23
|
-
formato: Texto required
|
|
24
|
-
filtros: Objeto
|
|
25
|
-
}
|
|
26
|
-
output {
|
|
27
|
-
exportacao_id: Id
|
|
28
|
-
}
|
|
29
|
-
rules {
|
|
30
|
-
tipo em [USUARIOS, PEDIDOS, FINANCEIRO, ESTOQUE]
|
|
31
|
-
formato em [CSV, XLSX, JSON]
|
|
32
|
-
}
|
|
33
|
-
effects {
|
|
34
|
-
persistencia ExportacaoDados
|
|
35
|
-
evento exportacao_solicitada criticidade = media
|
|
36
|
-
auditoria solicitacao_exportacao criticidade = media
|
|
37
|
-
}
|
|
38
|
-
state ciclo_exportacao {
|
|
39
|
-
transitions {
|
|
40
|
-
PENDENTE -> EM_PROCESSAMENTO
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
guarantees {
|
|
44
|
-
exportacao_id existe
|
|
45
|
-
}
|
|
46
|
-
error {
|
|
47
|
-
tipo_invalido: "Tipo de exportacao nao suportado."
|
|
48
|
-
formato_invalido: "Formato de arquivo nao suportado."
|
|
49
|
-
permissao_negada: "Sem permissao para exportar este tipo de dado."
|
|
50
|
-
}
|
|
51
|
-
tests {
|
|
52
|
-
caso "solicita exportacao de usuarios em csv" {
|
|
53
|
-
given { tipo: "USUARIOS" formato: "CSV" }
|
|
54
|
-
expect { sucesso: verdadeiro }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
task concluir_exportacao {
|
|
60
|
-
input {
|
|
61
|
-
exportacao_id: Id required
|
|
62
|
-
url_arquivo: Texto required
|
|
63
|
-
total_registros: Inteiro required
|
|
64
|
-
}
|
|
65
|
-
output {
|
|
66
|
-
protocolo: Id
|
|
67
|
-
}
|
|
68
|
-
rules {
|
|
69
|
-
exportacao_id deve_ser valido
|
|
70
|
-
url_arquivo deve_ser preenchida
|
|
71
|
-
total_registros >= 0
|
|
72
|
-
}
|
|
73
|
-
effects {
|
|
74
|
-
persistencia ExportacaoDados
|
|
75
|
-
notificacao usuario exportacao_pronta criticidade = media
|
|
76
|
-
evento exportacao_concluida
|
|
77
|
-
auditoria conclusao_exportacao
|
|
78
|
-
}
|
|
79
|
-
state ciclo_exportacao {
|
|
80
|
-
transitions {
|
|
81
|
-
EM_PROCESSAMENTO -> DISPONIVEL
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
guarantees {
|
|
85
|
-
protocolo existe
|
|
86
|
-
}
|
|
87
|
-
tests {
|
|
88
|
-
caso "conclui exportacao" {
|
|
89
|
-
given { exportacao_id: "exp_1" url_arquivo: "https://storage/exp_1.csv" total_registros: 1500 }
|
|
90
|
-
expect { sucesso: verdadeiro }
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|