metallkart-erp/RAPPORT-2C.md
louis b1e196a5c2 feat(copilot): 2C actions sur autrui — mode libre D9
3 new for-user tools (task/reminder/decision) + find_user_by_name
lookup. Mode libre: any user can assign to any user, no hierarchy.
Traçabilité via createdById != assigneeId. For-user actions always
require confirmation (no directExecution bypass). 63/63 Vitest.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-01 17:27:01 +04:00

2.4 KiB

RAPPORT-2C — Actions sur autrui (mode libre D9)

Date : 01/06/2026 Session : 148


1. Tools ajoutés

Tool Cible Confirmation
find_user_by_name Résolution nom→userId (read) Non
create_task_for_user Tâche pour un autre user Toujours
create_reminder_for_user Rappel pour un autre user Toujours
create_decision_for_user Décision pour un autre user Toujours

Résolution du destinataire : Август utilise find_user_by_name avant d'appeler un tool for-user. Recherche ILIKE sur name et nameRu. Ambiguïté (>1 résultat) → demande de précision. 0 résultat → erreur.

2. Traçabilité

Déjà native dans le schéma Prisma :

  • Task : createdById (qui a créé) ≠ assigneeId (à qui c'est assigné)
  • Reminder : createdByIdtargetUserId
  • Decision : createdByIddeciderId

Le destinataire voit dans son /tasks qui lui a assigné l'item (via createdBy). Pas de nouveau champ Prisma nécessaire.

3. Confirmation D7

Les tools *_for_user ne bénéficient jamais du bypass directExecution. Vérifié dans agent-chat.service.ts L190 :

const isForUserAction = tc.name.endsWith('_for_user');
const directExec = !isCancelAction && !isForUserAction && await this.hasDirectExecution(userId);

4. T4 — Acceptation/renvoi

Repoussé. La traçabilité (createdById visible) permet au destinataire de contacter l'assignateur si besoin. L'acceptation formelle sera un sous-bloc séparé si le besoin se confirme.

5. Tests

63/63 Vitest green (6 nouveaux + 57 existants) :

Test Description
T-2C-01 find_user_by_name résout par nameRu
T-2C-02 user introuvable → erreur
T-2C-03 create_task_for_user → assigneeId=target, createdById=caller
T-2C-04 user inactif → rejeté
T-2C-05 create_reminder_for_user → targetUserId=target, createdById=caller
T-2C-06 tous les for-user tools ont requiresConfirmation=true

6. Validation visuelle

  1. « Найди сотрудника Дарью » → Август liste les résultats avec ID
  2. « Создай задачу для Дарьи: перезвонить поставщику в четверг » → card confirmation avec nom de Дарья → confirmer
  3. Se connecter en Дарья → /tasks → la tâche est là avec « Автор: Луи-Андре Грюар »