ESP/UCAD — chef de groupe (3 étudiants, IA & Big Data / SSI / Télécoms) · mai 2025
BoviBot
Gestion d'élevage bovin où la logique métier vit dans la base : procédures stockées, triggers et événements planifiés en PL/SQL.
- Problème
- Un élevage a des règles temporelles — rappels de vaccination, contrôles vétérinaires — qu'une application web ne déclenche que si quelqu'un ouvre la page.
- Résultat
- Quinze objets PL/SQL en base — procédures, fonctions, triggers d'alerte et événements planifiés — avec leur suite de tests unitaires, un chat IA d'assistance et la documentation complète (MCD, MLD, dictionnaire de données, audit d'intégrité).
- Rôle
- Chef de groupe — backend & base de données
Quel problème BoviBot résout-il ?
Un veau doit être vacciné à une date précise. Si le rappel dépend de l'ouverture d'une page web par l'éleveur, le rappel n'existe pas.
Quelle décision technique a été prise ?
Descendre la logique temporelle dans la base. Contre-intuitif à l'ère du « métier dans l'application », mais correct ici : la base est le seul composant qui tourne en permanence et qui détient la vérité.
- Événements planifiés :
evt_alerte_velagespour les vêlages à venir,evt_rapport_croissancepour le rapport périodique. Ils tournent que l'application soit ouverte ou non. - Triggers d'alerte :
trg_alerte_vaccination,trg_alerte_poids_faible,trg_alerte_pesee_manquante. Le troisième est le plus utile — il détecte une absence, ce qu'aucune écriture ne déclenche naturellement. Ettrg_historique_statutconserve la trace de chaque changement d'état. - Procédures stockées :
sp_enregistrer_pesee,sp_declarer_vente,sp_rapport_nutritionnel— des opérations métier composées, exécutées en une transaction. - Fonctions métier :
fn_age_en_mois,fn_gmqpour le gain moyen quotidien,fn_cout_total_elevage. Le calcul vit là où vivent les données, pas recopié dans chaque appelant.
Quinze objets, et leurs tests. tests/unit_tests_plsql.sql vérifie le comportement de la couche base. Une logique métier en base sans tests est une logique métier qu'on n'ose plus modifier.
L'API Flask devient une façade mince : elle expose et met en forme, elle n'arbitre pas.
Un chat IA d'assistance complète le dispositif côté éleveur : il répond sur la base des données du cheptel, pas à la place d'elles. Les prompts sont documentés et versionnés — un comportement de modèle non écrit est un comportement qu'on ne peut pas reproduire.
Quel a été mon rôle sur BoviBot ?
Chef d'un groupe de trois étudiants issus de trois filières (IA & Big Data, Sécurité des SI, Télécoms). Livrables complets : modèle conceptuel et logique de données, dictionnaire de données, audit d'intégrité SQL, guide de déploiement et plateforme conteneurisée.
Qu'est-ce que BoviBot m'a appris ?
« Toute la logique dans l'application » est un bon défaut, pas une loi. Quand la règle métier est temporelle et continue, la placer ailleurs que dans le composant qui tourne en continu, c'est la rendre optionnelle.
Un projet du même calibre ?
Basé à Thiès, disponible à dakar & télétravail. Je réponds sous 48 h.
En discuter