7 Commits

Author SHA1 Message Date
윤정민
c093480e2b fix: resolve assignee userIds to displayName via Graph fallback
When an assignee on a task isn't in the plan's M365 group member listing
(guests, ex-members, cross-tenant collaborators), we previously leaked the
raw GUID into preview/result cards. Now we fall back to /users/{id} via the
delegated User.ReadBasic.All scope, cache the resolved name on the bot
instance, and show "사용자 {short-guid}…" only if every lookup fails.

Also: allow assigneeUserIds to retain ids that are already on the task even
if not in the current member list, so additive assignments don't strip
existing assignees. Prompt rule added: never put GUIDs into user-facing
text fields.

NOTE: requires User.ReadBasic.All delegated permission on the AAD app
(add + grant admin consent; users must re-login to pick up the new scope).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 15:42:25 +09:00
윤정민
d3271fa1e8 feat: hybrid conversation memory (working memory + last-2 raw turns)
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 32s
Classifier now receives a ConversationContext: a compact LLM-maintained
WorkingMemory (topic/focusPlan/lastTaskTitle/openLoops/notes), the last 2
raw turns, and a pendingDigest derived each turn from the pending action.
The LLM emits an optional memoryUpdate patch alongside its action in the
same tool call (no extra API hop). Volatile fields decay after 10 min idle,
notes truncate at 500 chars, raw turns ring-buffer at 2, openLoops cap at 5.
Logout wipes everything.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 15:30:38 +09:00
윤정민
01616c4526 feat: full Planner field coverage (priority/start/checklist/assignees/labels/bucket move)
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 31s
Confirmation preview enumerates every side-effect (plan-level label creation,
assignee diff, bucket move, checklist truncation) so nothing happens that
wasn't shown on the card. Explicit-but-missing labels trigger a 3-button
choice (register / drop / cancel) since creating them mutates the Plan's
categoryDescriptions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 15:10:33 +09:00
윤정민
59a983133f feat: preview card with Confirm/Cancel buttons before Planner writes
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 30s
2026-05-15 17:44:54 +09:00
윤정민
59c6814ccc feat: exclude 'Deprecated' plans (and their tasks) from LLM context
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 30s
2026-05-15 17:41:41 +09:00
윤정민
e42b3d7c43 fix: route Teams sign-in invokes to OAuth dialog + use UserTokenClient for sign-out
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 30s
2026-05-15 17:33:39 +09:00
윤정민
fd504738eb initial: teams planner bot with gemini classifier and docker deploy
All checks were successful
Build and Deploy Teams Planner Bot / build-and-run (push) Successful in 14s
2026-05-15 16:53:08 +09:00