# ClientFlow v4926.4 — Email identity assisted enrichment ## Objetivo Integrar a extração de identidade de email no fluxo operacional de enriquecimento fiscal assistido, sem auto-aplicação agressiva. ## Principais alterações - Configuração separada para o modelo de email identity: - `EMAIL_IDENTITY_LLM_MODEL` - `EMAIL_IDENTITY_LLM_FALLBACK_MODEL` - `EMAIL_IDENTITY_LLM_TIMEOUT_SECONDS` - `EMAIL_IDENTITY_LLM_MAX_BODY_CHARS` - Fallback automático no extractor: - tenta o modelo principal; - se o resultado ficar fraco/sem empresa em domínio empresarial, tenta o fallback. - Nova revisão assistida de identidade: - `email_identity_review_for_opportunity()` - corre mesmo quando a oportunidade já tem cliente fiscal, para detetar conflitos. - Novo enriquecimento assistido por identidade: - `assist_email_identity_enrichment()` - cria sugestões pendentes a partir da empresa extraída; - deteta conflito entre empresa mencionada no email e cliente fiscal já associado; - por defeito não auto-aplica. - UI do detalhe da oportunidade: - bloco “Identidade extraída do email”; - mostra pessoa, empresas mencionadas, domínio, morada, telefones, evidências e modelo; - botão “Reextrair identidade”; - botão “Procurar cliente fiscal por identidade”. - Batch validation: - aceita `--fallback-model`; - grava `llm_model` e `fallback_used` no CSV/JSONL. ## Configuração recomendada ```env EMAIL_IDENTITY_EXTRACTION_ENABLED=true EMAIL_IDENTITY_EXTRACTION_USE_LLM=true EMAIL_IDENTITY_LLM_MODEL=qwen/qwen3-235b-a22b-2507 EMAIL_IDENTITY_LLM_FALLBACK_MODEL=qwen/qwen3-max EMAIL_IDENTITY_LLM_TIMEOUT_SECONDS=20 EMAIL_IDENTITY_LLM_MAX_BODY_CHARS=3500 ``` ## Testes - `python -m compileall -q app scripts` - `pytest -q` - Resultado local: `188 passed`