iachat/db/migrate/20260506183716_add_manual_pix_to_captain_units.rb
Rodribm10 e94cadbdf6 feat(captain): pix_mode manual_static pra Padova e Express
Adiciona caminho paralelo de PIX manual estático pra unidades sem
integração Inter (Padova, Express AL). Mudança 100% aditiva — todas as
outras unidades continuam no fluxo Inter inalterado (default
pix_mode=inter_dynamic aplicado pela migration).

Backend (sem SOUL/SKILL ainda — Frente 7 vem depois):
- Migration concurrent: pix_mode + 4 campos manual_pix_* em captain_units;
  provider + manual_proof_payload + manual_review_reason em captain_pix_charges
- Captain::Unit: enum pix_mode (prefix), validação condicional manual_*
- Captain::PixCharge: status estendido (awaiting_proof, pending_review),
  scope manual/inter, nota interna ramificada por modo
- GeneratePixTool MCP: branch manual_static (chave fixa, mensagem direta
  sem QR/Inter), preserva fluxo Inter intacto
- 4 tools MCP novas: verificar_comprovante_pix (vision gpt-5.3-codex),
  criar_nota_interna (genérica), confirmar_reserva_pix_manual (wrapper
  do ConfirmationService), marcar_reserva_pendente
- ConfirmationService: source_label cobre 'manual_pix_proof'

Próximos passos manuais (não inclusos neste commit):
1. Rodar migration em prod (entrypoint não roda no boot)
2. Seed Padova/Express com pix_mode=manual_static + chaves Stone
3. Deploy nova imagem via docker service update
4. Editar SOUL/SKILL Padova/Express na VPS Hermes + kill+boot

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 16:01:01 -03:00

20 lines
809 B
Ruby

class AddManualPixToCaptainUnits < ActiveRecord::Migration[7.1]
disable_ddl_transaction!
def change
add_column :captain_units, :pix_mode, :string, default: 'inter_dynamic', null: false
add_column :captain_units, :manual_pix_key, :string
add_column :captain_units, :manual_pix_key_type, :string
add_column :captain_units, :manual_pix_owner_name, :string
add_column :captain_units, :manual_pix_bank_name, :string
add_index :captain_units, :pix_mode, algorithm: :concurrently
add_column :captain_pix_charges, :provider, :string, default: 'inter', null: false
add_column :captain_pix_charges, :manual_proof_payload, :jsonb
add_column :captain_pix_charges, :manual_review_reason, :string
add_index :captain_pix_charges, :provider, algorithm: :concurrently
end
end