Project

General

Profile

Actions

Feature #49

closed
RA

Feature #26: Implémenter la classification automatique et l'estimation de complexité des tickets par l'assistant AI

Backend — enrichir le draft de ticket avec classification & estimation de complexité

Feature #49: Backend — enrichir le draft de ticket avec classification & estimation de complexité

Added by Redmine Admin about 2 months ago. Updated about 2 months ago.

Status:
Shipped
Priority:
Normal
Assignee:
-
Start date:
06/11/2026
Due date:
% Done:

0%

Estimated time:
spec_ref:

conversation:21#26

build_status:
build_number:
ci_run_url:
scan_status:
scan_report_url:
deploy_status:
preprod_url:
deployed_at:
branch:
feat/49-draft-classification-complexity
pr_url:
https://github.com/omdev-tech/PipeLiner-Client/pull/24
security_key:
severity:
paused:

Description

**Parent :** #26 · **Taille :** L · **Dépendances :** aucune · **Surface :** backend (`api/`, hexagonal FastAPI)

## Objectif
Enrichir le draft de ticket produit par l'assistant Mistral (`MistralTicketSpecWriter`, `draft_ticket`, `create_ticket_from_draft`) avec :
- une **classification** par défaut : `bug` | `évolution`
- une **estimation de complexité** : note `/10` + explication courte

Propager ces champs dans le domaine + DTO du draft ; à la création (`create_ticket_from_draft`), persister sur Redmine, ajouter le label **`bf-disagree`** si le client a modifié la classification proposée, et persister une **argumentation** optionnelle (commentaire/champ, peut être vide). Multi-tenant + langue du client (FR/EN). Non-bloquant.

## Acceptance criteria
- [ ] `draft_ticket` renvoie `classification` (bug|évolution) + `complexity` (note/10 + explication) par défaut.
- [ ] L'explication de complexité est rendue dans la langue du client (FR/EN).
- [ ] `create_ticket_from_draft` persiste classification + note + explication sur le ticket Redmine.
- [ ] Si la classification finale ≠ proposition de l'assistant → label `bf-disagree` ajouté automatiquement.
- [ ] Argumentation optionnelle persistée (peut être vide → pas d'erreur, non-bloquant).
- [ ] Isolation multi-tenant (un client ne voit/écrit que ses tickets).
- [ ] Gate vert : `python -m pytest -q` (×2 sur une DB), `ruff check .`, `mypy src`. TDD.


Files

qa49-proof.txt (5.14 KB) qa49-proof.txt Redmine Admin, 06/11/2026 07:11 PM
Actions

Also available in: PDF Atom