- 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>
346 lines
11 KiB
Markdown
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
|