Relatório de ação Conecta VocêConecta Você request action reportInforme de acción Conecta Você
A transação de registro que documenta a decisão do representante de vendas sobre uma solicitação do programa Conecta Você — aprovar ou rejeitar o cadastro/edição de um funcionário do varejo. É a segunda perna do envio: dispara automaticamente, logo depois que a ação de solicitação é aceita, mandando um relatório com os dados da pessoa e o veredito. Toda a montagem do payload vive no builder. The record transaction that documents the sales rep's decision on a Conecta Você program request — approving or rejecting a retail employee's enrollment/edit. It's the second leg of the send: it fires automatically, right after the request action is accepted, submitting a report with the person's data and the verdict. All payload assembly lives in the builder. La transacción de registro que documenta la decisión del representante de ventas sobre una solicitud del programa Conecta Você — aprobar o rechazar el alta/edición de un empleado del punto de venta. Es la segunda pierna del envío: se dispara automáticamente, justo después de que la acción de solicitud es aceptada, enviando un informe con los datos de la persona y el veredicto. Todo el armado del payload vive en el builder.
O que é e quando aconteceWhat it is and when it happensQué es y cuándo ocurre
O Conecta Você é o programa de fidelidade dos funcionários do varejo. Quando um varejo quer cadastrar ou alterar um funcionário no programa, a solicitação fica pendente de aprovação do representante de vendas. Ao aprovar ou rejeitar essa solicitação, o app manda dois envios ao backend: primeiro a ação em si (que efetiva a decisão) e, logo em seguida, este relatório — um registro do que foi decidido, com os dados da pessoa e o motivo (quando rejeitado). Conecta Você is the retail employees' loyalty program. When a retail wants to enroll or edit an employee in the program, the request stays pending the sales rep's approval. When the rep approves or rejects that request, the app sends two things to the backend: first the action itself (which enacts the decision) and, right after, this report — a record of what was decided, with the person's data and the reason (when rejected). Conecta Você es el programa de fidelidad de los empleados del punto de venta. Cuando un punto de venta quiere dar de alta o editar a un empleado en el programa, la solicitud queda pendiente de aprobación del representante de ventas. Al aprobar o rechazar esa solicitud, la app envía dos cosas al backend: primero la acción en sí (que efectúa la decisión) y, justo después, este informe — un registro de lo decidido, con los datos de la persona y el motivo (cuando se rechaza).
AprovaçãoApprovalAprobación
O rep aceita a solicitação. O relatório registra o veredito sem motivo.The rep accepts the request. The report records the verdict with no reason.El rep acepta la solicitud. El informe registra el veredicto sin motivo.
RejeiçãoRejectionRechazo
O rep recusa e escolhe um motivo numa lista. O motivo entra no relatório.The rep declines and picks a reason from a list. The reason goes into the report.El rep rechaza y elige un motivo de una lista. El motivo entra en el informe.
O que registraWhat it recordsQué registra
Nome, e-mail, documento, função e nascimento do funcionário, mais o veredito e a data.The employee's name, email, tax id, role and birthday, plus the verdict and the date.Nombre, e-mail, documento, función y nacimiento del empleado, más el veredicto y la fecha.
Automático, sem passo extraAutomatic, no extra stepAutomático, sin paso extra O rep não dispara o relatório à mão: ele sai sozinho depois que a ação de aprovar/rejeitar é aceita. Para o rep, o gesto é um só — decidir a solicitação. The rep doesn't fire the report by hand: it goes out on its own once the approve/reject action is accepted. For the rep, there's a single gesture — deciding the request. El rep no dispara el informe a mano: sale solo una vez que la acción de aprobar/rechazar es aceptada. Para el rep, el gesto es uno solo — decidir la solicitud.
Fluxo de telas que disparaScreen flow that fires itFlujo de pantallas que lo dispara
O relatório é o último passo da jornada de aprovação. As telas pertencem à feature de Conecta Você; aqui só situamos onde o envio acontece:The report is the last step of the approval journey. The screens belong to the Conecta Você feature; here we only place where the send happens:El informe es el último paso del recorrido de aprobación. Las pantallas pertenecen a la feature de Conecta Você; aquí solo situamos dónde ocurre el envío:
- Aprovações Conecta VocêConecta Você approvalsAprobaciones Conecta VocêO rep abre a lista de varejos com solicitações pendentes.The rep opens the list of retails with pending requests.El rep abre la lista de puntos de venta con solicitudes pendientes.
- Detalhe da solicitaçãoRequest detailDetalle de la solicitudVê os dados do funcionário (nome, função, documento) e a natureza da solicitação (cadastro ou edição).Sees the employee's data (name, role, tax id) and the nature of the request (enrollment or edit).Ve los datos del empleado (nombre, función, documento) y la naturaleza de la solicitud (alta o edición).
- Aprovar / RejeitarApprove / RejectAprobar / RechazarToca em aprovar (modal de confirmação) ou rejeitar (modal que pede o motivo numa lista).Taps approve (confirmation modal) or reject (a modal that asks for a reason from a list).Toca aprobar (modal de confirmación) o rechazar (modal que pide el motivo de una lista).
- Confirmar → ação + relatórioConfirm → action + reportConfirmar → acción + informeAo confirmar, o app manda a ação; se aceita, dispara na sequência este relatório. É este toque que aciona a transação.On confirm, the app sends the action; if accepted, it fires this report next. This tap is what triggers the transaction.Al confirmar, la app envía la acción; si es aceptada, dispara a continuación este informe. Este toque es lo que activa la transacción.
Duas transações, um gestoTwo transactions, one gestureDos transacciones, un gesto O mesmo toque envia a ação de solicitação (que efetiva a decisão) e, em seguida, este relatório (que a registra). Ver as duas em conjunto ajuda a entender o par. The same tap sends the request action (which enacts the decision) and, next, this report (which records it). Reading both together clarifies the pair. El mismo toque envía la acción de solicitud (que efectúa la decisión) y, a continuación, este informe (que la registra). Ver ambas juntas ayuda a entender el par.
Depois do envioAfter sendingDespués del envío
- Confirmação ao repConfirmation to the repConfirmación al rep
- Quando os dois envios são aceitos, o app mostra uma mensagem de sucesso, remove a solicitação da lista de pendentes e volta para a tela anterior.When both sends are accepted, the app shows a success message, removes the request from the pending list and returns to the previous screen.Cuando ambos envíos son aceptados, la app muestra un mensaje de éxito, quita la solicitud de la lista de pendientes y vuelve a la pantalla anterior.
- Ordem dos dois enviosOrder of the two sendsOrden de los dos envíos
- O relatório só sai depois que a ação é aceita. Se a ação falha, o relatório não é enviado e o rep vê um erro — a decisão não é registrada.The report only goes out after the action is accepted. If the action fails, the report isn't sent and the rep sees an error — the decision isn't recorded.El informe solo sale después de que la acción es aceptada. Si la acción falla, el informe no se envía y el rep ve un error — la decisión no se registra.
- Acompanhar o envioTracking the sendSeguir el envío
- O status técnico do despacho (enviado, em fila, com erro) pode ser acompanhado na central de dados / tracking de despachos do app — útil para suporte investigar um envio.The dispatch's technical status (sent, queued, errored) can be followed in the app's data center / dispatch tracking — useful for support to investigate a send.El estado técnico del despacho (enviado, en cola, con error) puede seguirse en el centro de datos / tracking de despachos de la app — útil para que soporte investigue un envío.
Visão técnicaTechnical overviewVisión técnica
Relatório de ação Conecta Você é a transação de saída que registra a decisão de aprovar/rejeitar uma solicitação do programa. É a segunda de duas pernas disparadas por SubmitConectaVoceRequestActionUseCase: só é montada e despachada após a ação (CVRequestAction) retornar sucesso.
Conecta Você request action report is the outbound transaction that records the decision to approve/reject a program request. It's the second of two legs fired by SubmitConectaVoceRequestActionUseCase: it's only assembled and dispatched after the action (CVRequestAction) returns success.
Informe de acción Conecta Você es la transacción de salida que registra la decisión de aprobar/rechazar una solicitud del programa. Es la segunda de dos piernas disparadas por SubmitConectaVoceRequestActionUseCase: solo se arma y despacha después de que la acción (CVRequestAction) retorna éxito.
Payload planoFlat payloadPayload plano
12 chaves num único objeto JSON — dados do funcionário, veredito e datas. Sem listas nem sub-objetos.12 keys in a single flat JSON object — employee data, verdict and dates. No lists or sub-objects.12 claves en un único objeto JSON plano — datos del empleado, veredicto y fechas. Sin listas ni subobjetos.
Um serviceNameOne serviceNameUn serviceName
CVRequestActionReport, sem variantes e sem prefixo Promo_ (hasPromotion: false).CVRequestActionReport, no variants and no Promo_ prefix (hasPromotion: false).CVRequestActionReport, sin variantes y sin prefijo Promo_ (hasPromotion: false).
RPC genéricoGeneric RPCRPC genérico
Passa pelo mesmo sendTransaction de todas as transações; o JSON vai em message e o serviceName discrimina.Goes through the same sendTransaction as every transaction; the JSON rides in message and serviceName discriminates.Pasa por el mismo sendTransaction de todas las transacciones; el JSON va en message y el serviceName discrimina.
FontesSourcesFuentes
BuildConectaVoceRequestActionReportDispatcherPayloadUseCase + ConectaVoceRequestActionReportDispatcherPayloadInput + DispatcherType.cvRequestActionReport + DispatcherConectaRep.proto. O input carrega entities cruas de domínio (CLAUDE.md §36); o build() constrói todo o wire.
BuildConectaVoceRequestActionReportDispatcherPayloadUseCase + ConectaVoceRequestActionReportDispatcherPayloadInput + DispatcherType.cvRequestActionReport + DispatcherConectaRep.proto. The input carries raw domain entities (CLAUDE.md §36); build() constructs the entire wire.
BuildConectaVoceRequestActionReportDispatcherPayloadUseCase + ConectaVoceRequestActionReportDispatcherPayloadInput + DispatcherType.cvRequestActionReport + DispatcherConectaRep.proto. El input lleva entities crudas de dominio (CLAUDE.md §36); build() construye todo el wire.
Transporte gRPCgRPC transportTransporte gRPC
DispatcherConectaRep.proto · proto3 · package mn.bat.conectarep.dispatcher. O serviço expõe um único RPC genérico — não existe mensagem por transação. TODA transação de escrita do app usa este mesmo sendTransaction; o que muda é o serviceName (discriminador) e o JSON dentro de message.The service exposes a single generic RPC — there's no per-transaction message. EVERY write transaction in the app uses this same sendTransaction; what changes is the serviceName (discriminator) and the JSON inside message.El servicio expone un único RPC genérico — no existe mensaje por transacción. TODA transacción de escritura de la app usa este mismo sendTransaction; lo que cambia es el serviceName (discriminador) y el JSON dentro de message.
sendTransactionunaryrpc sendTransaction(InboxTransactionRequest) returns (InboxTransactionReply)
path /mn.bat.conectarep.dispatcher.DispatcherConectaRepService/sendTransaction
InboxTransactionRequestendpointstring· #1 · endpoint alvo (config de ambiente)target endpoint (environment config)endpoint destino (config de ambiente)serviceNamestring· #2 · discriminador —CVRequestActionReport(sem prefixoPromo_)discriminator —CVRequestActionReport(noPromo_prefix)discriminador —CVRequestActionReport(sin prefijoPromo_)dateReferencestring· #3 ·AAAA-MM-DDdo envio (submittedAt)YYYY-MM-DDof the submission (submittedAt)AAAA-MM-DDdel envío (submittedAt)transactionReferencestring· #4 · oidda ação pendente (correlação)the pending actionid(correlation)elidde la acción pendiente (correlación)usernamestring· #5messagestring· #6 · o payload JSON serializado (a tabela da seção 07)the JSON payload serialized (the table in section 07)el payload JSON serializado (la tabla de la sección 07)manufacturerstring· #7 · dado do dispositivodevice datadato del dispositivomodelstring· #8 · dado do dispositivodevice datadato del dispositivodeviceUuidstring· #9 · literal provisório hoje (ver Pendências)provisional literal today (see Pending)literal provisional hoy (ver Pendientes)deviceVersionstring· #10tidint64· #11 · id de transação para idempotência/replaytransaction id for idempotency/replayid de transacción para idempotencia/replay
InboxTransactionReplystatusint32· #1 · status do ack (0 = sucesso)ack status (0 = success)status del ack (0 = éxito)messagestring· #2 · mensagem do backendbackend messagemensaje del backendtransactionIdint32· #3 · id atribuído pelo backend (correlação)backend-assigned id (correlation)id asignado por el backend (correlación)
Envelope → Request
O builder devolve um DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). O account é um DispatchAccountEntity(sapCode: accountCode). O DispatcherGateway serializa payload em JSON para message, copia serviceName/dateReference/transactionReference, preenche os campos de dispositivo e o bearer token de auth, e chama o RPC.
The builder returns a DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). The account is a DispatchAccountEntity(sapCode: accountCode). The DispatcherGateway serializes payload to JSON into message, copies serviceName/dateReference/transactionReference, fills in the device fields and the auth bearer token, and calls the RPC.
El builder devuelve un DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). El account es un DispatchAccountEntity(sapCode: accountCode). El DispatcherGateway serializa payload a JSON en message, copia serviceName/dateReference/transactionReference, completa los campos del dispositivo y el bearer token de auth, y llama al RPC.
DispatcherType.cvRequestActionReport tem destination = none — não há roteamento downstream (Salesforce/BatchAPI/competitor); o backend consome o relatório direto.DispatcherType.cvRequestActionReport has destination = none — there's no downstream routing (Salesforce/BatchAPI/competitor); the backend consumes the report directly.DispatcherType.cvRequestActionReport tiene destination = none — no hay ruteo downstream (Salesforce/BatchAPI/competitor); el backend consume el informe directo.
Como é disparadoHow it's firedCómo se dispara
A transação é orquestrada pelo fluxo de aprovação Conecta Você. O notifier apenas reúne entities cruas e valores injetados; o builder é o dono único de todo rename, formatação de data e derivação wire. O SubmitConectaVoceRequestActionUseCase despacha duas pernas em sequência — a ação (CVRequestAction) e, só se ela vencer, este relatório:The transaction is orchestrated by the Conecta Você approval flow. The notifier only gathers raw entities and injected values; the builder is the sole owner of every rename, date formatting and wire derivation. SubmitConectaVoceRequestActionUseCase dispatches two legs in sequence — the action (CVRequestAction) and, only if it wins, this report:La transacción se orquesta desde el flujo de aprobación Conecta Você. El notifier solo reúne entities crudas y valores inyectados; el builder es el dueño único de todo rename, formateo de fecha y derivación wire. SubmitConectaVoceRequestActionUseCase despacha dos piernas en secuencia — la acción (CVRequestAction) y, solo si gana, este informe:
- ConectaVoceApprovalDetailNotifierapprove / reject
- reúne pendingAction + username + submittedAtgathers pendingAction + username + submittedAtreúne pendingAction + username + submittedAtSubmitConectaVoceRequestActionUseCase
- 1ª perna1st leg1ª piernaCVRequestActionação — se sucesso →action — on success →acción — si éxito →
- 2ª perna2nd leg2ª piernaConectaVoceRequestActionReportDispatcherPayloadInput
- build()BuildConectaVoceRequestActionReportDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- devolvereturnsdevuelveDispatcherEnvelope
- dispatchDispatcherOrchestrator
- serializa + authserialize + authserializa + authDispatcherGateway
- sendTransactionBackendgRPC
- serializa + authserialize + authserializa + authDispatcherGateway
- dispatchDispatcherOrchestrator
- devolvereturnsdevuelveDispatcherEnvelope
- build()BuildConectaVoceRequestActionReportDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- reúne pendingAction + username + submittedAtgathers pendingAction + username + submittedAtreúne pendingAction + username + submittedAtSubmitConectaVoceRequestActionUseCase
O input (entities cruas)The input (raw entities)El input (entities crudas)
ConectaVoceRequestActionReportDispatcherPayloadInput (Freezed). Carrega o dado como existe no domínio; nada de formato wire. O relógio chega como submittedAt (via DateTimeUtils.now()); o username vem de currentResourceProvider (resource.username, "" se ausente).ConectaVoceRequestActionReportDispatcherPayloadInput (Freezed). Carries data as it exists in the domain; no wire shaping. The clock arrives as submittedAt (via DateTimeUtils.now()); username comes from currentResourceProvider (resource.username, "" if absent).ConectaVoceRequestActionReportDispatcherPayloadInput (Freezed). Lleva el dato como existe en el dominio; nada de formato wire. El reloj llega como submittedAt (vía DateTimeUtils.now()); username viene de currentResourceProvider (resource.username, "" si ausente).
| CampoFieldCampo | TipoTypeTipo | PapelRoleRol |
|---|---|---|
pendingAction | ConectaVocePendingActionEntity | solicitação do funcionário — id, action, name, role, phone, email, taxId, birthdatethe employee's request — id, action, name, role, phone, email, taxId, birthdatesolicitud del empleado — id, action, name, role, phone, email, taxId, birthdate |
accountCode | String | código SAP do varejo → sap + account.sapCoderetail SAP code → sap + account.sapCodecódigo SAP del punto de venta → sap + account.sapCode |
username | String | username do representante de vendas → usernamesales rep username → usernameusername del representante de ventas → username |
isApproving | bool | decisão → isApproved; controla reasondecision → isApproved; controls reasondecisión → isApproved; controla reason |
rejectReason | String? | motivo escolhido no modal de rejeição (null quando aprovando)reason picked in the reject modal (null when approving)motivo elegido en el modal de rechazo (null cuando se aprueba) |
submittedAt | DateTime | relógio (DateTimeUtils.now()) → dateTime + dateReferenceclock (DateTimeUtils.now()) → dateTime + dateReferencereloj (DateTimeUtils.now()) → dateTime + dateReference |
Payload (message)
O JSON serializado no campo message do request — um único objeto plano. A tabela tem 4 colunas — Campo JSON · Tipo · Origem do Dado · Regra — e lista todas as 12 chaves que o build() emite. Campo, Tipo e Origem são código cru; só a Regra é prosa. Um exemplo completo está em transaction_example.json, ao lado deste doc.The JSON serialized into the request's message field — a single flat object. The table has 4 columns — JSON field · Type · Data source · Rule — and lists all 12 keys that build() emits. Field, Type and Source are raw code; only Rule is prose. A full example sits in transaction_example.json, next to this doc.El JSON serializado en el campo message del request — un único objeto plano. La tabla tiene 4 columnas — Campo JSON · Tipo · Origen del Dato · Regla — y lista todas las 12 claves que build() emite. Campo, Tipo y Origen son código crudo; solo la Regla es prosa. Un ejemplo completo está en transaction_example.json, junto a este doc.
| Campo JSONJSON fieldCampo JSON | TipoTypeTipo | Origem do DadoData sourceOrigen del Dato | Regra / ObservaçãoRule / NoteRegla / Observación |
|---|---|---|---|
id | string | pendingAction.id | Identificador da ação pendente. Vai também como transactionReference do envelope (correlação).Pending action identifier. Also rides as the envelope transactionReference (correlation).Identificador de la acción pendiente. Va también como transactionReference del envelope (correlación). |
username | string | input.username | Username do representante de vendas (resource.username; "" se ausente).Sales rep username (resource.username; "" if absent).Username del representante de ventas (resource.username; "" si ausente). |
action | string | pendingAction.action.wireValue | Natureza da solicitação: "creation" (cadastro) ou "editing" (edição); "" quando unknown. Enum ConectaVocePendingActionType.Request nature: "creation" or "editing"; "" when unknown. Enum ConectaVocePendingActionType.Naturaleza de la solicitud: "creation" o "editing"; "" cuando unknown. Enum ConectaVocePendingActionType. |
isApproved | bool | input.isApproving | true = aprovado; false = rejeitado.true = approved; false = rejected.true = aprobado; false = rechazado. |
reason | string? | input.rejectReason | Condicional: null quando isApproving (aprovação não tem motivo); senão o rejectReason escolhido no modal. Serializado como JSON null.Conditional: null when isApproving (approval has no reason); otherwise the rejectReason picked in the modal. Serialized as JSON null.Condicional: null cuando isApproving (la aprobación no tiene motivo); si no, el rejectReason elegido en el modal. Serializado como JSON null. |
sap | string | input.accountCode | Código SAP do varejo dono da solicitação.SAP code of the retail owning the request.Código SAP del punto de venta dueño de la solicitud. |
taxId | string | pendingAction.taxId | Documento (CPF) do funcionário da solicitação.The request employee's tax id (CPF).Documento (CPF) del empleado de la solicitud. |
email | string | pendingAction.email | E-mail do funcionário.The employee's email.E-mail del empleado. |
name | string | pendingAction.name | Nome do funcionário.The employee's name.Nombre del empleado. |
role | string | pendingAction.role.programLayerCode | Código de camada do programa: "BATCONVOCE23ATEND" (atendente) ou "BATCONVOCE23GER" (gerente); "" quando unknown. Enum ClerkProgramLayer.Program layer code: "BATCONVOCE23ATEND" (attendant) or "BATCONVOCE23GER" (manager); "" when unknown. Enum ClerkProgramLayer.Código de capa del programa: "BATCONVOCE23ATEND" (atendente) o "BATCONVOCE23GER" (gerente); "" cuando unknown. Enum ClerkProgramLayer. |
birthday | string | pendingAction.birthdate | Data de nascimento formatada em yyyy-MM-dd (DateTimeUtils.formatDate · DateFormatType.isoDate); "" quando birthdate é null.Birth date formatted as yyyy-MM-dd (DateTimeUtils.formatDate · DateFormatType.isoDate); "" when birthdate is null.Fecha de nacimiento en yyyy-MM-dd (DateTimeUtils.formatDate · DateFormatType.isoDate); "" cuando birthdate es null. |
dateTime | string | input.submittedAt | Timestamp do envio via DateTimeUtils.formatTimestamp (= DateTime.toString(), ex. 2026-08-17 14:32:10.482913) — formato diferente de birthday e dateReference.Submission timestamp via DateTimeUtils.formatTimestamp (= DateTime.toString(), e.g. 2026-08-17 14:32:10.482913) — a different format from birthday and dateReference.Timestamp del envío vía DateTimeUtils.formatTimestamp (= DateTime.toString(), p. ej. 2026-08-17 14:32:10.482913) — formato distinto de birthday y dateReference. |
Regras de negócioBusiness rulesReglas de negocio
Motivo condicionalConditional reasonMotivo condicional reason ← isApproving
O build() resolve reason antes de montar o payload: input.isApproving ? null : input.rejectReason. Ou seja, a aprovação nunca carrega motivo; só a rejeição envia o texto escolhido no modal.build() resolves reason before assembling the payload: input.isApproving ? null : input.rejectReason. So an approval never carries a reason; only a rejection sends the text picked in the modal.build() resuelve reason antes de armar el payload: input.isApproving ? null : input.rejectReason. O sea, la aprobación nunca lleva motivo; solo el rechazo envía el texto elegido en el modal.
action → wireValueaction → wireValueaction → wireValue ConectaVocePendingActionType
| ConectaVocePendingActionType | wireValue |
|---|---|
creation | "creation" |
edition | "editing" |
unknown | "" |
Note o descasamento nome↔wire: o case edition emite "editing".Note the name↔wire mismatch: the edition case emits "editing".Note el desajuste nombre↔wire: el case edition emite "editing".
role → programLayerCoderole → programLayerCoderole → programLayerCode ClerkProgramLayer
| ClerkProgramLayer | programLayerCode | wireRole |
|---|---|---|
attendant | "BATCONVOCE23ATEND" | "Conecta Voce - Atendente" |
manager | "BATCONVOCE23GER" | "Conecta Voce - Gerente" |
unknown | "" | "" |
O payload emite o programLayerCode (não o wireRole). O código carrega o ano do programa (23) verbatim do contrato.The payload emits the programLayerCode (not the wireRole). The code carries the program year (23) verbatim from the contract.El payload emite el programLayerCode (no el wireRole). El código lleva el año del programa (23) verbatim del contrato.
Formatos de dataDate formatsFormatos de fecha birthday · dateTime · dateReference
birthday(payload):yyyy-MM-dd—DateTimeUtils.formatDate(format: isoDate);""sebirthdate == null.birthday(payload):yyyy-MM-dd—DateTimeUtils.formatDate(format: isoDate);""ifbirthdate == null.birthday(payload):yyyy-MM-dd—DateTimeUtils.formatDate(format: isoDate);""sibirthdate == null.dateTime(payload):DateTime.toString()—yyyy-MM-dd HH:mm:ss.mmmmmm, com microssegundos.dateTime(payload):DateTime.toString()—yyyy-MM-dd HH:mm:ss.mmmmmm, with microseconds.dateTime(payload):DateTime.toString()—yyyy-MM-dd HH:mm:ss.mmmmmm, con microsegundos.dateReference(envelope, fora do payload):yyyy-MM-dd—DateTimeUtils.formatDatesobre o mesmosubmittedAt.dateReference(envelope, outside the payload):yyyy-MM-dd—DateTimeUtils.formatDateover the samesubmittedAt.dateReference(envelope, fuera del payload):yyyy-MM-dd—DateTimeUtils.formatDatesobre el mismosubmittedAt.
Duas pernas, uma decisãoTwo legs, one decisionDos piernas, una decisión SubmitConectaVoceRequestActionUseCase
O use case dispara a ação (CVRequestAction) e, só se ela retornar Success, monta e dispara este relatório. O resultado final da operação é o resultado da segunda perna (o relatório).The use case fires the action (CVRequestAction) and, only if it returns Success, assembles and dispatches this report. The operation's final result is the second leg's result (the report).El use case dispara la acción (CVRequestAction) y, solo si retorna Success, arma y despacha este informe. El resultado final de la operación es el de la segunda pierna (el informe).
Pendências / roadmapPending / roadmapPendientes / roadmap
Comportamentos documentados fiéis ao estado atual do código (nunca descritos como se fossem outra coisa):Behaviors documented faithfully to the current code state (never described as something they aren't):Comportamientos documentados fieles al estado actual del código (nunca descritos como si fueran otra cosa):
Estado atualCurrent stateEstado actual
- Não atômico com a ação: ação e relatório são dois despachos separados. Se a ação vence mas o relatório falha, a decisão foi efetivada porém não registrada — a recuperação depende do replay idempotente do
DispatcherOrchestrator, não de uma transação única.Not atomic with the action: action and report are two separate dispatches. If the action wins but the report fails, the decision was enacted yet not recorded — recovery relies on theDispatcherOrchestrator's idempotent replay, not on a single transaction.No atómico con la acción: acción e informe son dos despachos separados. Si la acción gana pero el informe falla, la decisión se efectuó pero no se registró — la recuperación depende del replay idempotente delDispatcherOrchestrator, no de una transacción única. birthdayeaction/roleviram""inerte quando o dado de origem énull/unknown— sem erro, mas o backend recebe campo vazio.birthdayandaction/rolebecome inert""when the source data isnull/unknown— no error, but the backend gets an empty field.birthdayyaction/rolequedan en""inerte cuando el dato de origen esnull/unknown— sin error, pero el backend recibe campo vacío.dateTimeusaDateTime.toString()(com microssegundos e sem timezone), diferente doyyyy-MM-dddebirthday/dateReference— inconsistência de formato mantida verbatim do contrato.dateTimeusesDateTime.toString()(with microseconds and no timezone), unlike theyyyy-MM-ddofbirthday/dateReference— a format inconsistency kept verbatim from the contract.dateTimeusaDateTime.toString()(con microsegundos y sin timezone), distinto delyyyy-MM-dddebirthday/dateReference— inconsistencia de formato mantenida verbatim del contrato.- Transporte:
deviceUuidvai como literal provisório no gateway (pendência conhecida do Dispatcher, comum a todas as transações).Transport:deviceUuidships as a provisional literal in the gateway (known Dispatcher pending item, common to all transactions).Transporte:deviceUuidva como literal provisional en el gateway (pendiente conocido del Dispatcher, común a todas las transacciones).
Transação irmãSister transactionTransacción hermana
Esta transação é a segunda perna da 10 · Ação de solicitação Conecta Você (CVRequestAction) — doc separado que efetiva a decisão.
This transaction is the second leg of 10 · Conecta Você request action (CVRequestAction) — a separate doc that enacts the decision.
Esta transacción es la segunda pierna de 10 · Acción de solicitud Conecta Você (CVRequestAction) — doc separado que efectúa la decisión.
MercadosMarketsMercados
A disponibilidade vem de DispatcherType.cvRequestActionReport.enabledMarkets, que lista apenas BR. O programa Conecta Você é exclusivo do Brasil; nenhum outro mercado dispara esta transação.Availability comes from DispatcherType.cvRequestActionReport.enabledMarkets, which lists BR only. The Conecta Você program is Brazil-exclusive; no other market fires this transaction.La disponibilidad viene de DispatcherType.cvRequestActionReport.enabledMarkets, que lista solo BR. El programa Conecta Você es exclusivo de Brasil; ningún otro mercado dispara esta transacción.
Só no BrasilBrazil onlySolo Brasil
Conecta Você é um programa exclusivo do Brasil. A aprovação/rejeição de funcionários e o relatório correspondente só existem no BR. O role emite os códigos BATCONVOCE23* do programa brasileiro.
Conecta Você is a Brazil-exclusive program. The employee approval/rejection and its report exist only in BR. role emits the Brazilian program's BATCONVOCE23* codes.
Conecta Você es un programa exclusivo de Brasil. La aprobación/rechazo de empleados y su informe solo existen en BR. role emite los códigos BATCONVOCE23* del programa brasileño.
CL · ZA · AR · PY · PE
Existem como mercados do app, mas não têm o programa Conecta Você — nenhum aparece em enabledMarkets. Esta transação nunca é disparada fora do Brasil.
They exist as app markets, but have no Conecta Você program — none appears in enabledMarkets. This transaction is never fired outside Brazil.
Existen como mercados de la app, pero no tienen el programa Conecta Você — ninguno aparece en enabledMarkets. Esta transacción nunca se dispara fuera de Brasil.