timetrack-pro/plans/implemPlan.md
StillHammer fe30e811a3 Initial commit - TimeTrack Pro
- Structure projet complete
- Schema BDD (3 tables: Clients, Projets, Temps)
- 6 modules VBA documentes
- Scripts SQL de creation
- Plan d'implementation pour agent
- Base Access avec tables creees (Phase 1 complete)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 10:53:11 +07:00

11 KiB

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 = "<contenu de mod_Config depuis VBA_MODULES.md>"
  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 = "<contenu valide>"

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 = "<id du backup cree en Step 0.2>"

Auteur: Claude Date: 2025-12-30 Version: 1.0