Atlas / docs /analytics /overview.md
findEthics
Complete codebase cleanup and project structure validation
f0b765c
|
Raw
History Blame Contribute Delete
3.5 kB
# Analytics Approach for Atlas Chat App
## Overview
This document outlines a simple analytics implementation for the Atlas chat application, designed for learning purposes while maintaining core functionality and insights.
## Database Choice
### Primary Option: MongoDB
- **Rationale**: Document-based storage perfect for analytics data
- **Setup**: MongoDB Atlas free tier (512MB storage, perfect for learning)
- **Driver**: `motor` for async Python operations
- **Benefits**:
- Flexible schema for evolving analytics needs
- Built-in aggregation pipeline for queries
- JSON-like documents match Python dictionaries
### Alternative Option: JSON Files
- **Use Case**: Ultra-simple setup without external dependencies
- **Storage**: Local JSON files with rotation
- **Benefits**: No database setup required, easy to inspect data
- **Limitations**: Not suitable for production, limited query capabilities
## Data Schema Design
### 1. Chat Sessions
```json
{
"_id": "session_uuid",
"start_time": "2024-01-01T10:00:00Z",
"end_time": "2024-01-01T10:15:00Z",
"message_count": 8,
"search_used": true,
"user_agent": "local_app.py/1.0"
}
```
### 2. Chat Messages
```json
{
"_id": "message_uuid",
"session_id": "session_uuid",
"timestamp": "2024-01-01T10:05:00Z",
"prompt_length": 45,
"response_length": 320,
"used_search": false,
"response_time_ms": 2500,
"max_tokens": 500,
"temperature": 0.7,
"success": true
}
```
### 3. Search Analytics (Optional)
```json
{
"_id": "search_uuid",
"message_id": "message_uuid",
"timestamp": "2024-01-01T10:05:00Z",
"search_query": "python machine learning",
"results_count": 7,
"search_time_ms": 1200,
"engines_used": ["brave", "duckduckgo"]
}
```
## Privacy Considerations
### For Learning Project
- Store minimal user data
- No IP address logging
- No personal information storage
- Focus on usage patterns, not user identity
### Data Retention
- Keep data for 30 days maximum
- Automatic cleanup of old records
- Optional: Allow users to opt-out of analytics
## Implementation Architecture
### 1. Analytics Module Structure
```
analytics/
β”œβ”€β”€ __init__.py
β”œβ”€β”€ database.py # Database connection and operations
β”œβ”€β”€ collectors.py # Data collection functions
β”œβ”€β”€ models.py # Data models/schemas
└── dashboard.py # Analytics endpoints
```
### 2. Integration Points
- **Middleware**: Automatic session and message tracking
- **Decorators**: Performance timing
- **Endpoints**: Manual analytics triggers
### 3. Analytics Endpoints
- `GET /analytics/stats` - Basic usage statistics
- `GET /analytics/dashboard` - Simple HTML dashboard
- `GET /analytics/export` - Data export for analysis
## Key Metrics to Track
### Usage Metrics
- Messages per day/week
- Average session length
- Search usage percentage
- Peak usage hours
### Performance Metrics
- Average response time
- Search performance
- Error rates
- System availability
### Content Metrics
- Popular query types
- Message length distributions
- Search vs. direct query ratios
## Learning Objectives
This implementation teaches:
1. **Database Integration**: Async NoSQL operations
2. **Data Modeling**: Schema design for analytics
3. **Performance Monitoring**: Timing and metrics collection
4. **Web Analytics**: Basic dashboard creation
5. **Privacy**: Responsible data collection practices
## Next Steps
See [implementation-tasks.md](implementation-tasks.md) for the phased implementation plan.