SAC — As 3 Ramificações do sacNode
SAC — As 3 Ramificações do sacNode
Para future Claude
Esta nota é um aprofundamento da seção "② As 3 ramificações do sacNode" do canvas Excalidraw (Mercado Livre Jornada) e da seção 4 do Mapa Geral. O sacNode recebe o evento já resolvido (productContext incluído, ver Diagrama 4a) e decide o que fazer de acordo com state.eventType. Cada ramo tem regra própria — só CUSTOMER_QUESTION pode chegar ao verde.
O diagrama
CUSTOMER_QUESTION — único ramo que pode responder sozinho
ctx.llm.complete()→{ answer, confident, detectedPattern }.- JSON + schema válidos? Falha → draft (
llm_parse_failed). - Compliance ok? (palavrão · URL · CPF/CNPJ/e-mail) Bloqueia → draft (
compliance_block). confident === true? Não → draft (low_confidence).
Se passar pelas 4 perguntas: answerQuestion(qId, answer) + audit SAC_ANSWERED, applied: true. Se o envio ao ML falhar (meli_answer_failed), não é mais auto — vira draft mesmo assim. Em qualquer outro caso (parse, compliance ou confiança), queueSacDraft cria um SAC_QUESTION_DRAFT.
POST_SALE_MESSAGE — nunca envia sozinho (decisão de design D1)
draftPostSaleMessage()→ LLM geraanswer(roda compliance; marcatruncatedse passar de 350 caracteres).- Sempre
queueSacDraft→SAC_POST_SALE_DRAFT, comreasonigual apost_sale_draft(oucompliance_block/llm_parse_failedse algo falhar antes).
Todo resultado vira rascunho na inbox; o humano edita e envia via ExecuteSacDraft → meli.sendMessage. Não existe caminho em que essa ramificação responda sozinha.
CLAIM_OPENED — sempre TIER_3, nunca age sozinho
reviewClaim()→generateClaimSuggestion(): gerarecommendedAction+rationale— é só sugestão, a IA não decide.createPendingApproval(CLAIM_REVIEW),TIER_3,applied: false. Nenhuma ação chega a tocar o Mercado Livre.
Claim não passa pela inbox de rascunho (ExecuteSacDraft): não existe "enviar texto" pra um claim. O humano resolve direto no Mercado Livre pelos endpoints de claim (BUN-122); a IA só aconselha.
sacNode é o ponto do código onde o agente de SAC decide o que fazer com cada evento. state.eventType é o campo que diz qual dos 3 tipos de evento chegou. Draft é um rascunho que espera revisão humana antes de ir pro Mercado Livre. TIER_3 é o nível de aprovação mais alto, sempre obrigatório pra claims — a IA nunca age sozinha nesse caso.