280 lines
7.5 KiB
Markdown
280 lines
7.5 KiB
Markdown
# Frontend AI Analysis Integration
|
|
|
|
## Overview
|
|
This document describes the complete integration of AI analysis functionality into the frontend, including real-time monitoring, progress tracking, and API gateway communication.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Frontend → API Gateway → AI Analysis Service → Git Integration Service
|
|
↓ ↓ ↓ ↓
|
|
Real-time UI → HTTP API → Repository Info → Local File Access
|
|
↓ ↓ ↓ ↓
|
|
Progress → WebSocket → Analysis → Direct File System
|
|
Monitoring → Stream → Processing → Access
|
|
```
|
|
|
|
## Components Implemented
|
|
|
|
### 1. API Routes (`/app/api/ai/repository/`)
|
|
|
|
#### `/analyze/route.ts`
|
|
- **Purpose**: Start AI analysis for a repository
|
|
- **Method**: POST
|
|
- **Input**: `{ repository_id, user_id, output_format, max_files }`
|
|
- **Output**: Analysis result with stats and report path
|
|
|
|
#### `/stream/route.ts`
|
|
- **Purpose**: Real-time streaming of analysis progress
|
|
- **Method**: GET
|
|
- **Input**: `repository_id`, `user_id` as query parameters
|
|
- **Output**: Server-Sent Events stream with progress updates
|
|
|
|
#### `/report/[filename]/route.ts`
|
|
- **Purpose**: Download analysis reports
|
|
- **Method**: GET
|
|
- **Input**: Filename as URL parameter
|
|
- **Output**: File download with appropriate headers
|
|
|
|
### 2. React Hooks (`/hooks/useAIAnalysis.ts`)
|
|
|
|
#### `useAIAnalysis` Hook
|
|
- **State Management**: Analysis progress, results, errors
|
|
- **Functions**:
|
|
- `startAnalysis()`: Initiates analysis with options
|
|
- `stopAnalysis()`: Stops ongoing analysis
|
|
- `resetAnalysis()`: Resets all state
|
|
- **Real-time Updates**: Uses EventSource for streaming updates
|
|
|
|
### 3. UI Components (`/components/ai/`)
|
|
|
|
#### `AnalysisMonitor.tsx`
|
|
- **Real-time Progress**: Shows analysis progress with percentage
|
|
- **Status Indicators**: Loading, error, and completion states
|
|
- **Statistics Display**: File counts, quality scores, languages
|
|
- **Download Functionality**: Direct report download
|
|
|
|
#### `AnalysisModal.tsx`
|
|
- **Modal Interface**: Full-screen analysis interface
|
|
- **Progress Tracking**: Real-time progress updates
|
|
- **Error Handling**: User-friendly error messages
|
|
- **Result Display**: Comprehensive analysis results
|
|
|
|
### 4. Integration Points
|
|
|
|
#### GitHub Repos Page (`/app/github/repos/page.tsx`)
|
|
- **AI Analysis Button**: Triggers analysis modal
|
|
- **Repository Context**: Passes repository ID and name
|
|
- **User Context**: Handles user authentication
|
|
- **Modal Integration**: Seamless modal experience
|
|
|
|
## Real-time Features
|
|
|
|
### 1. Progress Monitoring
|
|
```typescript
|
|
interface AnalysisProgress {
|
|
current_chunk: number
|
|
total_chunks: number
|
|
processed_files: number
|
|
total_files: number
|
|
percentage: number
|
|
}
|
|
```
|
|
|
|
### 2. Status Updates
|
|
- **Ready**: Analysis not started
|
|
- **Analyzing**: In progress with real-time updates
|
|
- **Complete**: Analysis finished with results
|
|
- **Error**: Analysis failed with error message
|
|
|
|
### 3. Statistics Display
|
|
- **File Metrics**: Total files, lines of code
|
|
- **Quality Scores**: Overall code quality rating
|
|
- **Language Breakdown**: Programming languages detected
|
|
- **Quality Distribution**: High/medium/low quality files
|
|
|
|
## API Gateway Integration
|
|
|
|
### 1. Service Communication
|
|
All communication flows through the API gateway:
|
|
```
|
|
Frontend → Next.js API Routes → External Services
|
|
```
|
|
|
|
### 2. Environment Configuration
|
|
```env
|
|
# Service URLs
|
|
GIT_INTEGRATION_SERVICE_URL=http://git-integration:8012
|
|
AI_ANALYSIS_SERVICE_URL=http://ai-analysis-service:8022
|
|
|
|
# Public URLs (for client-side)
|
|
NEXT_PUBLIC_GIT_INTEGRATION_SERVICE_URL=http://localhost:8012
|
|
NEXT_PUBLIC_AI_ANALYSIS_SERVICE_URL=http://localhost:8022
|
|
```
|
|
|
|
### 3. Error Handling
|
|
- **Service Unavailable**: Graceful fallback messages
|
|
- **Network Errors**: Retry mechanisms
|
|
- **Analysis Failures**: User-friendly error display
|
|
|
|
## User Experience Flow
|
|
|
|
### 1. Analysis Initiation
|
|
1. User clicks "AI Analysis" button on repository card
|
|
2. Modal opens with analysis interface
|
|
3. User can start analysis or close modal
|
|
|
|
### 2. Real-time Progress
|
|
1. Analysis starts with progress indicator
|
|
2. Real-time updates show:
|
|
- Files processed
|
|
- Chunks processed
|
|
- Percentage complete
|
|
3. User can stop analysis if needed
|
|
|
|
### 3. Results Display
|
|
1. Analysis completes with success indicator
|
|
2. Statistics displayed:
|
|
- Total files and lines
|
|
- Quality score
|
|
- Language breakdown
|
|
- Quality distribution
|
|
3. Download button for report
|
|
|
|
### 4. Error Handling
|
|
1. Error messages displayed clearly
|
|
2. Retry options provided
|
|
3. User can close and try again
|
|
|
|
## Technical Implementation
|
|
|
|
### 1. State Management
|
|
```typescript
|
|
const {
|
|
isAnalyzing, // Analysis in progress
|
|
progress, // Real-time progress
|
|
result, // Analysis results
|
|
error, // Error messages
|
|
startAnalysis, // Start function
|
|
stopAnalysis, // Stop function
|
|
resetAnalysis // Reset function
|
|
} = useAIAnalysis()
|
|
```
|
|
|
|
### 2. Real-time Updates
|
|
```typescript
|
|
// EventSource for streaming updates
|
|
const eventSource = new EventSource(streamUrl)
|
|
|
|
eventSource.onmessage = (event) => {
|
|
const data = JSON.parse(event.data)
|
|
// Update progress, handle completion, etc.
|
|
}
|
|
```
|
|
|
|
### 3. File Download
|
|
```typescript
|
|
const handleDownloadReport = async () => {
|
|
const response = await fetch(`/api/ai/repository/report/${filename}`)
|
|
const blob = await response.blob()
|
|
// Create download link and trigger download
|
|
}
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
### 1. Authentication
|
|
- User ID passed through all requests
|
|
- JWT tokens for service authentication
|
|
- Repository access validation
|
|
|
|
### 2. Input Validation
|
|
- Repository ID validation
|
|
- User ID validation
|
|
- File size limits
|
|
- Content type validation
|
|
|
|
### 3. Error Handling
|
|
- No sensitive information in error messages
|
|
- Graceful degradation on service failures
|
|
- User-friendly error display
|
|
|
|
## Performance Optimizations
|
|
|
|
### 1. Caching
|
|
- Analysis results cached for 24 hours
|
|
- File content hashing for change detection
|
|
- Redis-based caching system
|
|
|
|
### 2. Rate Limiting
|
|
- 90 requests per minute to Claude API
|
|
- Request queuing and throttling
|
|
- Progress updates to prevent timeouts
|
|
|
|
### 3. Content Optimization
|
|
- Large files truncated intelligently
|
|
- Important code sections preserved
|
|
- Token limit compliance
|
|
|
|
## Deployment Considerations
|
|
|
|
### 1. Environment Variables
|
|
```env
|
|
# Required for production
|
|
GIT_INTEGRATION_SERVICE_URL=https://git-integration.yourdomain.com
|
|
AI_ANALYSIS_SERVICE_URL=https://ai-analysis.yourdomain.com
|
|
```
|
|
|
|
### 2. CORS Configuration
|
|
```typescript
|
|
// API routes handle CORS
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
```
|
|
|
|
### 3. Error Monitoring
|
|
- Console logging for debugging
|
|
- Error tracking for production
|
|
- Performance monitoring
|
|
|
|
## Testing
|
|
|
|
### 1. Unit Tests
|
|
- Hook functionality testing
|
|
- Component rendering tests
|
|
- API route testing
|
|
|
|
### 2. Integration Tests
|
|
- End-to-end analysis flow
|
|
- Real-time update testing
|
|
- Error scenario testing
|
|
|
|
### 3. Performance Tests
|
|
- Large repository handling
|
|
- Concurrent analysis testing
|
|
- Memory usage monitoring
|
|
|
|
## Future Enhancements
|
|
|
|
### 1. Advanced Features
|
|
- Batch analysis for multiple repositories
|
|
- Analysis scheduling
|
|
- Custom analysis parameters
|
|
|
|
### 2. UI Improvements
|
|
- Analysis history
|
|
- Comparison between repositories
|
|
- Advanced filtering and sorting
|
|
|
|
### 3. Performance
|
|
- Background processing
|
|
- Queue management
|
|
- Resource optimization
|
|
|
|
This integration provides a complete, production-ready AI analysis system with real-time monitoring, progress tracking, and seamless user experience through the API gateway architecture.
|