chatwoot-develop/.context/planos/task.md

133 lines
4.7 KiB
Markdown

# Jasmine BrainService Implementation
## Phase 1: Foundation
- [x] Migration: Add new fields to jasmine_inbox_configs
- [ ] Add ENV fallback for DEFAULT_JASMINE_DISTANCE_THRESHOLD
- [ ] Seed: Create intent_keywords for hotel/motel business
## Phase 2: BrainService Core
- [x] Create Jasmine::BrainService skeleton
- [x] Create IntentDetector component
- [x] Create StrategyDecider component
- [x] Create PromptAssembler component
- [x] Create StateUpdater component
## Phase 3: Integration
- [x] Hook BrainService to incoming messages
- [x] Add logging for decisions (intent, strategy, RAG usage)
## Phase 4: Testing
- [ ] Specs for IntentDetector
- [ ] Specs for StrategyDecider (RAG mandatory vs prohibited)
- [ ] Specs for threshold handling
- [ ] Specs for loop protection (rag_queries > 5)
## Phase 5: UI
- [/] Add System Prompt field to config UI (Done)
- [/] Add Playbook field to config UI (Done)
- [/] Add threshold/model settings to config UI (Done)
## Phase 6: Jasmine Tools (New)
- [x] Backend: Create jasmine_tool_configs table and model
- [x] Backend: Create ToolRunner service
- [x] Backend: Create ToolsController
- [x] Frontend: Add Tools API client
- [x] Frontend: Add JasmineToolCard component
- [x] Frontend: Add JasmineToolsTab component
- [x] Frontend: Integrate with InboxDashboard
- [x] UI Refinement: Improve scrolling and layout
- [ ] Tests: Add RSpec tests
## Phase 7: Jasmine + Captain Unification (V1)
- [x] **Correção da Instabilidade no Ambiente Local**
- [x] Identificar causa dos erros 500 intermitentes (Conflito de Porta DB 5432 vs 5438)
- [x] Resolver problema de versão do Ruby/Bundler (`rbenv init`)
- [x] corrigir formato do telefone no webhook (`Inactive Channel` - falta do DDI 55)
- [x] Criar documentação de solução de problemas (`solucao_ambiente_wuzapi.md`)
- [ ] **Phase 1: Architecture Mapping**
- [ ] Map Message Entry Point
- [ ] Map Knowledge Base Decision Logic
- [ ] Map Prompt Assembly
- [ ] Map Tool Execution
- [ ] Deliver: Mapping Report & Injection Point Identification
- [ ] **Phase 2: Brain Layer Implementation**
- [x] Schema: Create `captain_tool_configs` table
- [x] Schema: Update `captain_assistants` for Multi-LLM (`llm_provider`, `llm_model`)
- [x] Backend: `AssistantChatService` Dynamic Provider Logic
- [x] File: `enterprise/app/services/captain/llm/jasmine_brain.rb` (Skeleton)
- [x] Refactor: `JasmineBrain` with Real LLM Logic (Thinking Step)
- [x] File: `enterprise/app/services/captain/tools/definitions.rb`
- [x] File: `enterprise/app/services/captain/tools/tool_runner.rb`
- [x] File: `enterprise/app/services/captain/tools/parsers/status_suites_parser.rb`
- [x] Inject: `AssistantChatService#generate_response`
- [x] **Phase 3: Tools Integration (UI)**
- [x] Backend: Create `Captain::ToolsController` (or extend existing) to manage `captain_tool_configs`
- [x] Frontend: Create "Ferramentas" tab inside Captain Assistant settings
- [x] Frontend: Build form for Tool Key, Enabled, PlugPlay ID/Token, Webhook URL
- [x] **Phase 4: Output Normalization**
- [x] Ensure normalized JSON output from tools
- [x] **Phase 5: Webhook Tools & Handoff**
- [x] Implement Webhook Tools
- [x] Implement Human Handoff (`escalar_humano`)
- [x] **Phase 6: Final Integration**
- [x] Inject Brain Layer into Captain Pipeline
- [x] Final Verification
## Phase 8: Native WuzAPI Channel (V1 Standard)
- [x] **Security (Foundation)**
- [x] DB: Migration for `encrypted_wuzapi_user_token` & `admin_token`
- [x] Model: Add `encrypts` to `Channel::Whatsapp`
- [x] Code: Migrate checks from `provider_config` to encrypted cols
- [x] Fix: Rename columns to match Rail convention (`wuzapi_user_token`)
- [x] **Inbound (V1 Contract)**
- [x] Parser: Create `Wuzapi::PayloadParser` (Strict Contract)
- [x] Service: Implement Strong Dedupe (Source ID Check)
- [x] Service: Implement Loop Protection (`is_from_me`)
- [x] Fix: Tunnel Connectivity & Webhook Config
- [x] **Outbound (V1)**
- [x] Service: Switch to encrypted token usage
- [x] Service: Ensure Text Sending works
- [x] Service: Fix 401 Auth (Header/Token Logic)
- [x] **Sync (V1.5)**
- [x] Implement Mobile Sync (Two-Way)
- [x] Handle `from_me` messages as Outgoing
- [x] **Fix: Instability**
- [x] Update Webhook URL (New Tunnel)
- [x] Verify `from_me` sync reliability
## Phase 9: Automation & Cleanup (VPS Ready)
- [x] **Automation**
- [x] Job: Create `Wuzapi::ConfigureWebhookJob` (Implemented as Model Callback)
- [x] Hook: Trigger on `Channel::Whatsapp` create/update
- [x] Logic: Set Webhook to `#{FRONTEND_URL}/webhooks/whatsapp/#{phone}`
- [x] Logic: Set `Events: ['All']`
- [x] **Documentation**
- [x] Update `wuzapi_walkthrough.md` with final architecture.