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

346 lines
11 KiB
Markdown

# 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