iachat/db/seed_prompts/README.md
Rodribm10 c512e3e5f6
Some checks failed
Build and Push to GHCR (multi-arch) / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Build and Push to GHCR (multi-arch) / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Build and Push to GHCR (multi-arch) / merge (push) Has been cancelled
chore(prompts): split prod snapshot from staging from target
Reorganized db/seed_prompts/ into three clear bins:

  _prod_snapshot/   — 16 prompts pulled from iachat_production
                      (4 Jasmines + 12 scenarios). Read-only baseline.

  _staging_current/ — 6 prompts active in iachat-v2 right now
                      (Jasmine + 5 scenarios, including
                      outras_unidades and Reclamacoes_Ouvidoria
                      which were created on this branch).

  target/           — empty for now. Source of truth: the seed
                      migration only writes from here. Files we
                      review and approve land here, then deploy
                      pushes them to prod.

Updated the seed migration to walk target/ and to support both
generic scenarios (apply to every unit) and unit-scoped scenarios
(file prefixed with assistant slug, only that unit). Empty files
are skipped — useful for staged rollouts.

This guarantees no prompt ships to prod by accident: only what
ends up in target/ is applied.
2026-04-22 11:31:42 -03:00

2.9 KiB

Captain — prompts versionados

Todo prompt da Jasmine (orchestrator) e dos cenários (Daniela, Maria, Disponibilidade, etc) vive em arquivos .md aqui. O DB é só espelho.

Estrutura

db/seed_prompts/
├── README.md                  ← você está aqui
│
├── _prod_snapshot/            ← snapshot dos prompts ATUAIS de produção
│   │                            (extraído de iachat_production em 2026-04-22)
│   ├── assistants/  (4 Jasmines: qnn01, primeal, primevl, express)
│   └── scenarios/   (12 cenários, 3 por assistente)
│
├── _staging_current/          ← prompts ATIVOS no staging (iachat-v2)
│   │                            que o Rodrigo e Claude revisaram juntos
│   ├── assistants/  (jasmine.md — versão melhorada com saudação nominal)
│   └── scenarios/   (daniela_reservas v3 com pré-reserva, etc)
│
└── target/                    ← APLICADO no DB pela migration de seed
    ├── assistants/
    └── scenarios/

Regra simples

  • _prod_snapshot/ = só referência histórica. Não é aplicado.
  • _staging_current/ = só referência do que testamos. Não é aplicado.
  • target/ = source of truth. A migration sincroniza isso no DB.

Arquivos vazios em target/ = a migration não toca aquele prompt. Útil pra deployar mudanças seletivas (ex: subir só Daniela melhorada sem mexer na Jasmine de cada unidade).

Workflow de revisão (o que estamos fazendo agora)

Pra cada prompt:

  1. Olhar _prod_snapshot/X.md (o que tá em prod hoje)
  2. Olhar _staging_current/X.md (se existir — versão melhorada)
  3. Decidir o conteúdo final: pode ser igual ao staging, igual ao prod ou novo. Salvar em target/X.md.
  4. Quando todos os prompts revisados estiverem em target/, mergear pra main e deployar — a migration aplica em prod.

Convenção de nomes

Os nomes batem com name/title no banco:

Slug do arquivo Captain::Assistant#name
jasmine_qnn01 Jasmine( Qnn01)
jasmine_primeal Jasmine(PrimeAL)
jasmine_primevl Jasmine(PrimeVL)
jasmine_express Jasmine (Express)
Slug do cenário Captain::Scenario#title
daniela_reservas Daniela_Reservas
disponibilidade_suites Disponibilidade de suites
maria_fotos maria_fotos
outras_unidades outras_unidades
reclamacoes_ouvidoria Reclamacoes_Ouvidoria

Cenários se aplicam a TODAS as unidades cujo arquivo bate. Pra customizar por unidade, prefixe com <assistant_slug>__:

  • target/scenarios/daniela_reservas.md → aplica em todas as 4
  • target/scenarios/jasmine_primeal__daniela_reservas.md → só PrimeAL (sobrescreve o genérico se ambos existirem)

Estado atual da revisão

Em revisão. target/ está vazio. Nada será aplicado em prod até preenchermos os arquivos lá.