Status de balconistaClerk statusEstado de dependiente
A transação de escrita que ativa ou inativa um balconista no programa Conecta Você. É o par de status do cadastro feito pela transação de cadastro de balconista: sempre que um balconista é cadastrado ou editado o app envia esta transação em seguida, e ela também é disparada sozinha quando o representante de vendas apenas troca o status. O payload é enxuto — seis campos — e todo o contrato wire vive no builder. The write transaction that activates or deactivates a clerk in the Conecta Você program. It's the status counterpart to the record created by the clerk upload transaction: whenever a clerk is created or edited the app sends this transaction right after, and it also fires on its own when the sales rep just toggles the status. The payload is lean — six fields — and all wire-contract shaping lives in the builder. La transacción de escritura que activa o inactiva a un dependiente en el programa Conecta Você. Es la contraparte de estado del registro creado por la transacción de alta de dependiente: cada vez que un dependiente se crea o edita, la app envía esta transacción a continuación, y también se dispara sola cuando el representante de ventas solo cambia el estado. El payload es escueto — seis campos — y toda la construcción del contrato wire 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 relacionamento com balconistas do varejo. Cada balconista pode estar ativo (participando) ou inativo (fora do programa). Quando o representante de vendas muda esse status, o app envia esta transação para o backend registrar a mudança. Conecta Você is the relationship program for the retail's clerks. Each clerk can be active (taking part) or inactive (out of the program). When the sales rep changes that status, the app sends this transaction so the backend records the change. Conecta Você es el programa de relación con los dependientes del punto de venta. Cada dependiente puede estar activo (participando) o inactivo (fuera del programa). Cuando el representante de ventas cambia ese estado, la app envía esta transacción para que el backend registre el cambio.
A mudança de status acontece em dois momentos:The status change happens in two moments:El cambio de estado ocurre en dos momentos:
Ao cadastrar / editarOn create / editAl crear / editar
Depois de cadastrar ou editar um balconista, o app envia o status automaticamente logo após o cadastro — normalmente ativar.After creating or editing a clerk, the app sends the status automatically right after the upload — usually activate.Después de crear o editar un dependiente, la app envía el estado automáticamente justo después del alta — normalmente activar.
Ao trocar o statusOn status toggleAl cambiar el estado
No detalhe do balconista, o rep pode ativar ou inativar direto, sem editar os dados — só o status muda.On the clerk's detail, the rep can activate or deactivate directly, without editing the data — only the status changes.En el detalle del dependiente, el rep puede activar o inactivar directamente, sin editar los datos — solo cambia el estado.
Duas açõesTwo actionsDos acciones A transação tem só duas ações possíveis: ativar e inativar. Não há outros status — é um liga/desliga do balconista no programa. The transaction has only two possible actions: activate and deactivate. There are no other statuses — it's an on/off switch for the clerk in the program. La transacción tiene solo dos acciones posibles: activar e inactivar. No hay otros estados — es un encendido/apagado del dependiente en el programa.
Fluxo de telas que disparaScreen flow that fires itFlujo de pantallas que lo dispara
As telas do caminho pertencem à feature de Conecta Você e ao detalhe de balconista; aqui só situamos onde o envio de status acontece:The screens along the way belong to the Conecta Você feature and the clerk detail; here we only place where the status send happens:Las pantallas del camino pertenecen a la feature de Conecta Você y al detalle de dependiente; aquí solo situamos dónde ocurre el envío de estado:
- Conecta Você (visita)Conecta Você (visit)Conecta Você (visita)Dentro de uma visita ao varejo, o rep abre o Conecta Você e vê a lista de balconistas.Inside a retail visit, the rep opens Conecta Você and sees the clerk list.Dentro de una visita al punto de venta, el rep abre Conecta Você y ve la lista de dependientes.
- Detalhe do balconistaClerk detailDetalle del dependienteToca em um balconista para ver os dados e o status atual (ativo / inativo).Taps a clerk to see the data and current status (active / inactive).Toca un dependiente para ver los datos y el estado actual (activo / inactivo).
- Ativar / inativarActivate / deactivateActivar / inactivarToca no botão de status; uma confirmação aparece antes de aplicar.Taps the status button; a confirmation appears before applying.Toca el botón de estado; aparece una confirmación antes de aplicar.
- Confirmar → esta transaçãoConfirm → this transactionConfirmar → esta transacciónAo confirmar, o app dispara o envio de status. É este toque que aciona a transação.On confirm, the app fires the status send. This tap is what triggers the transaction.Al confirmar, la app dispara el envío de estado. Este toque es lo que activa la transacción.
Junto com o cadastroAlongside the uploadJunto con el alta Quando o rep cadastra ou edita um balconista pela transação de cadastro, o app envia o status logo depois, sem um toque separado — o rep faz um só gesto (salvar) e as duas transações partem em sequência. When the rep creates or edits a clerk through the upload transaction, the app sends the status right after, with no separate tap — the rep makes a single gesture (save) and both transactions go out in sequence. Cuando el rep crea o edita un dependiente por la transacción de alta, la app envía el estado justo después, sin un toque separado — el rep hace un solo gesto (guardar) y ambas transacciones salen en secuencia.
Depois do envioAfter sendingDespués del envío
- Confirmação ao repConfirmation to the repConfirmación al rep
- Quando o backend aceita, o app mostra um aviso verde de sucesso e volta para a tela anterior; o balconista passa a constar com o novo status na lista.When the backend accepts it, the app shows a green success notice and returns to the previous screen; the clerk now shows the new status in the list.Cuando el backend lo acepta, la app muestra un aviso verde de éxito y vuelve a la pantalla anterior; el dependiente pasa a figurar con el nuevo estado en la lista.
- Ligada ao cadastroTied to the uploadLigada al alta
- Quando o status vai junto com um cadastro/edição, o app só considera o balconista salvo se as duas transações forem aceitas (primeiro o cadastro, depois o status). Se o status falha, o rep vê um aviso de erro.When the status goes together with a create/edit, the app only considers the clerk saved if both transactions are accepted (upload first, then status). If the status fails, the rep sees an error notice.Cuando el estado va junto con un alta/edición, la app solo considera el dependiente guardado si las dos transacciones son aceptadas (primero el alta, luego el estado). Si el estado falla, el rep ve un aviso de error.
- Sem internetOfflineSin internet
- O envio pode entrar em fila e ser reenviado quando a conexão volta; o sistema usa um identificador de transação para evitar duplicidade num reenvio.The send may be queued and retried when the connection returns; the system uses a transaction id to avoid duplication on a resend.El envío puede quedar en cola y reintentarse cuando vuelve la conexión; el sistema usa un identificador de transacción para evitar duplicidad en un reenvío.
Visão técnicaTechnical overviewVisión técnica
Status de balconista é a transação de saída que registra a ativação ou inativação de um balconista do Conecta Você. É orquestrada pelo StaffOrchestrator, disparada tanto sozinha (setClerkStatus) quanto como segunda perna logo após o cadastro (saveClerk → _sendClerkStatus). Uma única variante, um único serviceName, sem prefixo Promo_.
Clerk status is the outbound transaction that records the activation or deactivation of a Conecta Você clerk. It's orchestrated by StaffOrchestrator, fired both on its own (setClerkStatus) and as the second leg right after the upload (saveClerk → _sendClerkStatus). A single variant, a single serviceName, no Promo_ prefix.
Estado de dependiente es la transacción de salida que registra la activación o inactivación de un dependiente de Conecta Você. La orquesta el StaffOrchestrator, disparada tanto sola (setClerkStatus) como segunda pierna justo después del alta (saveClerk → _sendClerkStatus). Una única variante, un único serviceName, sin prefijo Promo_.
Payload enxutoLean payloadPayload escueto
Seis campos planos, sem arrays nem sub-objetos. O taxId do balconista (limpo) preenche três deles; dois são literais fixos.Six flat fields, no arrays or sub-objects. The clerk's (stripped) taxId fills three of them; two are fixed literals.Seis campos planos, sin arrays ni subobjetos. El taxId del dependiente (limpio) llena tres; dos son literales fijos.
RPC genéricoGeneric RPCRPC genérico
Passa pelo mesmo sendTransaction de todas as transações, com o JSON no campo message e ContactUpdateStatus como serviceName discriminador.Goes through the same sendTransaction as every transaction, with the JSON in the message field and ContactUpdateStatus as the discriminating serviceName.Pasa por el mismo sendTransaction de todas las transacciones, con el JSON en el campo message y ContactUpdateStatus como serviceName discriminador.
Input cruRaw inputInput crudo
O input carrega a ClerkEntity crua e o enum de ação; o builder é o dono único de toda limpeza e montagem wire (CLAUDE.md §36).The input carries the raw ClerkEntity and the action enum; the builder is the sole owner of all cleanup and wire assembly (CLAUDE.md §36).El input lleva la ClerkEntity cruda y el enum de acción; el builder es el dueño único de toda limpieza y armado wire (CLAUDE.md §36).
FontesSourcesFuentes
BuildClerkConectaVoceStatusDispatcherPayloadUseCase + ClerkConectaVoceStatusDispatcherPayloadInput + ClerkStatusAction + DispatcherType.contactClerkStatus + DispatcherConectaRep.proto. O input carrega entities cruas de domínio (CLAUDE.md §36); o build() constrói todo o wire.
BuildClerkConectaVoceStatusDispatcherPayloadUseCase + ClerkConectaVoceStatusDispatcherPayloadInput + ClerkStatusAction + DispatcherType.contactClerkStatus + DispatcherConectaRep.proto. The input carries raw domain entities (CLAUDE.md §36); build() constructs the entire wire.
BuildClerkConectaVoceStatusDispatcherPayloadUseCase + ClerkConectaVoceStatusDispatcherPayloadInput + ClerkStatusAction + DispatcherType.contactClerkStatus + 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 · vazio —destination.noneemite""(roteamento resolvido peloserviceName)empty —destination.noneemits""(routing resolved byserviceName)vacío —destination.noneemite""(ruteo resuelto por elserviceName)serviceNamestring· #2 · discriminador — sempreContactUpdateStatus(sem prefixoPromo_)discriminator — alwaysContactUpdateStatus(noPromo_prefix)discriminador — siempreContactUpdateStatus(sin prefijoPromo_)dateReferencestring· #3 ·AAAA-MM-DDdo envio (formatDate(submittedAt))YYYY-MM-DDof the submission (formatDate(submittedAt))AAAA-MM-DDdel envío (formatDate(submittedAt))transactionReferencestring· #4 · o taxId limpo do balconista (correlação)the clerk's stripped taxId (correlation)el taxId limpio del dependiente (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)manufacturer·model·deviceUuid·deviceVersionstring· #7–#10 · dados do dispositivo (preenchidos pelo gateway)device data (filled by the gateway)datos del dispositivo (completados por el gateway)tidint64· #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, transactionReference, dateReference). O DispatcherGateway serializa payload em JSON para message, copia serviceName/dateReference/transactionReference, resolve endpoint a partir de type.destination.value (aqui ""), preenche os campos de dispositivo e o bearer token de auth, e chama o RPC.
The builder returns a DispatcherEnvelope (type, serviceName, payload, transactionReference, dateReference). The DispatcherGateway serializes payload to JSON into message, copies serviceName/dateReference/transactionReference, resolves endpoint from type.destination.value (here ""), fills in the device fields and the auth bearer token, and calls the RPC.
El builder devuelve un DispatcherEnvelope (type, serviceName, payload, transactionReference, dateReference). El DispatcherGateway serializa payload a JSON en message, copia serviceName/dateReference/transactionReference, resuelve endpoint desde type.destination.value (aquí ""), completa los campos del dispositivo y el bearer token de auth, y llama al RPC.
Esta transação não está no conjunto leve — resendMayDuplicate == true: um reenvío (ex.: recuperação de fila offline) pode reaplicar o status no backend; a idempotência via tid é o que mitiga isso.This transaction is not in the lightweight set — resendMayDuplicate == true: a resend (e.g. offline-queue recovery) may re-apply the status on the backend; idempotency via tid is what mitigates it.Esta transacción no está en el conjunto liviano — resendMayDuplicate == true: un reenvío (p. ej. recuperación de cola offline) puede reaplicar el estado en el backend; la idempotencia vía tid es lo que lo mitiga.
Como é disparadoHow it's firedCómo se dispara
A transação é orquestrada pelo StaffOrchestrator (remote-first, §36). O notifier apenas reúne a entity crua e o enum de ação; o builder é o dono único da limpeza do taxId, da formatação de data e da montagem wire. A cascata:The transaction is orchestrated by StaffOrchestrator (remote-first, §36). The notifier only gathers the raw entity and the action enum; the builder is the sole owner of the taxId cleanup, date formatting and wire assembly. The cascade:La transacción la orquesta el StaffOrchestrator (remote-first, §36). El notifier solo reúne la entity cruda y el enum de acción; el builder es el dueño único de la limpieza del taxId, el formateo de fecha y el armado wire. La cascada:
- StaffDetailsNotifiersetClerkStatus / saveClerk
- reúne clerk + action + submittedAtgathers clerk + action + submittedAtreúne clerk + action + submittedAtStaffOrchestrator._sendClerkStatus
- ClerkConectaVoceStatusDispatcherPayloadInputBuildClerkConectaVoceStatusDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- devolvereturnsdevuelveDispatcherEnvelope
- SubmitClerkConectaVoceStatusUseCaseDispatcherRepository
- serializa + authserialize + authserializa + authDispatcherGateway
- sendTransactionBackendgRPC
- serializa + authserialize + authserializa + authDispatcherGateway
- SubmitClerkConectaVoceStatusUseCaseDispatcherRepository
- devolvereturnsdevuelveDispatcherEnvelope
- ClerkConectaVoceStatusDispatcherPayloadInputBuildClerkConectaVoceStatusDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- reúne clerk + action + submittedAtgathers clerk + action + submittedAtreúne clerk + action + submittedAtStaffOrchestrator._sendClerkStatus
Dois pontos de disparoTwo fire pointsDos puntos de disparo
StaffOrchestrator.setClerkStatus(...) — toggle direto no detalhe. StaffOrchestrator.saveClerk(...) — envia o cadastro (transação 08) e, em sucesso, chama _sendClerkStatus com o statusAction. Inativar um balconista com edições pendentes passa por saveClerk (upload + status); inativar sem edição vai direto por setClerkStatus.
StaffOrchestrator.setClerkStatus(...) — direct toggle on the detail. StaffOrchestrator.saveClerk(...) — sends the upload (transaction 08) and, on success, calls _sendClerkStatus with the statusAction. Deactivating a clerk with pending edits goes through saveClerk (upload + status); deactivating without edits goes straight through setClerkStatus.
StaffOrchestrator.setClerkStatus(...) — toggle directo en el detalle. StaffOrchestrator.saveClerk(...) — envía el alta (transacción 08) y, en éxito, llama a _sendClerkStatus con el statusAction. Inactivar un dependiente con ediciones pendientes pasa por saveClerk (upload + estado); inactivar sin edición va directo por setClerkStatus.
O input (entities cruas)The input (raw entities)El input (entities crudas)
ClerkConectaVoceStatusDispatcherPayloadInput (Freezed). Carrega o dado como existe no domínio; nada de formato wire. O relógio chega como submittedAt (via DateTimeUtils.now() no orchestrator).ClerkConectaVoceStatusDispatcherPayloadInput (Freezed). Carries data as it exists in the domain; no wire shaping. The clock arrives as submittedAt (via DateTimeUtils.now() in the orchestrator).ClerkConectaVoceStatusDispatcherPayloadInput (Freezed). Lleva el dato como existe en el dominio; nada de formato wire. El reloj llega como submittedAt (vía DateTimeUtils.now() en el orchestrator).
| CampoFieldCampo | TipoTypeTipo | PapelRoleRol |
|---|---|---|
clerk | ClerkEntity | balconista cru — o builder deriva o taxId limpo (usa só taxId)raw clerk — the builder derives the stripped taxId (uses only taxId)dependiente crudo — el builder deriva el taxId limpio (usa solo taxId) |
action | ClerkStatusAction | activate · inactivate → action.wireValue |
submittedAt | DateTime | relógio do envio → dateReference (não vai no payload)submission clock → dateReference (not in the payload)reloj del envío → dateReference (no va en el payload) |
Payload (message)
O JSON serializado no campo message do request. A tabela tem 4 colunas — Campo JSON · Tipo · Origem do Dado · Regra — e lista todas as 6 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. The table has 4 columns — JSON field · Type · Data source · Rule — and lists all 6 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. La tabla tiene 4 columnas — Campo JSON · Tipo · Origen del Dato · Regla — y lista las 6 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.
Todas as chaves são planas (sem arrays nem sub-objetos). O taxId limpo — clerk.taxId com . e - removidos, null → "" — preenche id, accountCode e user com o mesmo valor.All keys are flat (no arrays or sub-objects). The stripped taxId — clerk.taxId with . and - removed, null → "" — fills id, accountCode and user with the same value.Todas las claves son planas (sin arrays ni subobjetos). El taxId limpio — clerk.taxId con . y - removidos, null → "" — llena id, accountCode y user con el mismo valor.
| Campo JSONJSON fieldCampo JSON | TipoTypeTipo | Origem do DadoData sourceOrigen del Dato | RegraRuleRegla |
|---|---|---|---|
id | String | clerk.taxId | taxId (CPF/CNPJ) do balconista com . e - removidos (replaceAll(RegExp(r"[.\-]"), "")); null/vazio → "".clerk's taxId (CPF/CNPJ) with . and - stripped (replaceAll(RegExp(r"[.\-]"), "")); null/empty → "".taxId (CPF/CNPJ) del dependiente con . y - removidos (replaceAll(RegExp(r"[.\-]"), "")); null/vacío → "". |
accountCode | String | clerk.taxId | mesmo taxId limpo de id.same stripped taxId as id.mismo taxId limpio de id. |
action | String | action.wireValue | "activate" (ativar) ou "inactivate" (inativar) — os dois únicos valores do enum ClerkStatusAction."activate" or "inactivate" — the only two values of the ClerkStatusAction enum."activate" (activar) o "inactivate" (inactivar) — los dos únicos valores del enum ClerkStatusAction. |
user | String | clerk.taxId | mesmo taxId limpo de id — não é o identificador do representante de vendas (ver Pendências).same stripped taxId as id — not the sales rep's identifier (see Pending).mismo taxId limpio de id — no es el identificador del representante de ventas (ver Pendientes). |
reason | String | Fixo: "outros"Fixed: "outros"Fijo: "outros" | literal fixo do contrato (em português), sempre "outros" — o app não captura um motivo real.fixed contract literal (in Portuguese), always "outros" — the app captures no real reason.literal fijo del contrato (en portugués), siempre "outros" — la app no captura un motivo real. |
cancelDescription | String | Fixo: "outros"Fixed: "outros"Fijo: "outros" | literal fixo do contrato (em português), sempre "outros".fixed contract literal (in Portuguese), always "outros".literal fijo del contrato (en portugués), siempre "outros". |
Regras de negócioBusiness rulesReglas de negocio
O que o builder decideWhat the builder decidesLo que el builder decide
- Limpeza do taxId: único cálculo do builder —
(clerk.taxId ?? "").replaceAll(RegExp(r"[.\-]"), ""). O mesmo resultado alimentaid,accountCode,usere otransactionReferencedo envelope.taxId cleanup: the builder's only computation —(clerk.taxId ?? "").replaceAll(RegExp(r"[.\-]"), ""). The same result feedsid,accountCode,userand the envelope'stransactionReference.Limpieza del taxId: el único cálculo del builder —(clerk.taxId ?? "").replaceAll(RegExp(r"[.\-]"), ""). El mismo resultado alimentaid,accountCode,usery eltransactionReferencedel envelope. - serviceName sem prefixo:
type.resolveServiceName(hasPromotion: false)— chamado comfalsefixo, então nunca háPromo_. O resultado é sempreContactUpdateStatus.serviceName without prefix:type.resolveServiceName(hasPromotion: false)— called with a fixedfalse, so there's never aPromo_. The result is alwaysContactUpdateStatus.serviceName sin prefijo:type.resolveServiceName(hasPromotion: false)— llamado confalsefijo, así que nunca hayPromo_. El resultado es siempreContactUpdateStatus. - dateReference:
DateTimeUtils.formatDate(dateTime: input.submittedAt)→AAAA-MM-DD. É o único campo derivado de data e vai no envelope, não no payload.dateReference:DateTimeUtils.formatDate(dateTime: input.submittedAt)→YYYY-MM-DD. It's the only date-derived field and goes on the envelope, not the payload.dateReference:DateTimeUtils.formatDate(dateTime: input.submittedAt)→AAAA-MM-DD. Es el único campo derivado de fecha y va en el envelope, no en el payload. - Sem ramos condicionais: o payload é sempre as mesmas 6 chaves; só o valor de
actionmuda. Não há variantes, splits nem campos condicionais.No conditional branches: the payload is always the same 6 keys; only theactionvalue changes. There are no variants, splits or conditional fields.Sin ramas condicionales: el payload es siempre las mismas 6 claves; solo cambia el valor deaction. No hay variantes, splits ni campos condicionales. - Sequência com o cadastro: quando disparada por
saveClerk, só parte após o upload (transação 08) ser aceito (ack.status == 0); uma falha do status faz osaveClerkinteiro retornar erro.Sequence with the upload: when fired bysaveClerk, it only goes out after the upload (transaction 08) is accepted (ack.status == 0); a status failure makes the wholesaveClerkreturn an error.Secuencia con el alta: cuando la disparasaveClerk, solo sale después de que el upload (transacción 08) sea aceptado (ack.status == 0); una falla del estado hace que todosaveClerkdevuelva error.
Pendências / roadmapPending / roadmapPendientes / roadmap
O que o builder envia inerte ou fixo, documentado fiel ao estado atual do código (nunca descrito como se já existisse):What the builder ships inert or fixed, documented faithfully to the current code state (never described as already existing):Lo que el builder envía inerte o fijo, documentado fiel al estado actual del código (nunca descrito como si ya existiera):
Fixo / pendenteFixed / pendingFijo / pendiente
reasonecancelDescription: sempre"outros"— não há UI para capturar um motivo real de inativação; o app nunca envia um motivo específico.reasonandcancelDescription: always"outros"— there's no UI to capture a real deactivation reason; the app never sends a specific reason.reasonycancelDescription: siempre"outros"— no hay UI para capturar un motivo real de inactivación; la app nunca envía un motivo específico.user: carrega o taxId do balconista, não uma identidade do representante de vendas — o nome do campo sugere o operador, mas o valor é o mesmo deid.user: carries the clerk's taxId, not a sales rep identity — the field name suggests the operator, but the value is the same asid.user: lleva el taxId del dependiente, no una identidad del representante de ventas — el nombre del campo sugiere el operador, pero el valor es el mismo deid.endpoint: vai vazio (destination.none→"") — o roteamento no backend depende só doserviceName. Transporte:deviceUuidvai como literal provisório no gateway (pendência conhecida do Dispatcher).endpoint: ships empty (destination.none→"") — backend routing relies solely on theserviceName. Transport:deviceUuidships as a provisional literal in the gateway (known Dispatcher pending item).endpoint: va vacío (destination.none→"") — el ruteo en el backend depende solo delserviceName. Transporte:deviceUuidva como literal provisional en el gateway (pendiente conocido del Dispatcher).
Transação irmãSister transactionTransacción hermana
Esta transação é o par de status do cadastro de balconista (08 · ContactConectaVoce): o cadastro cria/edita o balconista, esta define se ele fica ativo ou inativo. As duas são específicas do Conecta Você e só existem no Brasil.
This transaction is the status counterpart to the clerk upload (08 · ContactConectaVoce): the upload creates/edits the clerk, this one sets whether it's active or inactive. Both are Conecta Você-specific and exist only in Brazil.
Esta transacción es la contraparte de estado del alta de dependiente (08 · ContactConectaVoce): el alta crea/edita al dependiente, esta define si queda activo o inactivo. Ambas son específicas de Conecta Você y solo existen en Brasil.
MercadosMarketsMercados
A disponibilidade da transação vem do DispatcherType.contactClerkStatus.enabledMarkets = só BR. O programa Conecta Você é uma iniciativa brasileira; nenhum outro mercado dispara esta transação.Transaction availability comes from DispatcherType.contactClerkStatus.enabledMarkets = BR only. The Conecta Você program is a Brazilian initiative; no other market fires this transaction.La disponibilidad de la transacción viene de DispatcherType.contactClerkStatus.enabledMarkets = solo BR. El programa Conecta Você es una iniciativa brasileña; ningún otro mercado dispara esta transacción.
Só no BrasilBrazil onlySolo Brasil
O Conecta Você e suas transações (ContactConectaVoce no cadastro, ContactUpdateStatus no status, além de CVRequestAction/CVRequestActionReport) só estão habilitadas em BR. Os literais do payload ("outros") já estão em português — é um contrato específico do mercado brasileiro.
Conecta Você and its transactions (ContactConectaVoce on upload, ContactUpdateStatus on status, plus CVRequestAction/CVRequestActionReport) are enabled in BR only. The payload literals ("outros") are already in Portuguese — it's a contract specific to the Brazilian market.
Conecta Você y sus transacciones (ContactConectaVoce en el alta, ContactUpdateStatus en el estado, además de CVRequestAction/CVRequestActionReport) están habilitadas solo en BR. Los literales del payload ("outros") ya están en portugués — es un contrato específico del mercado brasileño.
CL · ZA · AR · PY · PE
Existem como mercados do app, mas não têm a transação de status de balconista — enabledMarkets lista só BR. A ativação/inativação de balconista não é disparada nesses mercados.
They exist as app markets, but have no clerk-status transaction — enabledMarkets lists BR only. Clerk activation/deactivation is not fired in these markets.
Existen como mercados de la app, pero no tienen la transacción de estado de dependiente — enabledMarkets lista solo BR. La activación/inactivación de dependiente no se dispara en estos mercados.