89 lines
4.7 KiB
Markdown
89 lines
4.7 KiB
Markdown
# 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.
|