Files
RedatorSD/app/README.md
T

89 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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$ 510 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.