DocumentaçãoDocumentationDocumentaciónOne Conecta
ÍndiceIndexÍndice
Baixar .mdDownload .mdBajar .md
Você está vendo esta documentação online. No topo você também pode baixar o PDF (mesmo conteúdo desta página, no idioma e modo atuais) e o Markdown (Funcional ou Técnica).You are viewing this documentation online. At the top you can also download the PDF (same content as this page, in the current language and mode) and the Markdown (Functional or Technical).Está viendo esta documentación en línea. Arriba también puede bajar el PDF (mismo contenido de esta página, en el idioma y modo actuales) y el Markdown (Funcional o Técnica).
Transação gRPC · DispatchergRPC transaction · DispatcherTransacción gRPC · Dispatcher

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.

PúblicoAudiencePúblico
QA · Suporte · Produto · DevQA · Support · Product · DevQA · Soporte · Producto · Dev
CamadaLayerCapa
Escrita · DispatcherWrite · DispatcherEscritura · Dispatcher
RelacionadoRelatedRelacionado
AtualizadoUpdatedActualizado
17/08/20262026-08-17
Disponível emAvailable inDisponible en BR
01

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.

02

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:

  1. 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.
  2. 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).
  3. 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).
  4. 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.

03

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.
04

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.

05

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.

sendTransactionunary
MétodoMethodMétodo

rpc sendTransaction(InboxTransactionRequest) returns (InboxTransactionReply)

path /mn.bat.conectarep.dispatcher.DispatcherConectaRepService/sendTransaction

Request · InboxTransactionRequest
endpoint
string · #1 · endpoint alvo (config de ambiente)target endpoint (environment config)endpoint destino (config de ambiente)
serviceName
string · #2 · discriminadorCVRequestActionReport (sem prefixo Promo_)discriminatorCVRequestActionReport (no Promo_ prefix)discriminadorCVRequestActionReport (sin prefijo Promo_)
dateReference
string · #3 · AAAA-MM-DD do envio (submittedAt)YYYY-MM-DD of the submission (submittedAt)AAAA-MM-DD del envío (submittedAt)
transactionReference
string · #4 · o id da ação pendente (correlação)the pending action id (correlation)el id de la acción pendiente (correlación)
username
string · #5
message
string · #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)
manufacturer
string · #7 · dado do dispositivodevice datadato del dispositivo
model
string · #8 · dado do dispositivodevice datadato del dispositivo
deviceUuid
string · #9 · literal provisório hoje (ver Pendências)provisional literal today (see Pending)literal provisional hoy (ver Pendientes)
deviceVersion
string · #10
tid
int64 · #11 · id de transação para idempotência/replaytransaction id for idempotency/replayid de transacción para idempotencia/replay
Reply · InboxTransactionReply
status
int32 · #1 · status do ack (0 = sucesso)ack status (0 = success)status del ack (0 = éxito)
message
string · #2 · mensagem do backendbackend messagemensaje del backend
transactionId
int32 · #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.

06

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

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).

CampoFieldCampoTipoTypeTipoPapelRoleRol
pendingActionConectaVocePendingActionEntitysolicitaçã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
accountCodeStringcódigo SAP do varejo → sap + account.sapCoderetail SAP code → sap + account.sapCodecódigo SAP del punto de venta → sap + account.sapCode
usernameStringusername do representante de vendas → usernamesales rep username → usernameusername del representante de ventas → username
isApprovingbooldecisão → isApproved; controla reasondecision → isApproved; controls reasondecisión → isApproved; controla reason
rejectReasonString?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)
submittedAtDateTimerelógio (DateTimeUtils.now()) → dateTime + dateReferenceclock (DateTimeUtils.now()) → dateTime + dateReferencereloj (DateTimeUtils.now()) → dateTime + dateReference
07

Payload (message)

O JSON serializado no campo message do request — um único objeto plano. A tabela tem 4 colunasCampo 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 columnsJSON 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 columnasCampo 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
idstringpendingAction.idIdentificador 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).
usernamestringinput.usernameUsername do representante de vendas (resource.username; "" se ausente).Sales rep username (resource.username; "" if absent).Username del representante de ventas (resource.username; "" si ausente).
actionstringpendingAction.action.wireValueNatureza 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.
isApprovedboolinput.isApprovingtrue = aprovado; false = rejeitado.true = approved; false = rejected.true = aprobado; false = rechazado.
reasonstring?input.rejectReasonCondicional: 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.
sapstringinput.accountCodeCó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.
taxIdstringpendingAction.taxIdDocumento (CPF) do funcionário da solicitação.The request employee's tax id (CPF).Documento (CPF) del empleado de la solicitud.
emailstringpendingAction.emailE-mail do funcionário.The employee's email.E-mail del empleado.
namestringpendingAction.nameNome do funcionário.The employee's name.Nombre del empleado.
rolestringpendingAction.role.programLayerCodeCó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.
birthdaystringpendingAction.birthdateData 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.
dateTimestringinput.submittedAtTimestamp 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.
08

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
ConectaVocePendingActionTypewireValue
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
ClerkProgramLayerprogramLayerCodewireRole
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-ddDateTimeUtils.formatDate(format: isoDate); "" se birthdate == null.birthday (payload): yyyy-MM-ddDateTimeUtils.formatDate(format: isoDate); "" if birthdate == null.birthday (payload): yyyy-MM-ddDateTimeUtils.formatDate(format: isoDate); "" si birthdate == 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-ddDateTimeUtils.formatDate sobre o mesmo submittedAt.dateReference (envelope, outside the payload): yyyy-MM-ddDateTimeUtils.formatDate over the same submittedAt.dateReference (envelope, fuera del payload): yyyy-MM-ddDateTimeUtils.formatDate sobre el mismo submittedAt.
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).

09

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 the DispatcherOrchestrator'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 del DispatcherOrchestrator, no de una transacción única.
  • birthday e action/role viram "" inerte quando o dado de origem é null/unknown — sem erro, mas o backend recebe campo vazio.birthday and action/role become inert "" when the source data is null/unknown — no error, but the backend gets an empty field.birthday y action/role quedan en "" inerte cuando el dato de origen es null/unknown — sin error, pero el backend recibe campo vacío.
  • dateTime usa DateTime.toString() (com microssegundos e sem timezone), diferente do yyyy-MM-dd de birthday/dateReference — inconsistência de formato mantida verbatim do contrato.dateTime uses DateTime.toString() (with microseconds and no timezone), unlike the yyyy-MM-dd of birthday/dateReference — a format inconsistency kept verbatim from the contract.dateTime usa DateTime.toString() (con microsegundos y sin timezone), distinto del yyyy-MM-dd de birthday/dateReference — inconsistencia de formato mantenida verbatim del contrato.
  • Transporte: deviceUuid vai como literal provisório no gateway (pendência conhecida do Dispatcher, comum a todas as transações).Transport: deviceUuid ships as a provisional literal in the gateway (known Dispatcher pending item, common to all transactions).Transporte: deviceUuid va 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.

BRx CL ZA AR PY PE
disponívelavailabledisponible presente, desligadopresent, offpresente, apagado ausenteabsentausente
BR

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.