Files
ftb-project-management/apps/web/lib/ai-assignee-recommendation.ts
2026-06-29 16:19:52 +08:00

30 lines
869 B
TypeScript

import type { VersionMember } from './derive';
export interface RecommendedAssigneeDraft {
recommendedAssigneeName?: string;
recommendedAssigneeReason?: string;
}
export interface ResolvedRecommendedAssignee {
name: string;
role: VersionMember['role'];
reason?: string;
}
export function resolveRecommendedAssignee(
draft: object,
members: VersionMember[] | undefined,
): ResolvedRecommendedAssignee | undefined {
const recommendation = draft as RecommendedAssigneeDraft;
if (!recommendation.recommendedAssigneeName) return undefined;
const member = (members ?? []).find((candidate) => candidate.name === recommendation.recommendedAssigneeName);
if (!member) return undefined;
const reason = recommendation.recommendedAssigneeReason?.trim();
return {
name: member.name,
role: member.role,
...(reason ? { reason } : {}),
};
}