- Enhanced LlmController to detect and handle redundant tool calls, ensuring efficient processing and preventing unnecessary requests. - Updated message formatting in GeminiProvider to align with Gemini's expectations, improving the structure of requests sent to the API. - Improved logging in AiChat component to provide better insights into received responses and fallback mechanisms for empty content. - Adjusted handling of final responses in AiChat to ensure meaningful content is displayed, enhancing user experience during interactions.
600 lines
20 KiB
Markdown
600 lines
20 KiB
Markdown
# LLM Controller - Feature Improvements Roadmap
|
|
|
|
## 🎯 Quick Wins (1-2 days)
|
|
|
|
### ✅ Priority 1: Suggested Follow-up Questions
|
|
**Status:** Not Started
|
|
**Effort:** 4-6 hours
|
|
**Impact:** High
|
|
|
|
**Description:**
|
|
After each response, the LLM suggests 3-5 relevant follow-up questions to guide user exploration.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Update `BuildSystemMessage()` to include follow-up question instruction
|
|
- [ ] Add `SuggestedQuestions` property to `LlmProgressUpdate` class
|
|
- [ ] Create `ExtractFollowUpQuestions()` method to parse questions from response
|
|
- [ ] Update `ChatStreamInternal()` to extract and send suggested questions
|
|
- [ ] Update frontend to display suggested questions as clickable chips
|
|
- [ ] Test with various query types (backtest, indicator, general finance)
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
- Frontend components (AiChat.tsx)
|
|
|
|
---
|
|
|
|
### ✅ Priority 2: Feedback & Rating System
|
|
**Status:** Not Started
|
|
**Effort:** 6-8 hours
|
|
**Impact:** High (Quality tracking)
|
|
|
|
**Description:**
|
|
Users can rate LLM responses (👍👎) with optional comments to track quality and improve prompts.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `LlmFeedback` domain model (ResponseId, UserId, Rating, Comment, Timestamp)
|
|
- [ ] Create `ILlmFeedbackRepository` interface
|
|
- [ ] Implement `LlmFeedbackRepository` with MongoDB
|
|
- [ ] Add `ResponseId` property to `LlmChatResponse`
|
|
- [ ] Create new endpoint: `POST /Llm/Feedback`
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/Feedback`
|
|
- [ ] Update frontend to show 👍👎 buttons after each response
|
|
- [ ] Create analytics dashboard to view feedback trends
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Domain/Llm/LlmFeedback.cs`
|
|
- `src/Managing.Application.Abstractions/Repositories/ILlmFeedbackRepository.cs`
|
|
- `src/Managing.Infrastructure/Repositories/LlmFeedbackRepository.cs`
|
|
- `src/Managing.Application/Services/LlmFeedbackService.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 3: Export Conversations
|
|
**Status:** Not Started
|
|
**Effort:** 4-6 hours
|
|
**Impact:** Medium
|
|
|
|
**Description:**
|
|
Export conversation to Markdown, JSON, or PDF for reporting and sharing.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `IConversationExportService` interface
|
|
- [ ] Implement Markdown export (simple format with messages)
|
|
- [ ] Implement JSON export (structured data)
|
|
- [ ] Implement PDF export using QuestPDF or similar
|
|
- [ ] Create new endpoint: `GET /Llm/Conversations/{id}/Export?format={md|json|pdf}`
|
|
- [ ] Add "Export" button to conversation UI
|
|
- [ ] Test with long conversations and special characters
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Application/Services/ConversationExportService.cs`
|
|
- `src/Managing.Application.Abstractions/Services/IConversationExportService.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 4: Query Categorization
|
|
**Status:** Not Started
|
|
**Effort:** 3-4 hours
|
|
**Impact:** Medium (Better analytics)
|
|
|
|
**Description:**
|
|
Automatically categorize queries (BacktestAnalysis, GeneralFinance, etc.) for analytics.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `QueryCategory` enum (BacktestAnalysis, BundleAnalysis, IndicatorQuestion, GeneralFinance, HowTo, DataRetrieval, Comparison)
|
|
- [ ] Add `QueryCategory` property to `LlmProgressUpdate`
|
|
- [ ] Create `DetermineQueryCategory()` method using keyword matching
|
|
- [ ] Update system prompt to include category in response
|
|
- [ ] Send category in initial progress update
|
|
- [ ] Track category distribution in analytics
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
|
|
---
|
|
|
|
## 🚀 Medium Effort (3-5 days)
|
|
|
|
### ✅ Priority 5: Conversation Persistence
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Very High (Core feature)
|
|
|
|
**Description:**
|
|
Save conversation history to database so users can resume previous conversations across sessions.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `ChatConversation` domain model (Id, UserId, Title, CreatedAt, UpdatedAt, LastMessageAt)
|
|
- [ ] Create `ChatMessage` domain model (Id, ConversationId, Role, Content, Timestamp, TokenCount, ToolCalls)
|
|
- [ ] Create `IChatConversationRepository` interface
|
|
- [ ] Implement `ChatConversationRepository` with MongoDB
|
|
- [ ] Create `IChatMessageRepository` interface
|
|
- [ ] Implement `ChatMessageRepository` with MongoDB
|
|
- [ ] Create new endpoint: `GET /Llm/Conversations` (list user's conversations)
|
|
- [ ] Create new endpoint: `GET /Llm/Conversations/{id}` (get conversation with messages)
|
|
- [ ] Create new endpoint: `POST /Llm/Conversations` (create new conversation)
|
|
- [ ] Create new endpoint: `POST /Llm/Conversations/{id}/Messages` (add message to conversation)
|
|
- [ ] Create new endpoint: `DELETE /Llm/Conversations/{id}` (delete conversation)
|
|
- [ ] Update `ChatStream` to save messages automatically
|
|
- [ ] Create conversation list UI component
|
|
- [ ] Add "New Conversation" button
|
|
- [ ] Add conversation sidebar with search/filter
|
|
- [ ] Test with multiple concurrent conversations
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Domain/Llm/ChatConversation.cs`
|
|
- `src/Managing.Domain/Llm/ChatMessage.cs`
|
|
- `src/Managing.Application.Abstractions/Repositories/IChatConversationRepository.cs`
|
|
- `src/Managing.Application.Abstractions/Repositories/IChatMessageRepository.cs`
|
|
- `src/Managing.Infrastructure/Repositories/ChatConversationRepository.cs`
|
|
- `src/Managing.Infrastructure/Repositories/ChatMessageRepository.cs`
|
|
- `src/Managing.Application/Services/ChatConversationService.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 6: Response Streaming (Token-by-Token)
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** High (UX improvement)
|
|
|
|
**Description:**
|
|
Stream LLM response as tokens arrive instead of waiting for complete response.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Update `ILlmService.ChatAsync()` to return `IAsyncEnumerable<LlmTokenChunk>`
|
|
- [ ] Modify LLM provider implementations to support streaming
|
|
- [ ] Update `ChatStreamInternal()` to stream tokens via SignalR
|
|
- [ ] Add new progress update type: "token_stream"
|
|
- [ ] Update frontend to display streaming tokens with typing animation
|
|
- [ ] Handle tool calls during streaming (partial JSON parsing)
|
|
- [ ] Add "Stop Generation" button in UI
|
|
- [ ] Test with different LLM providers
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
- `src/Managing.Application/Services/LlmService.cs` (or provider-specific implementations)
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- Frontend components (AiChat.tsx)
|
|
|
|
---
|
|
|
|
### ✅ Priority 7: Usage Analytics Dashboard
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** High (Cost monitoring)
|
|
|
|
**Description:**
|
|
Track and visualize LLM usage metrics (tokens, cost, performance).
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `LlmUsageMetric` domain model (UserId, Timestamp, Provider, Model, PromptTokens, CompletionTokens, Cost, Duration, QueryCategory)
|
|
- [ ] Create `ILlmUsageRepository` interface
|
|
- [ ] Implement `LlmUsageRepository` with InfluxDB (time-series data)
|
|
- [ ] Update `ChatStreamInternal()` to log usage metrics
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/Usage` (token usage over time)
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/PopularTools` (most called tools)
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/AverageIterations` (performance metrics)
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/ErrorRate` (quality metrics)
|
|
- [ ] Create new endpoint: `GET /Llm/Analytics/CostEstimate` (current month cost)
|
|
- [ ] Create analytics dashboard component with charts (Chart.js or Recharts)
|
|
- [ ] Add filters: date range, category, provider
|
|
- [ ] Display key metrics: total tokens, cost, avg response time
|
|
- [ ] Test with large datasets
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Domain/Llm/LlmUsageMetric.cs`
|
|
- `src/Managing.Application.Abstractions/Repositories/ILlmUsageRepository.cs`
|
|
- `src/Managing.Infrastructure/Repositories/LlmUsageRepository.cs`
|
|
- `src/Managing.Application/Services/LlmAnalyticsService.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 8: Quick Actions / Shortcuts
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Medium (Workflow improvement)
|
|
|
|
**Description:**
|
|
Recognize patterns and offer action buttons (e.g., "Delete this backtest" after analysis).
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `QuickAction` model (Id, Label, Icon, Endpoint, Parameters)
|
|
- [ ] Add `Actions` property to `LlmProgressUpdate`
|
|
- [ ] Create `GenerateQuickActions()` method based on context
|
|
- [ ] Update system prompt to suggest actions in structured format
|
|
- [ ] Parse action suggestions from LLM response
|
|
- [ ] Update frontend to display action buttons
|
|
- [ ] Implement action handlers (call APIs)
|
|
- [ ] Add confirmation dialogs for destructive actions
|
|
- [ ] Test with various scenarios (backtest, bundle, indicator)
|
|
|
|
**Example Actions:**
|
|
- After backtest analysis: "Delete this backtest", "Run similar backtest", "Export details"
|
|
- After bundle analysis: "Delete bundle", "Run again with different params"
|
|
- After list query: "Export to CSV", "Show details"
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
- Frontend components (AiChat.tsx)
|
|
|
|
---
|
|
|
|
## 🎨 Long-term (1-2 weeks)
|
|
|
|
### ✅ Priority 9: Multi-Provider Fallback
|
|
**Status:** Not Started
|
|
**Effort:** 3-5 days
|
|
**Impact:** High (Reliability)
|
|
|
|
**Description:**
|
|
Automatically fallback to alternative LLM provider on failure or rate limit.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `LlmProviderHealth` model to track provider status
|
|
- [ ] Create `IProviderHealthMonitor` service
|
|
- [ ] Implement health check mechanism (ping providers periodically)
|
|
- [ ] Create provider priority list configuration
|
|
- [ ] Update `LlmService.ChatAsync()` to implement fallback logic
|
|
- [ ] Add retry logic with exponential backoff
|
|
- [ ] Track provider failure rates
|
|
- [ ] Send alert when provider is down
|
|
- [ ] Update frontend to show current provider
|
|
- [ ] Test failover scenarios
|
|
|
|
**Provider Priority Example:**
|
|
1. Primary: OpenAI GPT-4
|
|
2. Secondary: Anthropic Claude
|
|
3. Tertiary: Google Gemini
|
|
4. Fallback: Local model (if available)
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Application/Services/ProviderHealthMonitor.cs`
|
|
- `src/Managing.Domain/Llm/LlmProviderHealth.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Application/Services/LlmService.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 10: Scheduled Queries / Alerts
|
|
**Status:** Not Started
|
|
**Effort:** 4-6 days
|
|
**Impact:** High (Automation)
|
|
|
|
**Description:**
|
|
Run queries on schedule and notify users of changes (e.g., "Alert when backtest scores > 80").
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `LlmAlert` domain model (Id, UserId, Query, Schedule, Condition, IsActive, LastRun, CreatedAt)
|
|
- [ ] Create `ILlmAlertRepository` interface
|
|
- [ ] Implement `LlmAlertRepository` with MongoDB
|
|
- [ ] Create background service to process alerts (Hangfire or Quartz.NET)
|
|
- [ ] Create new endpoint: `POST /Llm/Alerts` (create alert)
|
|
- [ ] Create new endpoint: `GET /Llm/Alerts` (list user's alerts)
|
|
- [ ] Create new endpoint: `PUT /Llm/Alerts/{id}` (update alert)
|
|
- [ ] Create new endpoint: `DELETE /Llm/Alerts/{id}` (delete alert)
|
|
- [ ] Implement notification system (SignalR, email, push)
|
|
- [ ] Create alert management UI
|
|
- [ ] Add schedule picker (cron expression builder)
|
|
- [ ] Test with various schedules and conditions
|
|
|
|
**Example Alerts:**
|
|
- "Notify me when a backtest scores > 80" (run every hour)
|
|
- "Daily summary of new backtests" (run at 9am daily)
|
|
- "Alert when bundle completes" (run every 5 minutes)
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Domain/Llm/LlmAlert.cs`
|
|
- `src/Managing.Application.Abstractions/Repositories/ILlmAlertRepository.cs`
|
|
- `src/Managing.Infrastructure/Repositories/LlmAlertRepository.cs`
|
|
- `src/Managing.Application/Services/LlmAlertService.cs`
|
|
- `src/Managing.Application/BackgroundServices/LlmAlertProcessor.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 11: Smart Context Window Management
|
|
**Status:** Not Started
|
|
**Effort:** 3-5 days
|
|
**Impact:** Medium (Better conversations)
|
|
|
|
**Description:**
|
|
Intelligently compress conversation history instead of simple truncation.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Research and implement summarization approach (LLM-based or extractive)
|
|
- [ ] Create `SummarizeConversation()` method
|
|
- [ ] Update `TrimConversationContext()` to use summarization
|
|
- [ ] Preserve key entities (IDs, numbers, dates)
|
|
- [ ] Use embeddings to identify relevant context (optional, advanced)
|
|
- [ ] Test with long conversations (50+ messages)
|
|
- [ ] Measure token savings vs quality trade-off
|
|
- [ ] Add configuration for compression strategy
|
|
|
|
**Approaches:**
|
|
1. **Simple:** Summarize every N old messages into single message
|
|
2. **Advanced:** Use embeddings to keep semantically relevant messages
|
|
3. **Hybrid:** Keep recent messages + summarized older messages + key facts
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
|
|
---
|
|
|
|
### ✅ Priority 12: Interactive Clarification Questions
|
|
**Status:** Not Started
|
|
**Effort:** 3-4 days
|
|
**Impact:** Medium (Reduce back-and-forth)
|
|
|
|
**Description:**
|
|
When ambiguous, LLM asks structured multiple-choice questions instead of open-ended text.
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `ClarificationOption` model (Id, Label, Description)
|
|
- [ ] Add `Options` property to `LlmProgressUpdate`
|
|
- [ ] Update system prompt to output clarification questions in structured format
|
|
- [ ] Create `ExtractClarificationOptions()` method
|
|
- [ ] Update `ChatStreamInternal()` to handle clarification state
|
|
- [ ] Update frontend to display radio buttons/chips for options
|
|
- [ ] Handle user selection (send as next message automatically)
|
|
- [ ] Test with ambiguous queries
|
|
|
|
**Example:**
|
|
User: "Show me the backtest"
|
|
LLM: "Which backtest would you like to see?"
|
|
- 🔘 Best performing backtest
|
|
- 🔘 Most recent backtest
|
|
- 🔘 Specific backtest by name
|
|
|
|
**Files to Create:**
|
|
- `src/Managing.Domain/Llm/ClarificationOption.cs`
|
|
|
|
**Files to Modify:**
|
|
- `src/Managing.Api/Controllers/LlmController.cs`
|
|
- `src/Managing.Application.Abstractions/Services/ILlmService.cs`
|
|
- Frontend components (AiChat.tsx)
|
|
|
|
---
|
|
|
|
## 🔧 Additional Features (Nice to Have)
|
|
|
|
### Voice Input Support
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Medium
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create new endpoint: `POST /Llm/VoiceChat` (accept audio file)
|
|
- [ ] Integrate speech-to-text service (Azure Speech, OpenAI Whisper)
|
|
- [ ] Process transcribed text as normal chat
|
|
- [ ] Add microphone button in frontend
|
|
- [ ] Handle audio recording in browser
|
|
- [ ] Test with various audio formats and accents
|
|
|
|
---
|
|
|
|
### Smart Conversation Titling
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 hours
|
|
**Impact:** Low (QoL)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] After first response, send summary request to LLM
|
|
- [ ] Update conversation title in background
|
|
- [ ] Don't block user while generating title
|
|
- [ ] Test with various conversation types
|
|
|
|
---
|
|
|
|
### Tool Call Caching
|
|
**Status:** Not Started
|
|
**Effort:** 1-2 days
|
|
**Impact:** Medium (Performance)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create cache key hash function (toolName + arguments)
|
|
- [ ] Implement cache wrapper around `ExecuteToolAsync()`
|
|
- [ ] Configure cache duration per tool type
|
|
- [ ] Invalidate cache on data mutations
|
|
- [ ] Test cache hit/miss rates
|
|
|
|
---
|
|
|
|
### Conversation Branching
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Low (Power user feature)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create new endpoint: `POST /Llm/Conversations/{id}/Branch?fromMessageId={id}`
|
|
- [ ] Copy conversation history up to branch point
|
|
- [ ] Create new conversation with copied history
|
|
- [ ] Update UI to show branch option on messages
|
|
- [ ] Test branching at various points
|
|
|
|
---
|
|
|
|
### LLM Model Selection
|
|
**Status:** Not Started
|
|
**Effort:** 1-2 days
|
|
**Impact:** Medium (Cost control)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Add `PreferredModel` property to `LlmChatRequest`
|
|
- [ ] Create model configuration (pricing, speed, quality scores)
|
|
- [ ] Update frontend with model selector dropdown
|
|
- [ ] Display model info (cost, speed, quality)
|
|
- [ ] Test with different models
|
|
|
|
---
|
|
|
|
### Debug Mode
|
|
**Status:** Not Started
|
|
**Effort:** 4-6 hours
|
|
**Impact:** Low (Developer tool)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Add `Debug` property to `LlmChatRequest`
|
|
- [ ] Return full prompt, raw response, token breakdown when debug=true
|
|
- [ ] Create debug panel in UI
|
|
- [ ] Add toggle to enable/disable debug mode
|
|
- [ ] Test with various queries
|
|
|
|
---
|
|
|
|
### PII Detection & Redaction
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Medium (Security)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Implement PII detection regex (email, phone, SSN, credit card)
|
|
- [ ] Scan messages before sending to LLM
|
|
- [ ] Warn user about detected PII
|
|
- [ ] Option to redact or anonymize
|
|
- [ ] Test with various PII patterns
|
|
|
|
---
|
|
|
|
### Rate Limiting Per User
|
|
**Status:** Not Started
|
|
**Effort:** 1-2 days
|
|
**Impact:** Medium (Cost control)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create rate limit configuration (requests/hour, tokens/day)
|
|
- [ ] Implement rate limit middleware
|
|
- [ ] Track usage per user
|
|
- [ ] Return 429 with quota info when exceeded
|
|
- [ ] Display quota usage in UI
|
|
|
|
---
|
|
|
|
### Request Queueing
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Medium (Reliability)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Implement request queue with priority
|
|
- [ ] Queue requests when rate limited
|
|
- [ ] Send position-in-queue updates via SignalR
|
|
- [ ] Process queue when rate limit resets
|
|
- [ ] Test with high load
|
|
|
|
---
|
|
|
|
### Prompt Version Control
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Low (Optimization)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create `SystemPrompt` model (Version, Content, CreatedAt, IsActive, SuccessRate)
|
|
- [ ] Store multiple prompt versions
|
|
- [ ] A/B test prompts (rotate per conversation)
|
|
- [ ] Track success metrics per prompt version
|
|
- [ ] UI to manage prompt versions
|
|
|
|
---
|
|
|
|
### LLM Playground
|
|
**Status:** Not Started
|
|
**Effort:** 3-4 days
|
|
**Impact:** Low (Developer tool)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Create playground UI component
|
|
- [ ] System prompt editor with syntax highlighting
|
|
- [ ] Message history builder
|
|
- [ ] Tool selector
|
|
- [ ] Temperature/token controls
|
|
- [ ] Side-by-side comparison
|
|
- [ ] Test various configurations
|
|
|
|
---
|
|
|
|
### Collaborative Filtering
|
|
**Status:** Not Started
|
|
**Effort:** 3-5 days
|
|
**Impact:** Low (Discovery)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Track query patterns per user
|
|
- [ ] Implement collaborative filtering algorithm
|
|
- [ ] Suggest related queries after response
|
|
- [ ] Display "Users also asked" section
|
|
- [ ] Test recommendation quality
|
|
|
|
---
|
|
|
|
### Conversation Encryption
|
|
**Status:** Not Started
|
|
**Effort:** 2-3 days
|
|
**Impact:** Medium (Security)
|
|
|
|
**Implementation Tasks:**
|
|
- [ ] Implement encryption/decryption service
|
|
- [ ] Generate user-specific encryption keys
|
|
- [ ] Encrypt messages before storing
|
|
- [ ] Decrypt on retrieval
|
|
- [ ] Test performance impact
|
|
|
|
---
|
|
|
|
## 📊 Progress Tracker
|
|
|
|
**Quick Wins:** 0/4 completed (0%)
|
|
**Medium Effort:** 0/4 completed (0%)
|
|
**Long-term:** 0/4 completed (0%)
|
|
**Additional Features:** 0/15 completed (0%)
|
|
|
|
**Overall Progress:** 0/27 completed (0%)
|
|
|
|
---
|
|
|
|
## 🎯 Recommended Implementation Order
|
|
|
|
1. **Conversation Persistence** - Foundation for other features
|
|
2. **Suggested Follow-up Questions** - Quick UX win
|
|
3. **Feedback & Rating System** - Quality tracking
|
|
4. **Usage Analytics Dashboard** - Monitor costs
|
|
5. **Response Streaming** - Better UX
|
|
6. **Export Conversations** - User requested feature
|
|
7. **Quick Actions** - Workflow optimization
|
|
8. **Multi-Provider Fallback** - Reliability
|
|
9. **Query Categorization** - Better analytics
|
|
10. **Smart Context Management** - Better conversations
|
|
|
|
---
|
|
|
|
## 📝 Notes
|
|
|
|
- All features should follow the Controller → Application → Repository pattern
|
|
- Regenerate `ManagingApi.ts` after adding new endpoints: `cd src/Managing.Nswag && dotnet build`
|
|
- Use MongoDB for document storage, InfluxDB for time-series metrics
|
|
- Test all features with real user scenarios
|
|
- Consider token costs when implementing LLM-heavy features (summarization, titling)
|
|
- Ensure all features respect user privacy and data security
|
|
|
|
---
|
|
|
|
**Last Updated:** 2026-01-07
|
|
**Maintained By:** Development Team
|