#!/bin/bash # Script de génération du rapport hebdomadaire # Génère automatiquement un rapport de progression pour la semaine set -e # Configuration REPORTS_DIR="REPORTS" TEMPLATE_DIR="templates" CURRENT_WEEK=$(date +%Y-W%U) CURRENT_DATE=$(date +%Y-%m-%d) # Couleurs pour l'affichage RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' NC='\033[0m' # No Color echo -e "${CYAN}📊 Génération du rapport hebdomadaire pour la semaine ${CURRENT_WEEK}${NC}" # Créer le répertoire des rapports s'il n'existe pas mkdir -p "$REPORTS_DIR" # Nom du fichier de rapport REPORT_FILE="$REPORTS_DIR/weekly_${CURRENT_WEEK}.md" # Fonction pour compter les tâches dans CURSOR_TODO.md count_tasks() { local section="$1" local file="CURSOR_TODO.md" if [ ! -f "$file" ]; then echo "0" return fi case "$section" in "done") grep -c "^- \[x\]" "$file" || echo "0" ;; "in_progress") grep -c "^- \[ \].*NOW\|En cours" "$file" || echo "0" ;; "blocked") grep -c "BLOCKED\|Bloqué" "$file" || echo "0" ;; "total") grep -c "^- \[" "$file" || echo "0" ;; *) echo "0" ;; esac } # Fonction pour obtenir les métriques du projet get_project_metrics() { echo "## 📊 Métriques du Projet" echo "" echo "### Code" echo "- **Lignes de code** : $(find . -name '*.go' -o -name '*.rs' -o -name '*.ts' -o -name '*.tsx' | xargs wc -l | tail -1 | awk '{print $1}')" echo "- **Fichiers Go** : $(find . -name '*.go' | wc -l)" echo "- **Fichiers Rust** : $(find . -name '*.rs' | wc -l)" echo "- **Fichiers TypeScript** : $(find . -name '*.ts' -o -name '*.tsx' | wc -l)" echo "- **Fichiers Markdown** : $(find . -name '*.md' | wc -l)" echo "" echo "### Tests" if [ -f "veza-backend-api/coverage.out" ]; then echo "- **Couverture Backend** : $(go tool cover -func=veza-backend-api/coverage.out | tail -1 | awk '{print $3}')" else echo "- **Couverture Backend** : Non disponible" fi echo "" echo "### Dépendances" echo "- **Modules Go** : $(find . -name 'go.mod' | wc -l)" echo "- **Crates Rust** : $(find . -name 'Cargo.toml' | wc -l)" echo "- **Packages Node** : $(find . -name 'package.json' | wc -l)" echo "" } # Fonction pour obtenir les commits de la semaine get_weekly_commits() { echo "## 📝 Commits de la Semaine" echo "" echo "### Derniers commits" echo '```bash' git log --oneline --since="1 week ago" --pretty=format:"%h %ad %s" --date=short | head -10 echo '```' echo "" echo "### Statistiques des commits" echo "- **Total commits** : $(git log --since="1 week ago" --oneline | wc -l)" echo "- **Auteurs** : $(git log --since="1 week ago" --pretty=format:"%an" | sort -u | wc -l)" echo "- **Fichiers modifiés** : $(git diff --name-only HEAD~7 HEAD | wc -l)" echo "" } # Fonction pour obtenir les métriques des agents get_agents_metrics() { echo "## 🤖 Métriques des Agents IA" echo "" echo "### Statut des Agents" for agent in planner researcher implementer qa docs maintainer; do if [ -f ".cursor/agents/$agent/status.txt" ]; then status=$(cat ".cursor/agents/$agent/status.txt") echo "- **$agent** : $status" else echo "- **$agent** : Non actif" fi done echo "" } # Générer le rapport { echo "# 📊 Rapport Hebdomadaire - Semaine ${CURRENT_WEEK}" echo "" echo "**Période** : $(date -d 'monday' +%Y-%m-%d) - $(date -d 'sunday' +%Y-%m-%d)" echo "**Généré le** : ${CURRENT_DATE}" echo "**Généré par** : Script automatique" echo "" echo "## 🎯 Vue d'Ensemble" echo "" local total_tasks=$(count_tasks "total") local done_tasks=$(count_tasks "done") local in_progress_tasks=$(count_tasks "in_progress") local blocked_tasks=$(count_tasks "blocked") echo "### Métriques Clés" echo "- **Tâches Total** : ${total_tasks}" echo "- **Tâches Terminées** : ${done_tasks} ($(( done_tasks * 100 / total_tasks ))%)" echo "- **Tâches En Cours** : ${in_progress_tasks}" echo "- **Tâches Bloquées** : ${blocked_tasks}" echo "" if [ $done_tasks -gt 0 ]; then echo "### Tâches Terminées Cette Semaine" echo "" # Extraire les tâches terminées de cette semaine grep -A 1 "✅ 2024-" CURSOR_TODO.md | grep -v "✅ 2024-" | head -10 | while read -r line; do if [ -n "$line" ]; then echo "- $line" fi done echo "" fi if [ $in_progress_tasks -gt 0 ]; then echo "### Tâches En Cours" echo "" grep -A 1 "NOW\|En cours" CURSOR_TODO.md | grep -v "NOW\|En cours" | head -5 | while read -r line; do if [ -n "$line" ]; then echo "- $line" fi done echo "" fi if [ $blocked_tasks -gt 0 ]; then echo "### Tâches Bloquées" echo "" grep -A 1 "BLOCKED\|Bloqué" CURSOR_TODO.md | grep -v "BLOCKED\|Bloqué" | head -5 | while read -r line; do if [ -n "$line" ]; then echo "- $line" fi done echo "" fi get_project_metrics get_weekly_commits get_agents_metrics echo "## 🎯 Objectifs Semaine Prochaine" echo "" echo "### Priorité 1 (P0)" echo "- [ ] Stabiliser WebSocket chat" echo "- [ ] Implémenter OAuth2 Google" echo "- [ ] Ajouter tests E2E" echo "" echo "### Priorité 2 (P1)" echo "- [ ] Implémenter OAuth2 GitHub" echo "- [ ] Optimiser performance streaming" echo "- [ ] Améliorer monitoring" echo "" echo "### Priorité 3 (P2)" echo "- [ ] Documenter API" echo "- [ ] Sécuriser communications" echo "- [ ] Améliorer UI/UX" echo "" echo "## 📈 Tendances" echo "" echo "### Progression" echo "- **Vélocité** : $done_tasks tâches/semaine" echo "- **Efficacité** : $(( done_tasks * 100 / (done_tasks + in_progress_tasks) ))%" echo "- **Blocages** : $(( blocked_tasks * 100 / total_tasks ))%" echo "" echo "## 🚨 Alertes" echo "" if [ $blocked_tasks -gt 2 ]; then echo "⚠️ **Trop de tâches bloquées** : $blocked_tasks tâches en attente" fi if [ $in_progress_tasks -gt 5 ]; then echo "⚠️ **Trop de tâches en cours** : $in_progress_tasks tâches simultanées" fi if [ $done_tasks -lt 3 ]; then echo "⚠️ **Faible vélocité** : Seulement $done_tasks tâches terminées" fi if [ $blocked_tasks -eq 0 ] && [ $in_progress_tasks -le 3 ] && [ $done_tasks -ge 5 ]; then echo "✅ **Excellent rythme** : Progression constante et efficace" fi echo "" echo "## 📝 Notes" echo "" echo "### Succès de la Semaine" echo "- Documentation dual-track opérationnelle" echo "- Environnement de développement assisté par IA configuré" echo "- Pipeline CI/CD complet mis en place" echo "- Système ADR et agents IA opérationnels" echo "" echo "### Défis Identifiés" echo "- WebSocket chat nécessite stabilisation" echo "- OAuth2 en cours d'implémentation" echo "- Tests E2E à ajouter" echo "" echo "### Actions Correctives" echo "1. **Prioriser WebSocket** : Tests et debugging intensifs" echo "2. **Accélérer OAuth2** : Focus sur Google et GitHub" echo "3. **Ajouter tests** : Playwright pour E2E" echo "4. **Monitoring** : Alertes proactives" echo "" echo "---" echo "" echo "*Rapport généré automatiquement le ${CURRENT_DATE}*" echo "*Prochain rapport : $(date -d '+1 week' +%Y-%m-%d)*" } > "$REPORT_FILE" echo -e "${GREEN}✅ Rapport hebdomadaire généré : ${REPORT_FILE}${NC}" # Afficher un résumé echo -e "${BLUE}📋 Résumé du rapport :${NC}" echo "- Tâches totales : $total_tasks" echo "- Tâches terminées : $done_tasks" echo "- Tâches en cours : $in_progress_tasks" echo "- Tâches bloquées : $blocked_tasks" echo "- Commits cette semaine : $(git log --since="1 week ago" --oneline | wc -l)" # Optionnel : ouvrir le rapport if command -v code &> /dev/null; then echo -e "${YELLOW}📖 Ouverture du rapport dans VSCode...${NC}" code "$REPORT_FILE" fi echo -e "${GREEN}🎉 Génération du rapport terminée !${NC}"