Skip to content

Feature/team building service - #23

Merged
dcl10 merged 2 commits into
mainfrom
feature/team-building-service
May 1, 2026
Merged

Feature/team building service#23
dcl10 merged 2 commits into
mainfrom
feature/team-building-service

Conversation

@dcl10

@dcl10 dcl10 commented May 1, 2026

Copy link
Copy Markdown
Contributor

Description

Implements the inbound path of the LLM recommendation flow (PR 3 of issue #8).

  • Adds StaffMatchingService which ranks candidates against LLM-proposed roles by skill coverage. Matching is greedy (best available user per role, in order), case-insensitive, and assigns each user at most once
  • Adds TeamBuildingHostedService (BackgroundService) which consumes SkillRequirementsResult messages from IMessageChannel<SkillRequirementsResult>, calls StaffMatchingService, then persists a Team, TeamMembership records, and a Recommendation audit record in a dedicated scope per message
  • Adds RoleAssignment model record used as the output of the matching algorithm
  • Adds TestMessageChannel<T> — an in-process Channel<T>-backed implementation used in integration tests, with WaitForIdleAsync to safely drain in-flight messages between tests
  • Updates ApiFactory to expose TestMessageChannel<SkillRequirementsResult> so hosted-service tests can enqueue messages and assert DB state

Linked issues

dcl10 and others added 2 commits May 1, 2026 18:04
StaffMatchingService greedily assigns the best-matching candidate to
each LLM-proposed role (ranked by skill coverage, case-insensitive).
TeamBuildingHostedService consumes SkillRequirementsResult messages,
calls the matcher, and persists the Team, TeamMembership, and
Recommendation records in a dedicated scope per message.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
StaffMatchingService tests verify skill ranking, one-assignment-per-user,
pool exhaustion, and case-insensitive skill name matching.
TeamBuildingHostedService tests push a SkillRequirementsResult through the
real in-process TestMessageChannel and assert DB rows for Team, Memberships,
and Recommendation. ApiFactory now exposes TestMessageChannel for
SkillRequirementsResult so hosted-service tests can enqueue messages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dcl10
dcl10 merged commit 0a2acb8 into main May 1, 2026
1 check passed
@dcl10
dcl10 deleted the feature/team-building-service branch May 1, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Recommendation service

1 participant