Export feuille de temps GITEA #1

Open
opened 2025-09-08 12:24:28 +00:00 by gitea_admin · 2 comments

Contexte

Dans le cadre de l’intégration Gitea - FastAPI - Odoo, nous avons ajouté une action Gitea dédiée à l’agrégation hebdomadaire des temps tracés sur les issues Gitea, puis à leur envoi vers Odoo sous forme de feuilles de temps via l’API FastAPI.

Objectifs

  • Récupérer tous les Tracked Times du dépôt courant sur la période hebdomadaire de lundi 00:00 à samedi 23:59:59 (implémentation : fenêtre lundi 00:00 UTC+3 jusqu'au dimanche 00:00 UTC+3).
  • Utiliser la fonction du SDK Gitea Client.ListIssueTrackedTimes avec pagination désactivée (Page = -1) et taille maximale.
  • Construire un tableau JSON de timesheets attendu par le middleware FastAPI et l’envoyer en POST sur l’endpoint requis.

Réalisations principales

  • Nouveau module/action Docker: weekly-odoo-timesheets.
  • Fichiers ajoutés: weekly-odoo-timesheets/main.go, weekly-odoo-timesheets/action.yml, weekly-odoo-timesheets/Dockerfile, weekly-odoo-timesheets/go.mod.
  • Workflow d’exemple ajouté: use-gitea-odoo-actions/.gitea/workflows/weekly-timesheets.yaml (planification samedi 07:00 UTC et exécution manuelle possible).

Logique fonctionnelle

  • Récupération de toutes les issues du dépôt (state = all) pour couvrir un maximum de cas.
  • Pour chaque issue: appel SDK Gitea ListIssueTrackedTimes avec Since = lundi UTC, Before = dimanche UTC, Page = -1, PageSize = 1000.
  • Conversion du temps en heures: heure = secondes / 3600.
  • Détermination du task_id Odoo: extraction de ticket- depuis issue.ref (ex: feature/ticket-123), sinon repli sur le numéro de l’issue.
  • Pour chaque Tracked Time, création d’un item: date (YYYY-MM-DD), task_id, gitea_username, description ("/"), hour_spent.

Appel FastAPI

  • Endpoint: POST /api/v1/account_analytic_gitea_odoo.
  • Corps: tableau JSON d’objets timesheet (un par Tracked Time dans la fenêtre hebdomadaire).
  • Journalisation: action.log et sortie standard. Échec si statut HTTP non 2xx.

Fenêtre temporelle (semaine Lundi–Samedi)

  • Calcul: Lundi 00:00 UTC → Dimanche 00:00 UTC (couvre Lundi–Samedi inclus).
  • La date des entrées correspond au champ Created du Tracked Time formaté en AAAA-MM-JJ.

Configuration et sécurité

  • Variables d’environnement: BASE_URL (FastAPI), REPO_OWNER, REPO_NAME, GITEA_TOKEN (secret), GITEA_API_BASE_URL (optionnel, défaut: https://gitea.ethumada.com).
  • Le workflow d’exemple utilise un secret FASTAPI_BASE_URL et GITEA_TOKEN.

Détails techniques clés

  • SDK Gitea: code.gitea.io/sdk/gitea ; fonction utilisée: Client.ListIssueTrackedTimes.
  • Options passées: ListOptions(Page = -1, PageSize = 1000), Since (lundi UTC+3), Before (dimanche UTC+3).
  • Champs TrackedTime utilisés: Time (secondes), Created (date), UserName (utilisateur).

Fichiers ajoutés

  • weekly-odoo-timesheets/main.go: collecte et envoi des données.
  • weekly-odoo-timesheets/action.yml: définition de l’action Docker et mappage des variables.
  • weekly-odoo-timesheets/Dockerfile: build statique (alpine, CGO_ENABLED=0) et image runtime minimale.
  • weekly-odoo-timesheets/go.mod: module Go du nouvel action, dépendance vers le SDK Gitea.
  • use-gitea-odoo-actions/.gitea/workflows/weekly-timesheets.yaml: workflow planifié exemple.

Utilisation

  • Planifier l’action chaque samedi matin (UTC) et permettre un déclenchement manuel.
  • Passer base_url (FASTAPI) en input et GITEA_TOKEN en secret.

Points d’attention

  • La désactivation de la pagination (Page = -1) dépend de la configuration du serveur (MAX_RESPONSE_ITEMS).
  • L’extraction ticket- requiert la présence de ce motif dans issue.ref ; sinon repli sur le numéro de l’issue.
  • L’endpoint FastAPI doit gérer la création des timesheets côté Odoo.

Allocated Time: 12.0 hours

<h2 data-last-history-steps="4036363463089164">Contexte</h2><p>Dans le cadre de l’intégration Gitea&nbsp;-&nbsp;FastAPI&nbsp;-&nbsp;Odoo,&nbsp;nous avons ajouté une action Gitea dédiée à l’agrégation hebdomadaire des temps tracés sur les issues Gitea,&nbsp;puis à leur envoi vers Odoo sous forme de feuilles de temps via l’API FastAPI.</p><h2>Objectifs</h2><ul><li>Récupérer tous les Tracked Times du dépôt courant sur la période hebdomadaire de lundi 00:00 à samedi 23:59:59 (implémentation&nbsp;: fenêtre lundi 00:00 UTC+3 jusqu'au&nbsp;dimanche 00:00 UTC+3).</li><li>Utiliser la fonction du SDK Gitea Client.ListIssueTrackedTimes avec pagination désactivée (Page = -1) et taille maximale.</li><li>Construire un tableau JSON de timesheets attendu par le middleware FastAPI et l’envoyer en POST sur l’endpoint requis.</li></ul><h2>Réalisations principales</h2><ul><li>Nouveau module/action Docker: weekly-odoo-timesheets.</li><li>Fichiers ajoutés: weekly-odoo-timesheets/main.go, weekly-odoo-timesheets/action.yml, weekly-odoo-timesheets/Dockerfile, weekly-odoo-timesheets/go.mod.</li><li>Workflow d’exemple ajouté: use-gitea-odoo-actions/.gitea/workflows/weekly-timesheets.yaml (planification samedi 07:00 UTC et exécution manuelle possible).</li></ul><h2>Logique fonctionnelle</h2><ul><li>Récupération de toutes les issues du dépôt (state = all) pour couvrir un maximum de cas.</li><li>Pour chaque issue: appel SDK Gitea ListIssueTrackedTimes avec Since = lundi UTC, Before = dimanche UTC, Page = -1, PageSize = 1000.</li><li>Conversion du temps en heures: heure = secondes / 3600.</li><li>Détermination du task_id Odoo: extraction de ticket-&nbsp;depuis issue.ref (ex: feature/ticket-123), sinon repli sur le numéro de l’issue.</li><li>Pour chaque Tracked Time, création d’un item: date (YYYY-MM-DD), task_id, gitea_username, description ("/"), hour_spent.</li></ul><h2>Appel FastAPI</h2><ul><li>Endpoint: POST /api/v1/account_analytic_gitea_odoo.</li><li>Corps: tableau JSON d’objets timesheet (un par Tracked Time dans la fenêtre hebdomadaire).</li><li>Journalisation: action.log et sortie standard. Échec si statut HTTP non 2xx.</li></ul><h2>Fenêtre temporelle (semaine Lundi–Samedi)</h2><ul><li>Calcul: Lundi 00:00 UTC → Dimanche 00:00 UTC (couvre Lundi–Samedi inclus).</li><li>La date des entrées correspond au champ Created du Tracked Time formaté en AAAA-MM-JJ.</li></ul><h2>Configuration et sécurité</h2><ul><li>Variables d’environnement: BASE_URL (FastAPI), REPO_OWNER, REPO_NAME, GITEA_TOKEN (secret), GITEA_API_BASE_URL (optionnel, défaut:&nbsp;<a href="https://gitea.ethumada.com/">https://gitea.ethumada.com</a>).</li><li>Le workflow d’exemple utilise un secret FASTAPI_BASE_URL et GITEA_TOKEN.</li></ul><h2>Détails techniques clés</h2><ul><li>SDK Gitea: code.gitea.io/sdk/gitea ; fonction utilisée: Client.ListIssueTrackedTimes.</li><li>Options passées: ListOptions(Page = -1, PageSize = 1000), Since (lundi UTC+3), Before (dimanche UTC+3).</li><li>Champs TrackedTime utilisés: Time (secondes), Created (date), UserName (utilisateur).</li></ul><h2>Fichiers ajoutés</h2><ul><li>weekly-odoo-timesheets/main.go: collecte et envoi des données.</li><li>weekly-odoo-timesheets/action.yml: définition de l’action Docker et mappage des variables.</li><li>weekly-odoo-timesheets/Dockerfile: build statique (alpine, CGO_ENABLED=0) et image runtime minimale.</li><li>weekly-odoo-timesheets/go.mod: module Go du nouvel action, dépendance vers le SDK Gitea.</li><li>use-gitea-odoo-actions/.gitea/workflows/weekly-timesheets.yaml: workflow planifié exemple.</li></ul><h2>Utilisation</h2><ul><li>Planifier l’action chaque samedi matin (UTC) et permettre un déclenchement manuel.</li><li>Passer base_url (FASTAPI) en input et GITEA_TOKEN en secret.</li></ul><h2>Points d’attention</h2><ul><li>La désactivation de la pagination (Page = -1) dépend de la configuration du serveur (MAX_RESPONSE_ITEMS).</li><li>L’extraction ticket-&nbsp;requiert la présence de ce motif dans issue.ref ; sinon repli sur le numéro de l’issue.</li><li>L’endpoint FastAPI doit gérer la création des timesheets côté Odoo.</li></ul> **Allocated Time**: 12.0 hours
gitea_admin added the
enhancement
label 2025-09-08 12:24:29 +00:00
mandresy was assigned by gitea_admin 2025-09-08 12:24:31 +00:00
Author

Allocated time updated to 12.0 hours (synced from Odoo task 1502).

Allocated time updated to 12.0 hours (synced from Odoo task 1502).
gitea_admin added the due date 2025-09-15 2025-09-08 12:45:31 +00:00
Author

Allocated time updated to 12.0 hours (synced from Odoo task 1502).

Allocated time updated to 12.0 hours (synced from Odoo task 1502).
Sign in to join this conversation.
No description provided.