133 lines
4.7 KiB
Markdown
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.
|