docs(13-01): complete user directory model and service extension plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
---
|
||||
phase: 13-user-directory-viewmodel
|
||||
plan: 01
|
||||
subsystem: api
|
||||
tags: [microsoft-graph, user-directory, wpf, csharp]
|
||||
|
||||
requires:
|
||||
- phase: 10-branding-data-foundation
|
||||
provides: GraphDirectoryUser model, GraphUserDirectoryService, IGraphUserDirectoryService
|
||||
provides:
|
||||
- GraphDirectoryUser with UserType property for client-side member/guest filtering
|
||||
- IGraphUserDirectoryService.GetUsersAsync with includeGuests parameter
|
||||
- Graph filter branching (members-only vs all users)
|
||||
affects: [13-02-PLAN, user-directory-viewmodel]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [default-parameter backward compat, Graph filter branching]
|
||||
|
||||
key-files:
|
||||
created: []
|
||||
modified:
|
||||
- SharepointToolbox/Core/Models/GraphDirectoryUser.cs
|
||||
- SharepointToolbox/Services/IGraphUserDirectoryService.cs
|
||||
- SharepointToolbox/Services/GraphUserDirectoryService.cs
|
||||
- SharepointToolbox.Tests/Services/GraphUserDirectoryServiceTests.cs
|
||||
|
||||
key-decisions:
|
||||
- "UserType added as last positional parameter to preserve backward compat for existing callers"
|
||||
- "includeGuests defaults to false so all existing call sites compile unchanged"
|
||||
- "userType always in Graph Select array regardless of includeGuests value"
|
||||
|
||||
patterns-established:
|
||||
- "Default parameter backward compat: new optional params added with defaults matching prior behavior"
|
||||
|
||||
requirements-completed: [UDIR-03]
|
||||
|
||||
duration: 2min
|
||||
completed: 2026-04-08
|
||||
---
|
||||
|
||||
# Phase 13 Plan 01: User Directory Model & Service Extension Summary
|
||||
|
||||
**Extended GraphDirectoryUser with UserType property and added includeGuests filter parameter to GraphUserDirectoryService for client-side member/guest filtering**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 2 min
|
||||
- **Started:** 2026-04-08T14:00:08Z
|
||||
- **Completed:** 2026-04-08T14:01:51Z
|
||||
- **Tasks:** 3
|
||||
- **Files modified:** 4
|
||||
|
||||
## Accomplishments
|
||||
- Added string? UserType as last positional parameter to GraphDirectoryUser record
|
||||
- Added bool includeGuests = false parameter to IGraphUserDirectoryService.GetUsersAsync with Graph filter branching
|
||||
- Updated MapUser to populate UserType from Graph User object with userType always in Select array
|
||||
- Added 2 new tests (MapUser_PopulatesUserType, MapUser_NullUserType) and updated 2 existing tests with UserType assertions
|
||||
|
||||
## Task Commits
|
||||
|
||||
All three tasks committed atomically (single plan scope):
|
||||
|
||||
1. **Tasks 1-3: Model + Service + Tests** - `9a98371` (feat)
|
||||
|
||||
**Plan metadata:** [pending]
|
||||
|
||||
## Files Created/Modified
|
||||
- `SharepointToolbox/Core/Models/GraphDirectoryUser.cs` - Added UserType as 6th positional parameter
|
||||
- `SharepointToolbox/Services/IGraphUserDirectoryService.cs` - Added includeGuests parameter with XML docs
|
||||
- `SharepointToolbox/Services/GraphUserDirectoryService.cs` - Filter branching, userType in Select, MapUser UserType mapping
|
||||
- `SharepointToolbox.Tests/Services/GraphUserDirectoryServiceTests.cs` - Updated 2 existing tests, added 2 new UserType tests
|
||||
|
||||
## Decisions Made
|
||||
- UserType added as last positional parameter (string?) so existing construction sites only need one additional argument
|
||||
- includeGuests defaults to false preserving all existing call sites unchanged (backward compatible)
|
||||
- userType always included in Graph Select array regardless of includeGuests flag, so MapUser always has data
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
None.
|
||||
|
||||
## User Setup Required
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
- GraphDirectoryUser now carries UserType for Phase 13-02 in-memory member/guest filtering
|
||||
- IGraphUserDirectoryService.GetUsersAsync ready for ViewModel to call with includeGuests=true
|
||||
- All 7 unit tests pass, 4 integration tests skipped (expected - require live tenant)
|
||||
|
||||
---
|
||||
*Phase: 13-user-directory-viewmodel*
|
||||
*Completed: 2026-04-08*
|
||||
Reference in New Issue
Block a user