botserver/MISSING_IMPLEMENTATIONS.md

329 lines
8.8 KiB
Markdown
Raw Normal View History

2025-12-03 07:15:54 -03:00
# Missing Implementations - UI Apps Backend Integration
## Status Summary
**Frontend (HTML/JS)**: ✅ COMPLETE - All UI shells exist
**Backend (Rust APIs)**: 🔴 INCOMPLETE - Missing handlers
| App | HTML | JavaScript | Backend Routes | Status |
|-----|------|-----------|------------------|--------|
| Chat | ✅ | ✅ basic | ✅ /api/sessions, /ws | COMPLETE |
| Drive | ✅ | ✅ basic | ✅ /api/drive/* | COMPLETE |
| Tasks | ✅ | ✅ basic | ✅ /api/tasks/* | COMPLETE |
| Mail | ✅ | ✅ basic | ✅ /api/email/* | COMPLETE |
| Calendar | ✅ | ✅ basic | ✅ CalDAV, /api/calendar/* | COMPLETE |
| Meet | ✅ | ✅ basic | ✅ /api/meet/*, /ws/meet | COMPLETE |
| **Analytics** | ✅ | ✅ forms | ❌ NONE | **NEEDS BACKEND** |
| **Paper** | ✅ | ✅ editor | ❌ NONE | **NEEDS BACKEND** |
| **Research** | ✅ | ✅ search | ✅ /api/kb/search | **PARTIAL** |
| **Designer** | ✅ | ✅ builder | ❌ NONE | **NEEDS BACKEND** |
| **Sources** | ✅ | ✅ list | ❌ NONE | **NEEDS BACKEND** |
| Monitoring | ✅ | ✅ dashboard | ✅ /api/admin/stats | COMPLETE |
---
## Backend Endpoints That Need Implementation
### 1. Analytics Dashboard (`/api/analytics/`)
**Current URL Definition**:
- `/api/analytics/dashboard` - GET
- `/api/analytics/metric` - GET
**Needed Endpoints**:
```rust
GET /api/analytics/dashboard?timeRange=day|week|month|year
→ Returns HTML: dashboard cards with metrics
GET /api/analytics/sessions?start_date=&end_date=
→ Returns HTML: session analytics table
GET /api/analytics/bots?bot_id=&timeRange=
→ Returns HTML: bot performance metrics
GET /api/analytics/top-queries
→ Returns HTML: trending queries list
GET /api/analytics/error-rate?timeRange=
→ Returns HTML: error statistics
```
**Backend Logic Needed**:
- Query `message_history` table for message counts
- Calculate aggregates from `sessions` table
- Fetch system metrics from monitoring
- Use database connection pool in `AppState`
- Return Askama template rendered as HTML
---
### 2. Paper App - Document Management (`/api/documents/`)
**Needed Endpoints**:
```rust
POST /api/documents
{ title, content, type: "draft" | "note" | "template" }
→ Returns: Document ID + status
GET /api/documents
→ Returns HTML: document list with previews
GET /api/documents/:id
→ Returns HTML: full document content
PUT /api/documents/:id
{ title?, content? }
→ Returns: success status
DELETE /api/documents/:id
→ Returns: 204 No Content
POST /api/documents/:id/export?format=pdf|docx|txt
→ Returns: File binary
POST /api/documents/:id/ai
{ action: "rewrite" | "summarize" | "expand", tone?: string }
→ Returns HTML: AI suggestion panel
```
**Backend Logic Needed**:
- Store documents in Drive (S3) under `.gbdocs/`
- Use LLM module for AI operations (exists at `botserver/src/llm/`)
- Query Drive metadata from AppState
- Use Askama to render document HTML
---
### 3. Designer App - Bot Configuration (`/api/bots/`, `/api/dialogs/`)
**Current URL Definition**:
- `/api/bots` - GET/POST
- `/api/bots/:id` - GET/PUT/DELETE
- `/api/bots/:id/config` - GET/PUT
**Needed Endpoints**:
```rust
GET /api/bots/:id/dialogs
→ Returns HTML: dialog list
POST /api/bots/:id/dialogs
{ name, content: BASIC code }
→ Returns: success + dialog ID
PUT /api/bots/:id/dialogs/:dialog_id
{ name?, content? }
→ Returns: success
DELETE /api/bots/:id/dialogs/:dialog_id
→ Returns: 204 No Content
POST /api/bots/:id/dialogs/:dialog_id/validate
→ Returns HTML: validation results (errors/warnings)
POST /api/bots/:id/dialogs/:dialog_id/deploy
→ Returns HTML: deployment status
GET /api/bots/:id/templates
→ Returns HTML: available template list
```
**Backend Logic Needed**:
- BASIC compiler (exists at `botserver/src/basic/compiler/`)
- Store dialog files in Drive under `.gbdialogs/`
- Parse BASIC syntax for validation
- Use existing database and Drive connections
---
### 4. Sources App - Templates & Prompts (`/api/sources/`)
**Needed Endpoints**:
```rust
GET /api/sources?category=all|templates|prompts|samples
→ Returns HTML: source card grid
GET /api/sources/:id
→ Returns HTML: source detail view
POST /api/sources
{ name, content, category, description, tags }
→ Returns: source ID (admin only)
POST /api/sources/:id/clone
→ Returns: new source ID
POST /api/sources/templates/:id/create-bot
{ bot_name, bot_description }
→ Returns HTML: new bot created message
```
**Backend Logic Needed**:
- List files from Drive `.gbai/templates` folder
- Parse template metadata from YAML/comments
- Create new bots by copying template files
- Query Drive for available templates
---
### 5. Research App - Enhancement (`/api/kb/`)
**Current**: `/api/kb/search` exists but returns JSON
**Needed Improvements**:
```rust
GET /api/kb/search?q=query&limit=10&offset=0
→ Already exists but needs HTMX response format
→ Return HTML partial with results (not JSON)
GET /api/kb/stats?bot_id=
→ Returns HTML: KB statistics card
POST /api/kb/reindex?bot_id=
→ Returns HTML: reindexing status
```
**Changes Needed**:
- Add Askama template for search results HTML
- Change response from JSON to HTML
- Keep API logic the same, just change rendering
---
## HTMX Integration Pattern
### Frontend Pattern (Already in HTML files)
```html
<!-- Research app example -->
<input type="text"
id="researchQuery"
placeholder="Search knowledge base..."
hx-get="/api/kb/search"
hx-target="#researchResults"
hx-trigger="keyup changed delay:500ms"
hx-include="[name='limit']"
/>
<div id="researchResults">
<!-- Backend fills this with HTML -->
</div>
```
### Backend Response Pattern (What to implement)
Instead of returning JSON:
```json
{
"results": [
{ "id": 1, "title": "Item 1", "snippet": "..." }
]
}
```
Return Askama template as HTML:
```html
<div class="result-item" hx-get="/api/kb/1" hx-trigger="click">
<h3>Item 1</h3>
<p class="snippet">...</p>
<span class="meta">relevance: 0.95</span>
</div>
```
---
## Implementation Priority
### 🔴 CRITICAL (Quick Wins)
1. **Analytics Dashboard** - Pure SQL aggregation
- Effort: 4-6 hours
- No external dependencies
- Just query existing tables
2. **Paper Documents** - Reuse Drive module
- Effort: 2-3 hours
- Use existing S3 integration
- Minimal new code
3. **Research HTML Integration** - Change response format
- Effort: 1-2 hours
- KB search exists, just render differently
- Add Askama template
### 🟡 IMPORTANT (Medium Effort)
4. **Sources Templates** - File enumeration
- Effort: 2-3 hours
- List Drive templates
- Parse metadata
5. **Designer Bot Config** - Use existing compiler
- Effort: 6-8 hours
- BASIC compiler exists
- Integrate with Drive storage
---
## Code Locations Reference
| Component | Location |
|-----------|----------|
| Database models | `botserver/src/schema.rs` |
| Existing handlers | `botserver/src/{drive,tasks,email,calendar,meet}/mod.rs` |
| BASIC compiler | `botserver/src/basic/compiler/mod.rs` |
| AppState | `botserver/src/core/shared/state.rs` |
| URL definitions | `botserver/src/core/urls.rs` |
| Askama templates | `botserver/templates/` |
| LLM module | `botserver/src/llm/mod.rs` |
| Drive module | `botserver/src/drive/mod.rs` |
---
## Testing Strategy
### Manual Endpoint Testing
```bash
# Test Analytics (when implemented)
curl -X GET "http://localhost:3000/api/analytics/dashboard?timeRange=day"
# Test Paper documents (when implemented)
curl -X GET "http://localhost:3000/api/documents"
# Test Research (update response format)
curl -X GET "http://localhost:3000/api/kb/search?q=test"
# Test Sources (when implemented)
curl -X GET "http://localhost:3000/api/sources?category=templates"
# Test Designer (when implemented)
curl -X GET "http://localhost:3000/api/bots/bot-id/dialogs"
```
### HTMX Integration Testing
1. Open browser DevTools Network tab
2. Click button in UI that triggers HTMX
3. Verify request goes to correct endpoint
4. Verify response is HTML (not JSON)
5. Verify HTMX swaps content into target element
---
## Key Principles
**Use HTMX for UI interactions** - Let backend render HTML
**Reuse existing modules** - Drive, LLM, compiler already exist
**Minimal JavaScript** - Only `htmx-app.js` and `theme-manager.js` needed
**Return HTML from endpoints** - Use Askama templates
**Leverage AppState** - Database, Drive, LLM all available
**Keep features modular** - Each app independent, can be disabled
---
## Not Implemented (By Design)
- ❌ Player app (media viewer) - Use Drive file previews instead
- ❌ Custom JavaScript per app - HTMX handles all interactions
- ❌ GraphQL - REST API with HTMX is simpler
- ❌ WebAssembly - Rust backend does heavy lifting