# Redator de SD — RMDS / SES-MG × Isis Saúde App local que conduz a entrevista de redação de Solicitações de Demanda (SD) com um LLM, valida em código contra as regras do contrato (PE 29/2025) e mantém a base de conhecimento. ## Primeira execução 1. **Chave de API** — crie em https://console.anthropic.com → *API Keys* e coloque um crédito inicial pequeno (US$ 5–10 rendem dezenas de SDs). 2. **Configuração** — copie `.env.example` para `.env` (nesta pasta) e preencha `ANTHROPIC_API_KEY`. Defina também `APP_USUARIO` e `APP_SENHA` para ativar a tela de login (enquanto vazios, o app roda aberto e mostra um aviso). O `.env` nunca deve ser versionado nem compartilhado. 3. **Dependências** (só na primeira vez): ``` cd D:\IasisSaude\app npm install ``` 4. **Rodar**: ``` npm start ``` e abra http://localhost:3344 no navegador. ## Como funciona - **Nova SD**: cole a demanda bruta → o redator entrevista você (uma pergunta por turno, opções viram botões) enquanto o painel do documento se atualiza ao vivo. - **Validação**: os itens `codigo` do checklist são recalculados em JavaScript a cada atualização — e o resultado é realimentado ao modelo, que se corrige sozinho. - **Trava de integridade**: exportação e envio ficam bloqueados até todos os artefatos serem confirmados (checkbox + data) e nenhuma falha de código restar. - **Envio**: atribui o número definitivo (SD-NN) e registra a SD em `..\base-conhecimento.json` — saldo de pools e precedentes ficam atualizados para as próximas entrevistas. - **Documento / impressão**: o botão "Documento / imprimir (PDF)" abre a SD formatada como documento oficial em uma aba pronta para Ctrl+P → salvar como PDF. Com pendências bloqueantes abertas, o documento sai com marca de RASCUNHO. - **Validar JSON externo** (menu no topo): cole o JSON de uma SD que não nasceu no app — o validador recalcula tudo, roda o checklist e libera documento/download, sem salvar nada. - **Alimentar base** (menu no topo): envie o documento de uma SD real (`.pdf`, `.md` ou `.txt`; `.docx` deve ser exportado como PDF). Uma chamada de LLM extrai o registro estruturado (itens, UST por item, período, status) e sugere capacidades reutilizáveis; a conferência determinística em código checa somas, itens, status e impacto nos pools. **Nada é gravado sem revisão**: você edita o registro, marca/desmarca capacidades e só então grava em `..\base-conhecimento.json`. Erros de conferência bloqueiam a gravação; regravar o mesmo SD-NN substitui o registro anterior (capacidades, porém, são sempre acrescentadas — ao regravar uma SD, desmarque as que já entraram na primeira vez). - **Login**: usuário único definido no `.env`. As sessões vivem na memória do servidor — reiniciar o servidor exige novo login. ## Arquivos de configuração (raiz do projeto, `D:\IasisSaude`) | Arquivo | Papel | |---|---| | `prompt-redator-sd.md` | Comportamento do redator (system prompt) | | `regras-sd.json` | Regras duras do contrato — fonte única | | `schema-sd.json` | Formato da SD | | `base-conhecimento.json` | Histórico: SDs enviadas e capacidades da plataforma | Editar qualquer um deles muda o app na próxima reinicialização — não é preciso mexer em código. ## Custos O rodapé do chat mostra tokens e custo estimado em tempo real. O system prompt (prompt + regras + base) é cacheado pela API — turnos seguintes da mesma conversa pagam ~10% do preço no prefixo repetido. ## Dados - `data/sds.json` — SDs e conversas (criado automaticamente; fora do versionamento). - Provedor/modelo/esforço configuráveis no `.env` (`LLM_PROVIDER`, `LLM_MODEL`, `LLM_EFFORT` — low/medium/high/xhigh/max; medium recomendado para a entrevista). Adaptador OpenAI previsto para a fase 1.1 (`src/llm/provider.js`). - **Seletor de modelo**: `LLM_MODELOS` (lista separada por vírgula) define os modelos oferecidos nos seletores das telas Nova SD e Base de Conhecimento; o `LLM_MODEL` sempre entra como padrão. O modelo escolhido fica fixo para a SD inteira — trocar no meio da conversa descartaria o cache de prompt. O custo do rodapé usa a tabela de preços do Opus (a observação ao lado do valor lembra isso). ## Atualização dos arquivos de configuração O prompt do redator é remontado automaticamente quando `base-conhecimento.json`, `prompt-redator-sd.md`, `regras-sd.json` ou `schema-sd.json` mudam no disco — vale a partir da PRÓXIMA conversa, sem reiniciar o servidor. Exceção: mudanças em `regras-sd.json`/`schema-sd.json` também alimentam o validador em código e a ferramenta do modelo, que carregam na subida — para essas duas, reinicie. Mudanças no `.env` sempre exigem reinício.