@semacode/cli 1.5.18 → 1.5.19
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/AGENTS.md +268 -260
- package/LICENSE +22 -22
- package/README.md +144 -104
- package/SEMA_BRIEF.curto.txt +7 -5
- package/SEMA_BRIEF.md +60 -4
- package/SEMA_BRIEF.micro.txt +6 -4
- package/SEMA_INDEX.json +917 -41
- package/dist/controleComercialSupabase.d.ts +326 -0
- package/dist/controleComercialSupabase.js +310 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/docs.js +48 -20
- package/dist/docs.js.map +1 -1
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +123 -14
- package/dist/drift.js.map +1 -1
- package/dist/index.js +1889 -38
- package/dist/index.js.map +1 -1
- package/dist/mcpRemoto.d.ts +32 -0
- package/dist/mcpRemoto.js +61 -0
- package/dist/mcpRemoto.js.map +1 -0
- package/dist/projeto.js +3 -1
- package/dist/projeto.js.map +1 -1
- package/docs/AGENT_STARTER.md +103 -97
- package/docs/cli.md +175 -106
- package/docs/como-ensinar-a-sema-para-ia.md +41 -35
- package/docs/deploy.md +231 -43
- package/docs/documentacao.md +61 -36
- package/docs/env.md +105 -56
- package/docs/extensao-vscode.md +12 -4
- package/docs/fluxo-pratico-ia-sema.md +182 -176
- package/docs/instalacao-e-primeiro-uso.md +52 -30
- package/docs/integracao-com-ia.md +108 -101
- package/docs/mcp.md +292 -51
- package/docs/pagamento-ponta-a-ponta.md +34 -28
- package/docs/persistencia-vendor-first.md +11 -5
- package/docs/prompt-base-ia-sema.md +13 -7
- package/docs/rollback.md +17 -15
- package/docs/sintaxe.md +180 -174
- package/exemplos/agendamento.sema +105 -105
- package/exemplos/assinatura.sema +133 -133
- package/exemplos/auditoria.sema +89 -89
- package/exemplos/autenticacao.sema +125 -125
- package/exemplos/author_obra_comum.sema +294 -0
- package/exemplos/author_tema_sensivel.sema +264 -0
- package/exemplos/automacao.sema +107 -107
- package/exemplos/cadastro_usuario.sema +54 -54
- package/exemplos/calculadora.sema +78 -78
- package/exemplos/crud_simples.sema +89 -89
- package/exemplos/estoque.sema +127 -127
- package/exemplos/exportacao.sema +94 -94
- package/exemplos/fila.sema +130 -130
- package/exemplos/integracao_externa.sema +94 -94
- package/exemplos/multi_tenant.sema +140 -140
- package/exemplos/notificacao.sema +149 -149
- package/exemplos/operacao_estrategia.sema +633 -633
- package/exemplos/pagamento.sema +434 -434
- package/exemplos/pagamento_dominio.sema +35 -35
- package/exemplos/pedido.sema +255 -255
- package/exemplos/permissao.sema +121 -121
- package/exemplos/persistencia_vendor_first.sema +86 -86
- package/exemplos/profile_game.sema +114 -0
- package/exemplos/profile_legal.sema +105 -0
- package/exemplos/profile_ops.sema +110 -0
- package/exemplos/profile_research.sema +104 -0
- package/exemplos/profile_software.sema +123 -0
- package/exemplos/profile_workflow_n8n.sema +99 -0
- package/exemplos/relatorio.sema +93 -93
- package/exemplos/replica_analitica_erp.sema +160 -160
- package/exemplos/testes_embutidos.sema +45 -45
- package/exemplos/tratamento_erro.sema +157 -157
- package/exemplos/upload_arquivo.sema +93 -93
- package/exemplos/webhook.sema +94 -94
- package/llms-full.txt +34 -34
- package/llms.txt +17 -17
- package/node_modules/@sema/gerador-css/dist/index.js +563 -563
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +90 -90
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.js +122 -96
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js +12 -4
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
module exemplos.author.tema_sensivel {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Starter publico do Sema Author para obra com tema sensivel, exigindo publico, fontes, limites, agentes e fluxo de revisao."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
type FonteAuthor {
|
|
7
|
+
fields {
|
|
8
|
+
nome: Texto
|
|
9
|
+
tipo: Texto
|
|
10
|
+
confianca: Texto
|
|
11
|
+
limite_uso: Texto
|
|
12
|
+
}
|
|
13
|
+
invariants {
|
|
14
|
+
nome existe
|
|
15
|
+
tipo existe
|
|
16
|
+
confianca existe
|
|
17
|
+
limite_uso existe
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type AgentAuthor {
|
|
22
|
+
fields {
|
|
23
|
+
nome: Texto
|
|
24
|
+
papel: Texto
|
|
25
|
+
permissao: Texto
|
|
26
|
+
}
|
|
27
|
+
invariants {
|
|
28
|
+
nome existe
|
|
29
|
+
papel existe
|
|
30
|
+
permissao existe
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
enum PublicoSensivel {
|
|
35
|
+
ADULTO,
|
|
36
|
+
TECNICO,
|
|
37
|
+
COMUNIDADE_AFETADA
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
enum StatusSensivel {
|
|
41
|
+
BLOQUEADO,
|
|
42
|
+
BRIEFING,
|
|
43
|
+
REVISAO_FONTES,
|
|
44
|
+
REVISAO_SENSIBILIDADE,
|
|
45
|
+
PUBLICAVEL
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
task declarar_tema_sensivel {
|
|
49
|
+
input {
|
|
50
|
+
obra: Texto required
|
|
51
|
+
publico: PublicoSensivel required
|
|
52
|
+
tema: Texto required
|
|
53
|
+
fontes: Lista required
|
|
54
|
+
limites: Lista required
|
|
55
|
+
}
|
|
56
|
+
output {
|
|
57
|
+
status: StatusSensivel
|
|
58
|
+
fontes_validas: Booleano
|
|
59
|
+
limites_explicitos: Booleano
|
|
60
|
+
}
|
|
61
|
+
rules {
|
|
62
|
+
obra deve_ser preenchido
|
|
63
|
+
publico deve_ser valido
|
|
64
|
+
tema deve_ser preenchido
|
|
65
|
+
fontes deve_ser nao_vazio
|
|
66
|
+
limites deve_ser nao_vazio
|
|
67
|
+
}
|
|
68
|
+
effects {
|
|
69
|
+
auditoria author_tema_sensivel criticidade = alta
|
|
70
|
+
}
|
|
71
|
+
authz {
|
|
72
|
+
escopo: author.tema_sensivel.declarar
|
|
73
|
+
tenant: opcional
|
|
74
|
+
}
|
|
75
|
+
dados {
|
|
76
|
+
classificacao_padrao: interno
|
|
77
|
+
redacao_log: obrigatoria
|
|
78
|
+
}
|
|
79
|
+
audit {
|
|
80
|
+
evento: author.tema_sensivel.declarado
|
|
81
|
+
ator: auth.agente
|
|
82
|
+
correlacao: request_id
|
|
83
|
+
retencao: "180d"
|
|
84
|
+
motivo: obrigatorio
|
|
85
|
+
}
|
|
86
|
+
forbidden {
|
|
87
|
+
publico_indefinido
|
|
88
|
+
fontes_inventadas
|
|
89
|
+
limite_implicito
|
|
90
|
+
sensibilidade_sem_revisor
|
|
91
|
+
}
|
|
92
|
+
vinculos {
|
|
93
|
+
arquivo: "docs/profiles-author-agents-flow.md"
|
|
94
|
+
}
|
|
95
|
+
execucao {
|
|
96
|
+
idempotencia: verdadeiro
|
|
97
|
+
timeout: "15s"
|
|
98
|
+
retry: "nenhum"
|
|
99
|
+
criticidade_operacional: alta
|
|
100
|
+
}
|
|
101
|
+
guarantees {
|
|
102
|
+
status em [BRIEFING, REVISAO_FONTES]
|
|
103
|
+
fontes_validas == verdadeiro
|
|
104
|
+
limites_explicitos == verdadeiro
|
|
105
|
+
}
|
|
106
|
+
tests {
|
|
107
|
+
caso "tema sensivel com fonte e limite" {
|
|
108
|
+
given {
|
|
109
|
+
obra: "Relato Documental"
|
|
110
|
+
publico: "ADULTO"
|
|
111
|
+
tema: "violencia_historica"
|
|
112
|
+
fontes: "arquivo_publico"
|
|
113
|
+
limites: "nao_romantizar_dano"
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
expect {
|
|
117
|
+
sucesso: verdadeiro
|
|
118
|
+
fontes_validas: verdadeiro
|
|
119
|
+
limites_explicitos: verdadeiro
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
task montar_agents_author {
|
|
126
|
+
input {
|
|
127
|
+
planejador: Texto required
|
|
128
|
+
editor: Texto required
|
|
129
|
+
revisor_cliche: Texto required
|
|
130
|
+
sensitivity_reviewer: Texto required
|
|
131
|
+
}
|
|
132
|
+
output {
|
|
133
|
+
agents: Lista
|
|
134
|
+
pronto_para_flow: Booleano
|
|
135
|
+
}
|
|
136
|
+
rules {
|
|
137
|
+
planejador deve_ser preenchido
|
|
138
|
+
editor deve_ser preenchido
|
|
139
|
+
revisor_cliche deve_ser preenchido
|
|
140
|
+
sensitivity_reviewer deve_ser preenchido
|
|
141
|
+
}
|
|
142
|
+
effects {
|
|
143
|
+
auditoria author_agents criticidade = media
|
|
144
|
+
}
|
|
145
|
+
forbidden {
|
|
146
|
+
agent_sem_papel
|
|
147
|
+
sensitivity_reviewer_ausente
|
|
148
|
+
agente_sem_limite
|
|
149
|
+
}
|
|
150
|
+
execucao {
|
|
151
|
+
idempotencia: verdadeiro
|
|
152
|
+
timeout: "10s"
|
|
153
|
+
criticidade_operacional: media
|
|
154
|
+
}
|
|
155
|
+
guarantees {
|
|
156
|
+
agents existe
|
|
157
|
+
pronto_para_flow == verdadeiro
|
|
158
|
+
}
|
|
159
|
+
tests {
|
|
160
|
+
caso "agents sensiveis completos" {
|
|
161
|
+
given {
|
|
162
|
+
planejador: "planejador"
|
|
163
|
+
editor: "editor"
|
|
164
|
+
revisor_cliche: "anti_cliche"
|
|
165
|
+
sensitivity_reviewer: "revisor_sensibilidade"
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
expect {
|
|
169
|
+
sucesso: verdadeiro
|
|
170
|
+
pronto_para_flow: verdadeiro
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
task validar_entrega_sensivel {
|
|
177
|
+
input {
|
|
178
|
+
texto: Texto required
|
|
179
|
+
fontes_lidas: Booleano required
|
|
180
|
+
revisao_sensibilidade: Booleano required
|
|
181
|
+
dano_mitigado: Booleano required
|
|
182
|
+
}
|
|
183
|
+
output {
|
|
184
|
+
status: StatusSensivel
|
|
185
|
+
bloqueios: Lista
|
|
186
|
+
}
|
|
187
|
+
rules {
|
|
188
|
+
texto deve_ser preenchido
|
|
189
|
+
fontes_lidas deve_ser verdadeiro
|
|
190
|
+
revisao_sensibilidade deve_ser verdadeiro
|
|
191
|
+
dano_mitigado deve_ser verdadeiro
|
|
192
|
+
}
|
|
193
|
+
effects {
|
|
194
|
+
auditoria author_entrega_sensivel criticidade = alta
|
|
195
|
+
}
|
|
196
|
+
authz {
|
|
197
|
+
escopo: author.tema_sensivel.validar
|
|
198
|
+
tenant: opcional
|
|
199
|
+
}
|
|
200
|
+
dados {
|
|
201
|
+
classificacao_padrao: interno
|
|
202
|
+
redacao_log: obrigatoria
|
|
203
|
+
}
|
|
204
|
+
audit {
|
|
205
|
+
evento: author.tema_sensivel.entrega_validada
|
|
206
|
+
ator: auth.agente
|
|
207
|
+
correlacao: request_id
|
|
208
|
+
retencao: "180d"
|
|
209
|
+
motivo: obrigatorio
|
|
210
|
+
}
|
|
211
|
+
forbidden {
|
|
212
|
+
publicar_sem_fontes_lidas
|
|
213
|
+
publicar_sem_revisao_sensibilidade
|
|
214
|
+
estetizar_sofrimento
|
|
215
|
+
atribuir_fala_a_grupo_sem_base
|
|
216
|
+
}
|
|
217
|
+
vinculos {
|
|
218
|
+
arquivo: "docs/profiles-author-agents-flow.md"
|
|
219
|
+
}
|
|
220
|
+
execucao {
|
|
221
|
+
idempotencia: verdadeiro
|
|
222
|
+
timeout: "15s"
|
|
223
|
+
criticidade_operacional: alta
|
|
224
|
+
}
|
|
225
|
+
guarantees {
|
|
226
|
+
status em [REVISAO_SENSIBILIDADE, PUBLICAVEL]
|
|
227
|
+
bloqueios existe
|
|
228
|
+
}
|
|
229
|
+
tests {
|
|
230
|
+
caso "entrega sensivel publicavel" {
|
|
231
|
+
given {
|
|
232
|
+
texto: "cena revisada"
|
|
233
|
+
fontes_lidas: verdadeiro
|
|
234
|
+
revisao_sensibilidade: verdadeiro
|
|
235
|
+
dano_mitigado: verdadeiro
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
expect {
|
|
239
|
+
sucesso: verdadeiro
|
|
240
|
+
status: "PUBLICAVEL"
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
flow author_flow_tema_sensivel {
|
|
247
|
+
obra: Texto
|
|
248
|
+
publico: PublicoSensivel
|
|
249
|
+
tema: Texto
|
|
250
|
+
fontes: Lista
|
|
251
|
+
limites: Lista
|
|
252
|
+
planejador: Texto
|
|
253
|
+
editor: Texto
|
|
254
|
+
revisor_cliche: Texto
|
|
255
|
+
sensitivity_reviewer: Texto
|
|
256
|
+
texto: Texto
|
|
257
|
+
etapa tema usa declarar_tema_sensivel com obra = obra, publico = publico, tema = tema, fontes = fontes, limites = limites
|
|
258
|
+
etapa agents usa montar_agents_author com planejador = planejador, editor = editor, revisor_cliche = revisor_cliche, sensitivity_reviewer = sensitivity_reviewer depende_de tema
|
|
259
|
+
etapa entrega usa validar_entrega_sensivel com texto = texto, fontes_lidas = verdadeiro, revisao_sensibilidade = verdadeiro, dano_mitigado = verdadeiro depende_de agents
|
|
260
|
+
effects {
|
|
261
|
+
auditoria author_flow_sensivel criticidade = alta
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
package/exemplos/automacao.sema
CHANGED
|
@@ -1,107 +1,107 @@
|
|
|
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
|
+
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 +1,54 @@
|
|
|
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
|
+
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
|
+
}
|