chore(tickets): sync store local — #305 carnet/issue (cadrage UX+Architect, QA verte, livraison) et #314 issue (QA verte); counter/index à jour; tickets 308-313 non liés, agents/test, chat-drafts, system-permissions, attachments/ et scripts/ hors périmètre; aucun push

This commit is contained in:
2026-09-11 10:32:09 +02:00
parent 7007b2cc7e
commit 686cf31620
6 changed files with 233 additions and 8 deletions

View File

@ -1,8 +1,8 @@
--- ---
issueRef: "#305" issueRef: "#305"
version: 4 version: 6
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1789024612856 updatedAt: 1789115266263
--- ---
# Carnet #305 - Tâches planifiées projet avec outil MCP et menu utilisateur # Carnet #305 - Tâches planifiées projet avec outil MCP et menu utilisateur
@ -187,3 +187,47 @@ Fichiers probables:
- #304 est implémenté et QA vert, mais non committé/mergé: trois délégations Git pour le commit/merge #304 ont expiré à 600s malgré relance/rattachement. - #304 est implémenté et QA vert, mais non committé/mergé: trois délégations Git pour le commit/merge #304 ont expiré à 600s malgré relance/rattachement.
- Le worktree courant porte encore les deux fichiers frontend #304 modifiés. Main ne doit pas démarrer #305 ni changer de branche tant que cette topologie n'est pas résolue, pour éviter de mélanger les changements. - Le worktree courant porte encore les deux fichiers frontend #304 modifiés. Main ne doit pas démarrer #305 ni changer de branche tant que cette topologie n'est pas résolue, pour éviter de mélanger les changements.
- Prochaine reprise: débloquer Git ou faire exécuter par l'agent Git le commit/merge #304, puis checkout/rebase/reset de `feature/305-scheduled-project-tasks-mcp` par Git et lancer DevBackend #305. - Prochaine reprise: débloquer Git ou faire exécuter par l'agent Git le commit/merge #304, puis checkout/rebase/reset de `feature/305-scheduled-project-tasks-mcp` par Git et lancer DevBackend #305.
## Validation QA — 2026-09-11
Verdict: VERT pour le périmètre #305 sur `feature/305-scheduled-project-tasks-mcp`.
Diff inspecté: nouvel agrégat durable `ScheduledProjectTask`, store machine-local `<app_data_dir>/scheduled-project-tasks/<projectId>.json`, service application de création/update/enable/delete/run/fire/reconcile, origine `BackgroundTaskOrigin::Scheduled`, tools MCP `idea_scheduled_task_*`, commandes Tauri/HTTP, surface frontend `Tâches planifiées`, adapters Tauri/HTTP/mock et doc `docs/scheduled-project-tasks.md`.
Preuves de commandes réelles:
```text
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p domain -- --nocapture
=> test result: ok. 311 passed; 0 failed; intégrations domain 11+14+2+12+11+49+6+72+16+21+16+5 passed; doc-tests 0.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p application scheduled_task -- --nocapture
=> test result: ok. 3 passed; 0 failed; 185 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p infrastructure scheduled_task -- --nocapture
=> test result: ok. 1 passed; 0 failed; 380 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p infrastructure scheduled_create -- --nocapture
=> test result: ok. 1 passed; 0 failed; 380 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p infrastructure scheduled_read -- --nocapture
=> test result: ok. 1 passed; 0 failed; 380 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p backend scheduled_task -- --nocapture
=> test result: ok. 1 passed; 0 failed; 103 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p web-server scheduled_task -- --nocapture
=> test result: ok. 1 passed; 0 failed; 116 filtered out.
npm --prefix frontend test -- --run src/features/scheduled-tasks/scheduledTasks.test.tsx src/adapters/scheduledTask.test.ts src/adapters/http/scheduledTaskGateway.test.ts src/features/agents/CustomAgentChatView.test.tsx src/adapters/agent.test.ts src/adapters/http/agentGateway.test.ts
=> Test Files 6 passed (6); Tests 107 passed (107).
npm --prefix frontend run typecheck
=> tsc --noEmit passed.
npm --prefix frontend run build
=> tsc --noEmit && vite build passed; Vite emitted only the existing chunk-size warning.
```
Risques résiduels non bloquants:
- Pas de test live AppImage/desktop scheduler réel dans cette passe QA; validation limitée aux tests automatisés Rust/TS et inspection du câblage.
- Les critères UX exhaustifs comme notifications discrètes et parcours complet créer UI -> lire MCP / créer MCP -> lire UI sont couverts par contrat/adapters/tests unitaires ciblés, pas par un e2e navigateur/Tauri complet.

View File

@ -2,7 +2,7 @@
id: "6b6abd28-59c9-4f07-a19c-fb3770ef1415" id: "6b6abd28-59c9-4f07-a19c-fb3770ef1415"
number: 305 number: 305
title: "Tâches planifiées projet avec outil MCP et menu utilisateur" title: "Tâches planifiées projet avec outil MCP et menu utilisateur"
status: "inProgress" status: "qa"
priority: "high" priority: "high"
sprint: null sprint: null
links: [] links: []
@ -11,7 +11,7 @@ attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
createdAt: 1789021772418 createdAt: 1789021772418
updatedAt: 1789024612856 updatedAt: 1789114711757
version: 4 version: 5
--- ---
Demande utilisateur du 2026-09-10 : ajouter à IdeA des tâches planifiées liées au projet, gérables par IdeA plutôt que par le cron Linux. Les agents doivent disposer d'un tool MCP pour créer des tâches récurrentes/projet. L'utilisateur doit avoir un menu par projet pour créer, supprimer et modifier ces tasks. Motivation : éviter qu'un orchestrateur crée un cron système Linux pour nettoyer régulièrement un dossier projet qui grossit build après build. Une fois livré et validé, rebuild l'AppImage. Demande utilisateur du 2026-09-10 : ajouter à IdeA des tâches planifiées liées au projet, gérables par IdeA plutôt que par le cron Linux. Les agents doivent disposer d'un tool MCP pour créer des tâches récurrentes/projet. L'utilisateur doit avoir un menu par projet pour créer, supprimer et modifier ces tasks. Motivation : éviter qu'un orchestrateur crée un cron système Linux pour nettoyer régulièrement un dossier projet qui grossit build après build. Une fois livré et validé, rebuild l'AppImage.

View File

@ -0,0 +1,54 @@
---
issueRef: "#314"
version: 5
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1789115266263
---
# Carnet #314 - Conversation liée après reboot affiche transcript indisponible
## Signalement
- Date: 2026-09-11.
- Contexte: utilisateur vient d'allumer le PC et d'ouvrir IdeA.
- Symptôme visible dans la fenêtre Main: `Conversation liée — transcript indisponible.`
- Capture importée par IdeA: `/home/anthony/Documents/Projects/IdeA/.ideai/attachments/agent-chat/f9088cc7-5c7d-425d-86a4-178b1857ebdb/cfd2c4b3-37a0-4288-abe9-7f31b32d38fc-clipboard-image-1789108822637.png`.
## Première lecture Main
- Le message correspond au garde-fou livré dans #307: au lieu d'un spinner infini quand une conversation liée ne rend aucun tour après `openOrAttach`, le frontend affiche un état terminal `transcript indisponible`.
- Reste à qualifier si, après reboot, c'est un état attendu mais mal actionnable ou une régression de restauration/lecture du transcript.
- À traiter séparément de #305 pour éviter de mélanger la feature tâches planifiées avec ce bug de restauration conversationnelle.
## Validation QA — 2026-09-11
Verdict: VERT pour #314 sur `feature/305-scheduled-project-tasks-mcp`.
Diff inspecté: `ReattachChatDto` expose `transcriptUnavailableReason` (`missingTranscript` vs `emptyConversation`), Tauri et WebSocket remplissent la raison depuis `StructuredSessions::transcript_restore_expected`, le frontend `CustomAgentChatView` affiche un état terminal actionnable avec `Réessayer` et `Délier la conversation`, et le cas `NOT_FOUND` devient actionnable sans boucle automatique.
Preuves de commandes réelles:
```text
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p app-tauri --test dto_chat -- --nocapture
=> test result: ok. 26 passed; 0 failed.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p web-server chat_attached -- --nocapture
=> test result: ok. 2 passed; 0 failed; 115 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p web-server websocket_chat_attach_recovers_stale_session_from_live_project_agent -- --nocapture
=> test result: ok. 1 passed; 0 failed; 116 filtered out.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p application --test structured_registry_d1 -- --nocapture
=> test result: ok. 14 passed; 0 failed.
CARGO_HOME=/home/anthony/.local/share/app.idea.ide/managed-tmp/1d97033d-7b81-4f12-9b27-fe5a3842c5cc/data/cargo-home cargo test -p application --test agent_lifecycle -- --nocapture
=> test result: ok. 111 passed; 0 failed.
npm --prefix frontend test -- --run src/features/scheduled-tasks/scheduledTasks.test.tsx src/adapters/scheduledTask.test.ts src/adapters/http/scheduledTaskGateway.test.ts src/features/agents/CustomAgentChatView.test.tsx src/adapters/agent.test.ts src/adapters/http/agentGateway.test.ts
=> Test Files 6 passed (6); Tests 107 passed (107).
npm --prefix frontend run typecheck
=> tsc --noEmit passed.
npm --prefix frontend run build
=> tsc --noEmit && vite build passed; Vite emitted only the existing chunk-size warning.
```
Risque résiduel non bloquant: pas de repro manuelle après reboot réel dans l'AppImage; la validation prouve le contrat backend/DTO/frontend automatisé et le scénario WebSocket de session stale récupérée avec `missingTranscript`.

View File

@ -0,0 +1,17 @@
---
id: "dc01987e-3002-447f-821b-4fc2cb71a28c"
number: 314
title: "Conversation liée après reboot affiche transcript indisponible"
status: "qa"
priority: "high"
sprint: null
links: [{"target":"#305","kind":"relatesTo"}]
agentRefs: []
attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
createdAt: 1789108874927
updatedAt: 1789114712037
version: 4
---
Signalement utilisateur du 2026-09-11 au démarrage d'IdeA après allumage du PC : la fenêtre Main affiche « Conversation liée — transcript indisponible. » au centre de la cellule. Capture jointe côté conversation utilisateur. À investiguer : distinguer garde-fou attendu de #307 vs régression de restauration/lecture du transcript après reboot, et faire en sorte que l'utilisateur récupère soit le transcript, soit un état/action utile.

View File

@ -1,3 +1,3 @@
{ {
"nextNumber": 308 "nextNumber": 315
} }

View File

@ -4184,7 +4184,7 @@
"issueRef": "#305", "issueRef": "#305",
"path": "305", "path": "305",
"title": "Tâches planifiées projet avec outil MCP et menu utilisateur", "title": "Tâches planifiées projet avec outil MCP et menu utilisateur",
"status": "inProgress", "status": "qa",
"priority": "high", "priority": "high",
"sprint": null, "sprint": null,
"assignedAgentIds": [], "assignedAgentIds": [],
@ -4192,7 +4192,7 @@
"kind": "agent", "kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
}, },
"updatedAt": 1789024612856 "updatedAt": 1789114711757
}, },
{ {
"issueRef": "#306", "issueRef": "#306",
@ -4221,6 +4221,116 @@
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
}, },
"updatedAt": 1789034059104 "updatedAt": 1789034059104
},
{
"issueRef": "#308",
"path": "308",
"title": "Permettre la suppression d'un projet IdeA depuis l'application",
"status": "closed",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789057719878
},
{
"issueRef": "#309",
"path": "309",
"title": "Corriger les writable roots Codex sur projets non-IdeA",
"status": "closed",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789060217658
},
{
"issueRef": "#310",
"path": "310",
"title": "Horodater tous les messages et événements de conversation visibles",
"status": "closed",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"fe887179-933f-47d4-960f-c3b06827f86c",
"8f7da528-58df-4315-97e9-0562230ecc19"
],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789068406431
},
{
"issueRef": "#311",
"path": "311",
"title": "Rendre le stop d'agent robuste pour PTY non monté, headless et CLI custom",
"status": "closed",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [
"fe887179-933f-47d4-960f-c3b06827f86c",
"8f7da528-58df-4315-97e9-0562230ecc19"
],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789068406452
},
{
"issueRef": "#312",
"path": "312",
"title": "Ajouter une préférence globale pour l'interface terminal par défaut",
"status": "closed",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"fe887179-933f-47d4-960f-c3b06827f86c",
"8f7da528-58df-4315-97e9-0562230ecc19"
],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789068406473
},
{
"issueRef": "#313",
"path": "313",
"title": "Ajouter Paramètres du projet avec contexte et couleur de thème par projet",
"status": "closed",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"fe887179-933f-47d4-960f-c3b06827f86c",
"8f7da528-58df-4315-97e9-0562230ecc19"
],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789068406493
},
{
"issueRef": "#314",
"path": "314",
"title": "Conversation liée après reboot affiche transcript indisponible",
"status": "qa",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1789114712037
} }
] ]
} }