{"id":23288040,"url":"https://github.com/bresnico/macro-dashboard","last_synced_at":"2025-04-06T16:25:45.721Z","repository":{"id":268533848,"uuid":"904585337","full_name":"bresnico/macro-dashboard","owner":"bresnico","description":"Tableau de bord R Shiny pour le monitorage du développement professionnel en établissement scolaire, intégrant une récolte de données via LimeSurvey et des visualisations dynamiques par profil utilisateur (enseignant, direction, chercheur).","archived":false,"fork":false,"pushed_at":"2025-02-03T10:36:06.000Z","size":1589,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-12T22:24:08.935Z","etag":null,"topics":["dashboard","data-driven-decision-making","data-visualisation","education","limesurvey","professional-development","r","shiny","statistics"],"latest_commit_sha":null,"homepage":"https://www.competences-emotionnelles.ch","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bresnico.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-17T07:13:42.000Z","updated_at":"2025-02-01T19:13:38.000Z","dependencies_parsed_at":"2025-01-24T11:36:28.965Z","dependency_job_id":null,"html_url":"https://github.com/bresnico/macro-dashboard","commit_stats":{"total_commits":21,"total_committers":1,"mean_commits":21.0,"dds":0.0,"last_synced_commit":"fb3cfd1f177d39b1507e4f913100c049d05c6fdc"},"previous_names":["bresnico/macro-dashboard"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bresnico%2Fmacro-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bresnico%2Fmacro-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bresnico%2Fmacro-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bresnico%2Fmacro-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bresnico","download_url":"https://codeload.github.com/bresnico/macro-dashboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247511148,"owners_count":20950612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","data-driven-decision-making","data-visualisation","education","limesurvey","professional-development","r","shiny","statistics"],"created_at":"2024-12-20T03:13:37.750Z","updated_at":"2025-04-06T16:25:45.695Z","avatar_url":"https://github.com/bresnico.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plateforme de Suivi du Développement Professionnel\n\n## Vue d'ensemble\n\nCette plateforme est un outil de monitorage en temps réel du développement professionnel des enseignant·es, basé sur des échelles d'évaluation scientifiquement validées. Le système utilise Quarto pour créer un rapport de résultats pour l'enseignant·e et un rapport de résultats pour la direction permettant différentes analyses selon les besoins.\n\n### Objectifs principaux\n- Générer des rapports détaillés sur le développement professionnel\n- Informer pour soutenir la prise de décision\n\n### Architecture technique\n\nLe système s'articule autour de trois composants :\n1. Une API LimeSurvey pour la collecte des données\n2. Un pipeline R pour le traitement et l'analyse\n3. Un système de reporting Quarto pour communiquer les résultats\n\nL'architecture est basée sur des fichiers de configuration YAML qui définissent :\n- Les credentials d'accès (credentials.yml)\n- La structure des échelles d'évaluation (scales.yml)\n\n## Prérequis\n\n### Logiciels\n- R (\u003e= 4.2.0)\n- RStudio (\u003e= 2023.12.0)\n- Quarto (\u003e= 1.4.0)\n- Instance LimeSurvey active\n\n### Packages R requis\n```r\ninstall.packages(c(\n  \"tidyverse\",  # Traitement des données\n  \"yaml\",       # Lecture des configurations\n  \"limer\",      # API LimeSurvey\n  \"glue\",       # Traitement des données\n  \"httr\",       # Requêtes HTTP (notifications Telegram)\n  [packages supplémentaires à ajouter]\n))\n```\n\n## Structure du projet\n\n```\n.\n├── archive/                    # Version précédente du dashboard\n├── tools/                      # Scripts utilitaires\n├── outputs/                    # Fichiers générés\n├── src/\n│   ├── config/          \n│   │   ├── credentials.yml    # Configuration API (non versionné)\n│   │   └── scales.yml         # Définition des échelles\n│   └── lib/            \n├── data/\n│   └── processed/             # Données traitées (format CSV)\n├── logs/                      # Logs système\n├── reporting.qmd              # Fichier Quarto principal\n└── README.md\n```\n\n## Échelles d'évaluation\n\n- 23 échelles validée scientifiquement\n- 65 scores générés\n\n## Configuration\n\n### Credentials\n\n1. Copier le template :\n```bash\ncp src/config/credentials.yml.template src/config/credentials.yml\n```\n\n2. Remplir avec vos accès :\n```yaml\nlimesurvey:\n  api_url: 'URL_API_LIMESURVEY'\n  username: 'USERNAME'\n  password: 'PASSWORD'\n  survey_id: 'SURVEY_ID'\n\ntelegram:\n  bot_token: 'BOT_TOKEN'\n  chat_id: 'CHAT_ID'\n\nresearcher_codes:\n  - 'CODE1'\n  - 'CODE2'\n```\n## Pipeline de traitement\n\n### Flux principal\n\n```mermaid\nflowchart TD\n    A[LimeSurvey API] --\u003e|connection.R| B[Import brut]\n    B --\u003e|import.R| C[Standardisation]\n    C --\u003e|scales.R| D[Calcul des scores]\n    C --\u003e|demographics.R| E[Traitement démographique] \n    D --\u003e F[Jointure des données]\n    E --\u003e F\n    F --\u003e|main.R| G[Export CSV]\n    G --\u003e H[Dashboard Quarto]\n    G --\u003e|Telegram| I[Notification]\n    H --\u003e|render_notify.R| J[Notification]\n```\n\n### Notifications Telegram\n\nLe système intègre des notifications Telegram à deux niveaux :\n\n1. **Pipeline de données (main.R)**\n   - Notification du statut d'exécution\n   - Nombre d'observations traitées\n   - Temps d'exécution\n   - Messages d'erreur éventuels\n\n2. **Rendu du dashboard (render_notify.R)**\n   - Notification du succès/échec du rendu Quarto\n   - Redémarrage automatique du serveur Shiny sur Linux\n\n#### Configuration Telegram\n1. Créer un bot via @BotFather sur Telegram\n2. Récupérer le token du bot\n3. Créer un canal et y ajouter le bot\n4. Configurer le chat_id dans credentials.yml\n\n### Détails du process\n\n```mermaid\nflowchart TD\n    subgraph \"connection.R\"\n        A[setup_limesurvey_connection]\n    end\n    subgraph \"import.R\"\n        B[get_limesurvey_data]\n        C[standardize_limesurvey_names]\n    end\n    subgraph \"scales.R\"\n        D[prepare_numeric_responses]\n        E[process_single_scale]\n        F[prepare_all_scales_scores]\n    end\n    subgraph \"demographics.R\" \n        J[process_demographics]\n    end\n    subgraph \"main.R\"\n        H[main function]\n        I[log_info]\n        K[join_data]\n    end\n    \n    %% Workflow principal\n    H --\u003e|\"1. Start\"| I\n    I --\u003e|\"Log start\"| A\n    A --\u003e|\"Success\"| B\n    B --\u003e|\"Raw data\"| C\n    C --\u003e|\"Standardized data\"| F\n    C --\u003e|\"Standardized data\"| J\n    \n    %% Sous-processus scales\n    F --\u003e|\"For each scale\"| D\n    D --\u003e|\"Numeric data\"| E\n    E --\u003e|\"Scale scores\"| F\n    \n    %% Jointure et finalisation\n    F --\u003e|\"Scale scores\"| K\n    J --\u003e|\"Demographics\"| K\n    K --\u003e|\"Final data\"| H\n    H --\u003e|\"Log \u0026 Save\"| I\n    \n    %% Styling\n    classDef processNode fill:#f9f,stroke:#333,stroke-width:2px\n    classDef dataNode fill:#bbf,stroke:#333,stroke-width:2px\n    classDef logNode fill:#bfb,stroke:#333,stroke-width:2px\n    classDef demoNode fill:#ffd,stroke:#333,stroke-width:2px\n    \n    class A,B,C,D,E,F processNode\n    class H dataNode\n    class I logNode\n    class J,K demoNode\n```\n\n#### Mise à jour des données\n\nLes données sont mises à jour automatiquement 3 fois par jour via cronjob sur le serveur qui accueille l'application. L'heure de dernière mise à jour est affichée dans l'interface du dashboard. Chaque mise à jour déclenche :\n\n1. Exécution de main.R\n   - Collection et traitement des données\n   - Export des fichiers CSV\n   - Notification Telegram du statut\n\n2. Exécution de render_notify.R\n   - Rendu du dashboard Quarto\n   - Redémarrage du serveur Shiny si nécessaire\n   - Notification Telegram du statut\n\nLe statut de ces opérations peut être suivi via :\n- Les logs dans /logs/process.log\n- Les notifications Telegram\n- L'interface du dashboard\n\n## Génération de rapports\n\n[à venir]\n\n## Support\n\nPour toute question technique :\n1. Consulter les logs dans /logs/process.log\n2. Vérifier la configuration dans /src/config\n3. Contacter l'équipe chic et choc de développement\n\n## Licence\n\nCe projet est sous licence Creative Commons Attribution 4.0 International (CC BY 4.0).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbresnico%2Fmacro-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbresnico%2Fmacro-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbresnico%2Fmacro-dashboard/lists"}