Redator de SD - preparado para deploy
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user