- Create 4 infrastructure services (LLM, Storage, Platform, Voice) - Refactor all modules to pure business logic (no HTTP/SQLite/Win32) - Add bundled SQLite amalgamation for MinGW compatibility - Make OpenSSL optional in CMake configuration - Fix topic naming convention (colon format) - Add succession documentation Build status: CMake config needs SQLite C language fix (documented) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Document de Succession - Refactoring AISSIA
Contexte
Refactoring du code AISSIA pour le rendre conforme aux principes GroveEngine (audit initial : 33% conforme, 2/6 modules).
Ce qui a été fait
1. Architecture Services (nouveau)
Créé 4 services dans src/services/ qui gèrent l'infrastructure :
| Service | Fichiers | Responsabilité |
|---|---|---|
| LLMService | LLMService.hpp/.cpp |
HTTP vers Claude/OpenAI API |
| StorageService | StorageService.hpp/.cpp |
SQLite persistence |
| PlatformService | PlatformService.hpp/.cpp |
Win32 window tracking |
| VoiceService | VoiceService.hpp/.cpp |
TTS/STT engines |
Interface commune : IService.hpp
2. Modules refactorisés (logique pure)
| Module | Avant | Après | Changements |
|---|---|---|---|
| AIModule | 306 lignes, HTTP direct | ~170 lignes | Publie llm:request, écoute llm:response |
| StorageModule | 273 lignes, sqlite3 | ~130 lignes | Publie storage:save_* |
| MonitoringModule | 222 lignes, Win32 | ~190 lignes | Écoute platform:window_* |
| VoiceModule | 209 lignes, COM/TTS | ~155 lignes | Publie voice:speak |
| SchedulerModule | - | - | Topics corrigés (: au lieu de /) |
| NotificationModule | - | - | Déjà conforme |
3. main.cpp réécrit
- Initialise les 4 services avant les modules
MessageRoutergère le routage IIO entre services et modules- Services process() avant modules dans la boucle principale
4. CMakeLists.txt
- SQLite bundled dans
deps/sqlite/(amalgamation) - OpenSSL rendu optionnel
- Nouvelles targets :
AissiaServices,AissiaLLM,AissiaPlatform,AissiaAudio
État du build
Problème actuel
CMake Error: Cannot determine link language for target "sqlite3"
Fix appliqué (dans CMakeLists.txt)
enable_language(C) # SQLite is C code
add_library(sqlite3 STATIC
${CMAKE_CURRENT_SOURCE_DIR}/deps/sqlite/sqlite3.c
)
set_target_properties(sqlite3 PROPERTIES LINKER_LANGUAGE C)
Pour terminer le build
cd C:\Users\alexi\Documents\projects\aissia
rm -rf build # Clean start recommandé
cmake -G "MinGW Makefiles" -B build
cmake --build build -j4
Fichiers créés/modifiés
Nouveaux fichiers
src/services/IService.hppsrc/services/LLMService.hpp/.cppsrc/services/StorageService.hpp/.cppsrc/services/PlatformService.hpp/.cppsrc/services/VoiceService.hpp/.cppdeps/sqlite/sqlite3.c(téléchargé)deps/sqlite/sqlite3.h
Fichiers modifiés
src/main.cpp- réécrit complètementsrc/modules/AIModule.h/.cppsrc/modules/StorageModule.h/.cppsrc/modules/MonitoringModule.h/.cppsrc/modules/VoiceModule.h/.cppsrc/modules/SchedulerModule.h/.cppCMakeLists.txtexternal/GroveEngine/CMakeLists.txt(OpenSSL optionnel)
Communication Inter-Modules (Topics)
Format : module:event (utiliser : pas /)
LLM
llm:request- Module -> Servicellm:response- Service -> Modulellm:error- Service -> Module
Storage
storage:save_session- Module -> Servicestorage:save_app_usage- Module -> Servicestorage:session_saved- Service -> Modulestorage:ready- Service -> Module
Platform
platform:window_info- Service -> Moduleplatform:window_changed- Service -> Moduleplatform:idle_detected- Service -> Module
Voice
voice:speak- Module -> Servicevoice:speaking_started- Service -> Module
Scheduler (existant)
scheduler:hyperfocus_alertscheduler:break_reminderscheduler:focus_session_started
Prochaines étapes
- Terminer le build (fix SQLite C language)
- Tester compilation de tous les modules
- Vérifier hot-reload fonctionne
- Tests d'intégration services <-> modules