| # JavaScript Implementace Chat Aplikace | |
| Tato dokumentace popisuje implementované JavaScript funkcionality pro AI chat aplikaci bez změn v UI vzhledu. | |
| ## 🚀 Přehled funkcionalit | |
| ### 1. **Základní Chat Funkce** | |
| - ✅ Real-time komunikace s AI | |
| - ✅ Streaming odpovědí | |
| - ✅ Automatické ukládání konverzací | |
| - ✅ Správa historie chatů | |
| - ✅ Typing indikátory | |
| ### 2. **API Komunikace** | |
| - ✅ HTTP/Fetch API s retry logikou | |
| - ✅ Error handling a connection monitoring | |
| - ✅ Request timeout a cancellation | |
| - ✅ Exponential backoff pro failed requests | |
| - ✅ Message queue pro offline zprávy | |
| ### 3. **State Management** | |
| - ✅ Centralizovaný stav aplikace | |
| - ✅ Persistence do localStorage | |
| - ✅ Conversation management | |
| - ✅ Message status tracking | |
| - ✅ Auto-save funkcionality | |
| ### 4. **Performance & UX** | |
| - ✅ Lazy loading konverzací | |
| - ✅ Virtual scrolling pro dlouhé chaty | |
| - ✅ Debouncing a throttling | |
| - ✅ Memory usage monitoring | |
| - ✅ Performance profiling | |
| ### 5. **Pokročilé Funkce** | |
| - ✅ WebSocket podpora pro real-time | |
| - ✅ Connection status monitoring | |
| - ✅ Security utilities a validation | |
| - ✅ Accessibility features | |
| - ✅ Error reporting systém | |
| ## 📁 Struktura souborů | |
| ``` | |
| public/ | |
| ├── app.js # Hlavní aplikační logika | |
| ├── i18n.js # Internationalization systém | |
| ├── utils.js # Utility funkce | |
| ├── index.html # UI template (nezměněno) | |
| └── styles.css # Styles (nezměněno) | |
| ``` | |
| ## 🔧 Klíčové třídy a komponenty | |
| ### `ChatApp` - Hlavní aplikační třída | |
| ```javascript | |
| const chatApp = new ChatApp(); | |
| chatApp.init(); // Inicializace aplikace | |
| ``` | |
| **Funkcionality:** | |
| - Inicializace a setup aplikace | |
| - Event handling pro UI interakce | |
| - Message sending a receiving | |
| - State synchronization | |
| ### `ChatState` - State management | |
| ```javascript | |
| const chatState = new ChatState(); | |
| chatState.createConversation('New Chat'); | |
| chatState.addMessage('user', 'Hello!'); | |
| ``` | |
| **Funkcionality:** | |
| - Centralizovaná správa stavu | |
| - Conversation management | |
| - Message persistence | |
| - Auto-save do localStorage | |
| ### `APIManager` - API komunikace | |
| ```javascript | |
| const apiManager = new APIManager(); | |
| await apiManager.sendMessage('Hello', history); | |
| ``` | |
| **Funkcionality:** | |
| - HTTP requests s retry logikou | |
| - Error handling a timeouts | |
| - Connection monitoring | |
| - Request cancellation | |
| ### `MessageRenderer` - Renderování zpráv | |
| ```javascript | |
| const messageRenderer = new MessageRenderer(); | |
| messageRenderer.renderMessage(message); | |
| messageRenderer.showTyping(); | |
| ``` | |
| **Funkcionality:** | |
| - Dynamic message rendering | |
| - Typing indicators | |
| - Message formatting | |
| - Scroll management | |
| ### `ConnectionMonitor` - Monitorování připojení | |
| ```javascript | |
| const monitor = new ConnectionMonitor((status) => { | |
| console.log('Connection status:', status); | |
| }); | |
| ``` | |
| **Funkcionality:** | |
| - Real-time connection monitoring | |
| - Online/offline detection | |
| - Ping testing | |
| - Status change callbacks | |
| ## 🛠 Utility systémy | |
| ### Text Processing (`Utils.Text`) | |
| - Text normalization a cleaning | |
| - Markdown parsing | |
| - HTML sanitization | |
| - Search highlighting | |
| ### Date/Time (`Utils.Date`) | |
| - Relative time formatting | |
| - Date parsing a validation | |
| - Timezone handling | |
| - Time calculations | |
| ### Storage (`Utils.Storage`) | |
| - Safe localStorage operations | |
| - JSON serialization | |
| - Storage usage monitoring | |
| - Fallback handling | |
| ### Performance (`Utils.Performance`) | |
| - Execution time measurement | |
| - Memory usage tracking | |
| - Performance observers | |
| - Idle callbacks | |
| ### Validation (`Utils.Validation`) | |
| - Input validation | |
| - Security checks | |
| - Format verification | |
| - Content filtering | |
| ## 🌐 Internationalization (i18n) | |
| Enhanced i18n systém s pokročilými funkcemi: | |
| ```javascript | |
| // Základní překlad | |
| t('chat.welcome') // "Welcome to chat" | |
| // S parametry | |
| t('chat.messageCount', { count: 5 }) // "5 messages" | |
| // S formátováním | |
| t('chat.timestamp', { date: Date.now() }) // "2:30 PM" | |
| // Pluralization | |
| tc('chat.messages', 5) // "5 messages" vs "1 message" | |
| ``` | |
| **Funkcionality:** | |
| - Automatic locale detection | |
| - Pluralization rules | |
| - Parameter interpolation | |
| - Number/date formatting | |
| - RTL language support | |
| - Caching a performance optimization | |
| ## 🔒 Security Features | |
| ### Rate Limiting | |
| ```javascript | |
| const rateLimiter = SecurityUtils.createRateLimiter(10, 60000); | |
| if (!rateLimiter('user123')) { | |
| console.log('Rate limited!'); | |
| } | |
| ``` | |
| ### Content Validation | |
| ```javascript | |
| if (SecurityUtils.validateMessage(content)) { | |
| // Safe to process | |
| } | |
| ``` | |
| ### HTML Sanitization | |
| ```javascript | |
| const safeHTML = SecurityUtils.sanitizeHTML(userInput); | |
| ``` | |
| ## 📊 Performance Monitoring | |
| ### Memory Usage | |
| ```javascript | |
| const memoryInfo = performanceMonitor.getMemoryUsage(); | |
| console.log('Memory usage:', memoryInfo); | |
| ``` | |
| ### Execution Timing | |
| ```javascript | |
| performanceMonitor.startTiming('messageProcessing'); | |
| // ... kód ... | |
| performanceMonitor.endTiming('messageProcessing'); | |
| ``` | |
| ### Network Monitoring | |
| ```javascript | |
| performanceMonitor.observeNetworkTiming(); | |
| ``` | |
| ## ♿ Accessibility Features | |
| ### Keyboard Navigation | |
| - `Ctrl/Cmd + N`: Nová konverzace | |
| - `Ctrl/Cmd + /`: Focus na composer | |
| - `Escape`: Cancel current operation | |
| ### Screen Reader Support | |
| - ARIA labels a descriptions | |
| - Live regions pro notifications | |
| - Semantic HTML structure | |
| - Keyboard focus management | |
| ## 🚨 Error Handling | |
| ### Global Error Reporting | |
| ```javascript | |
| const errorReporter = new ErrorReporter(); | |
| errorReporter.reportError({ | |
| type: 'api', | |
| message: 'Failed to send message', | |
| context: { userId: '123' } | |
| }); | |
| ``` | |
| ### Graceful Degradation | |
| - Offline mode support | |
| - Fallback UI states | |
| - Progressive enhancement | |
| - Error boundaries | |
| ## 🔄 Real-time Features | |
| ### WebSocket Support | |
| ```javascript | |
| const wsManager = new WebSocketManager('ws://localhost:8080'); | |
| wsManager.connect(); | |
| wsManager.on('message', (data) => { | |
| console.log('Received:', data); | |
| }); | |
| ``` | |
| ### Live Updates | |
| - Real-time message delivery | |
| - Typing indicators | |
| - Connection status | |
| - Message read receipts | |
| ## 📱 Responsive Behavior | |
| Všechny funkce jsou optimalizované pro: | |
| - Desktop browsery | |
| - Mobile devices | |
| - Touch interactions | |
| - Variable screen sizes | |
| - Portrait/landscape orientations | |
| ## 🧪 Debug Interface | |
| Pro debugging a testing: | |
| ```javascript | |
| // Global debug objekty | |
| window.chatDebug = { | |
| chatApp, | |
| chatState, | |
| apiManager, | |
| messageRenderer, | |
| performanceMonitor, | |
| errorReporter | |
| }; | |
| window.i18nDebug = { | |
| i18n, | |
| getStats: () => i18n.getStats(), | |
| clearCache: () => i18n.clearCache() | |
| }; | |
| window.Utils = { | |
| Text, Date, Storage, Event, | |
| Performance, Validation, Random | |
| }; | |
| ``` | |
| ## 🚀 Usage Examples | |
| ### Základní inicializace | |
| ```javascript | |
| // Aplikace se automaticky inicializuje při načtení stránky | |
| // Není potřeba manuální setup | |
| ``` | |
| ### Sending zprávy programatically | |
| ```javascript | |
| chatApp.handleSendMessage('Hello, how are you?'); | |
| ``` | |
| ### Přístup k conversation history | |
| ```javascript | |
| const conversation = chatState.getCurrentConversation(); | |
| console.log(conversation.messages); | |
| ``` | |
| ### Změna jazyka | |
| ```javascript | |
| await i18n.setLocale('cs'); | |
| ``` | |
| ### Monitoring performance | |
| ```javascript | |
| const stats = performanceMonitor.getStats(); | |
| console.log('Performance stats:', stats); | |
| ``` | |
| ## 🎯 Features v Development | |
| - [ ] Voice input/output | |
| - [ ] File upload support | |
| - [ ] Advanced markdown rendering | |
| - [ ] Plugin system | |
| - [ ] Advanced search | |
| - [ ] Export/import funkcionalita | |
| ## 📝 Poznámky | |
| 1. **Kompatibilita**: Všechny funkce jsou testované v moderních browserech (Chrome, Firefox, Safari, Edge) | |
| 2. **Performance**: Optimalizované pro smooth UX i při velkých conversation histories | |
| 3. **Accessibility**: Splňuje WCAG 2.1 AA standardy | |
| 4. **Security**: Implementované základní security measures | |
| 5. **Extensibility**: Modulární architektura umožňuje snadné rozšíření | |
| ## 🔗 API Endpoints | |
| Aplikace očekává tyto backend endpoints: | |
| - `POST /chat` - Sending zprávy (streaming response) | |
| - `HEAD /ping` - Health check | |
| - `GET /locales/{locale}.json` - Language files | |
| Všechny funkcionality jsou implementované tak, aby zachovaly stávající UI a design, pouze přidávají funktionalitu "pod kapotou". |