# TimeTrack Pro - Plan d'Implementation pour Agent ## Informations Critiques **Fichier cible:** `C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb` **Prerequis humain:** Le fichier `.accdb` doit exister (base Access vide creee manuellement). **Outils MCP utilises:** - `run_access_query` - Execution SQL - `list_access_tables` - Verification tables - `get_worksheet_data` - Lecture donnees - `set_worksheet_data` - Ecriture donnees - `inject_vba` - Injection modules VBA - `validate_vba_code` - Validation syntaxe VBA - `backup_vba` - Sauvegarde fichier --- ## Phase 0 : Verification Prerequis ### Step 0.1 - Verifier existence fichier ``` Action: list_access_tables Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" ``` - **Si erreur "fichier introuvable":** STOP - Demander a l'utilisateur de creer la base Access vide - **Si succes (meme vide):** Continuer ### Step 0.2 - Creer backup ``` Action: backup_vba Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" action = "create" ``` - Noter le backup_id pour restauration eventuelle --- ## Phase 1 : Creation Structure BDD ### Step 1.1 - Creer table tbl_Clients ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "CREATE TABLE tbl_Clients (ClientID AUTOINCREMENT PRIMARY KEY, Nom TEXT(100) NOT NULL, Email TEXT(100), Telephone TEXT(20), Notes MEMO, DateCreation DATETIME DEFAULT Now())" ``` - **Si erreur "table existe deja":** Ignorer et continuer - **Si autre erreur:** STOP et reporter ### Step 1.2 - Creer table tbl_Projets ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "CREATE TABLE tbl_Projets (ProjetID AUTOINCREMENT PRIMARY KEY, ClientID LONG NOT NULL, Nom TEXT(100) NOT NULL, Description MEMO, TauxHoraire CURRENCY DEFAULT 0, Actif YESNO DEFAULT True, DateCreation DATETIME DEFAULT Now())" ``` ### Step 1.3 - Creer table tbl_Temps ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "CREATE TABLE tbl_Temps (TempsID AUTOINCREMENT PRIMARY KEY, ProjetID LONG NOT NULL, DateEntree DATETIME NOT NULL, Duree DOUBLE NOT NULL, Description MEMO, DateCreation DATETIME DEFAULT Now())" ``` **Note:** Utiliser `DateEntree` au lieu de `Date` (mot reserve SQL) ### Step 1.4 - Verification Checkpoint 1 ``` Action: list_access_tables Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" ``` - **Attendu:** 3 tables (tbl_Clients, tbl_Projets, tbl_Temps) - **Si manquant:** Reprendre les steps 1.1-1.3 pour les tables manquantes ### Step 1.5 - Creer index (optionnel mais recommande) ``` Action: run_access_query (x4) sql_1 = "CREATE INDEX idx_Projets_ClientID ON tbl_Projets (ClientID)" sql_2 = "CREATE INDEX idx_Temps_ProjetID ON tbl_Temps (ProjetID)" sql_3 = "CREATE INDEX idx_Temps_Date ON tbl_Temps (DateEntree)" sql_4 = "CREATE INDEX idx_Projets_Actif ON tbl_Projets (Actif)" ``` - Ignorer erreurs "index existe deja" --- ## Phase 2 : Insertion Donnees de Test ### Step 2.1 - Inserer Clients ``` Action: set_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Clients" columns = ["Nom", "Email", "Telephone", "Notes"] mode = "append" data = [ ["Acme Corporation", "contact@acme.com", "01 23 45 67 89", "Client principal"], ["Tech Solutions", "info@techsol.fr", "01 98 76 54 32", "Startup tech"], ["Freelance Direct", "hello@freelance.io", "", "Plateforme freelance"], ["Marketing Pro", "contact@marketingpro.fr", "06 11 22 33 44", "Agence marketing"] ] ``` ### Step 2.2 - Verifier Clients inseres ``` Action: get_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Clients" ``` - **Attendu:** 4 enregistrements avec ClientID 1-4 - Noter les ClientID pour la suite ### Step 2.3 - Inserer Projets ``` Action: set_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Projets" columns = ["ClientID", "Nom", "Description", "TauxHoraire", "Actif"] mode = "append" data = [ [1, "Site Web Corporate", "Refonte du site web principal", 75, true], [1, "Maintenance Mensuelle", "Support et maintenance", 60, true], [2, "API Backend", "Developpement API REST", 85, true], [2, "App Mobile", "Application iOS/Android", 90, true], [3, "Consulting Tech", "Conseil et accompagnement", 100, true], [4, "Campagne SEO", "Optimisation referencement", 70, true] ] ``` ### Step 2.4 - Verifier Projets inseres ``` Action: get_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Projets" ``` - **Attendu:** 6 enregistrements avec ProjetID 1-6 ### Step 2.5 - Inserer Temps ``` Action: set_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Temps" columns = ["ProjetID", "DateEntree", "Duree", "Description"] mode = "append" data = [ [1, "2025-01-02", 3.5, "Maquettes et wireframes"], [1, "2025-01-03", 4.0, "Integration HTML/CSS"], [1, "2025-01-06", 5.5, "Developpement pages dynamiques"], [2, "2025-01-07", 1.5, "Mise a jour plugins"], [2, "2025-01-08", 2.0, "Correction bugs mineurs"], [3, "2025-01-02", 6.0, "Architecture et endpoints"], [3, "2025-01-03", 7.0, "Implementation CRUD"], [3, "2025-01-06", 4.5, "Tests unitaires"], [4, "2025-01-07", 5.0, "Setup projet React Native"], [4, "2025-01-08", 6.5, "Ecrans principaux"], [5, "2025-01-03", 2.0, "Reunion strategie technique"], [5, "2025-01-09", 3.0, "Audit architecture existante"], [6, "2025-01-06", 4.0, "Analyse mots-cles"], [6, "2025-01-08", 3.5, "Optimisation on-page"] ] ``` ### Step 2.6 - Verification Checkpoint 2 ``` Action: get_worksheet_data Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sheet_name = "tbl_Temps" ``` - **Attendu:** 14 enregistrements ### Step 2.7 - Test requete agregation ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "SELECT COUNT(*) AS NbTemps, SUM(Duree) AS TotalHeures FROM tbl_Temps" ``` - **Attendu:** NbTemps = 14, TotalHeures = 58.0 --- ## Phase 3 : Injection Modules VBA **Important:** Lire le code de chaque module dans `VBA_MODULES.md` avant injection. ### Step 3.1 - Valider mod_Config ``` Action: validate_vba_code Params: code = "" file_type = "excel" ``` - **Si erreurs syntaxe:** Corriger et revalider - **Si succes:** Continuer ### Step 3.2 - Injecter mod_Config ``` Action: inject_vba Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" module_name = "mod_Config" code = "" ``` ### Step 3.3 - Valider et Injecter mod_Utils ``` Action: validate_vba_code puis inject_vba module_name = "mod_Utils" ``` ### Step 3.4 - Valider et Injecter mod_DataAccess ``` Action: validate_vba_code puis inject_vba module_name = "mod_DataAccess" ``` ### Step 3.5 - Valider et Injecter mod_Calculs ``` Action: validate_vba_code puis inject_vba module_name = "mod_Calculs" ``` ### Step 3.6 - Valider et Injecter mod_Navigation ``` Action: validate_vba_code puis inject_vba module_name = "mod_Navigation" ``` ### Step 3.7 - Valider et Injecter mod_Export ``` Action: validate_vba_code puis inject_vba module_name = "mod_Export" ``` ### Step 3.8 - Verification Checkpoint 3 ``` Action: list_modules (via extract_vba ou list_macros) Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" ``` - **Attendu:** 6 modules (mod_Config, mod_Utils, mod_DataAccess, mod_Calculs, mod_Navigation, mod_Export) --- ## Phase 4 : Verification Finale ### Step 4.1 - Test requete TempsByClient ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "SELECT c.Nom AS Client, SUM(t.Duree) AS TotalHeures FROM (tbl_Clients c INNER JOIN tbl_Projets p ON c.ClientID = p.ClientID) INNER JOIN tbl_Temps t ON p.ProjetID = t.ProjetID GROUP BY c.Nom ORDER BY c.Nom" ``` - **Attendu:** 4 clients avec leurs totaux heures ### Step 4.2 - Test requete ProjetsActifs ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "SELECT p.Nom AS Projet, c.Nom AS Client, p.TauxHoraire FROM tbl_Clients c INNER JOIN tbl_Projets p ON c.ClientID = p.ClientID WHERE p.Actif = True" ``` - **Attendu:** 6 projets actifs ### Step 4.3 - Test calcul montant ``` Action: run_access_query Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" sql = "SELECT SUM(t.Duree * p.TauxHoraire) AS MontantTotal FROM tbl_Temps t INNER JOIN tbl_Projets p ON t.ProjetID = p.ProjetID" ``` - **Attendu:** Montant > 0 (calcul taux * heures) --- ## Phase 5 : Post-Implementation (Manuel) Ces etapes ne sont PAS automatisables par MCP VBA et doivent etre faites dans Access UI : ### 5.1 - Creer Formulaires - [ ] frm_Accueil - Navigation + stats - [ ] frm_Clients - CRUD clients - [ ] frm_Projets - CRUD projets (filtre par client) - [ ] frm_SaisieTemps - Saisie rapide - [ ] frm_Historique - Liste filtrable ### 5.2 - Creer Rapports - [ ] rpt_RecapPeriode - Recap par periode - [ ] rpt_DetailClient - Detail par client ### 5.3 - Configurer Navigation - [ ] Formulaire de demarrage - [ ] Menu principal - [ ] Boutons de navigation --- ## Resume Checkpoints | Checkpoint | Verification | Critere Succes | |------------|--------------|----------------| | CP0 | Fichier existe | list_access_tables sans erreur | | CP1 | Tables creees | 3 tables visibles | | CP2 | Donnees inserees | 4 clients, 6 projets, 14 temps | | CP3 | Modules VBA | 6 modules injectes | | CP4 | Requetes OK | Agregations retournent donnees | --- ## Gestion des Erreurs | Erreur | Action | |--------|--------| | "fichier introuvable" | Demander creation manuelle base Access | | "table existe deja" | Ignorer et continuer | | "index existe deja" | Ignorer et continuer | | "erreur syntaxe VBA" | Revoir code, corriger, revalider | | "Trust access to VBA" | Activer dans Access > Options > Trust Center | | Autre erreur | STOP, backup_vba restore, reporter | --- ## Commande de Restauration (si besoin) ``` Action: backup_vba Params: file_path = "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb" action = "restore" backup_id = "" ``` --- **Auteur:** Claude **Date:** 2025-12-30 **Version:** 1.0