feat(aihr): add M1 broadcast targeting and mandatory reads

This commit is contained in:
2026-07-23 12:11:41 +08:00
parent cd94f4fe9f
commit f6609808df
14 changed files with 925 additions and 69 deletions
+36 -1
View File
@@ -8,6 +8,23 @@ type ApiResult<T> = {
export type BroadcastStatus = 'PUBLISHED' | 'WITHDRAWN';
export type BroadcastTargetRequest = {
projectCodes: string[];
positionNames: string[];
positionLevels: string[];
};
export type BroadcastTargetOption = {
value: string;
label: string;
};
export type BroadcastTargetOptions = {
projects: BroadcastTargetOption[];
positionNames: BroadcastTargetOption[];
positionLevels: BroadcastTargetOption[];
};
export type BroadcastAdminMessage = {
id: number;
title: string;
@@ -19,6 +36,10 @@ export type BroadcastAdminMessage = {
withdrawnBy?: number;
withdrawnAt?: string;
withdrawReason?: string;
requiredRead: boolean;
targetRuleCount: number;
matchedRecipientCount: number;
unmatchedTargetCount: number;
};
export type BroadcastAdminPage = {
@@ -35,6 +56,8 @@ export type PublishBroadcastRequest = {
title: string;
content: string;
expectedTenantId: string;
requiredRead: boolean;
targets: BroadcastTargetRequest;
};
export type WithdrawBroadcastRequest = {
@@ -54,7 +77,19 @@ export function listBroadcastAdminMessages(params: {
});
}
export function publishBroadcast(data: PublishBroadcastRequest): Promise<ApiResult<{ id: number; version: number }>> {
export function loadBroadcastTargetOptions(): Promise<ApiResult<BroadcastTargetOptions>> {
return request({
url: '/api/aihr/broadcast/admin/target-options',
method: 'get'
});
}
export function publishBroadcast(data: PublishBroadcastRequest): Promise<ApiResult<{
id: number;
version: number;
matchedRecipientCount: number;
unmatchedTargetCount: number;
}>> {
return request({
url: '/api/aihr/broadcast/messages',
method: 'post',