// 通知模块 API 客户端(渠道/规则/日志/测试)。 // 接口规范:全部 POST;URL 不含参数;入参一律 body。 import { requestClient } from '#/api/request'; // ---------- 渠道 ---------- export interface NoticeChannelItem { id: number; code: string; name: string; enabled: number; config: string; remark: string; } export function getNoticeChannelList() { return requestClient.post<{ list: NoticeChannelItem[] }>( '/api/service/admin/notice/channel/list', ); } export function saveNoticeChannel(data: { code: string; config?: string; enabled?: number; id?: number; name: string; remark?: string; }) { return requestClient.post<{ id: number }>( '/api/service/admin/notice/channel/save', data, ); } // ---------- 规则 ---------- export interface NoticeRuleItem { id: number; name: string; eventType: string; channelCodes: string[]; userIds: number[]; titleTemplate: string; bodyTemplate: string; enabled: number; } export function getNoticeRuleList(data: { eventType?: string }) { return requestClient.post<{ list: NoticeRuleItem[] }>( '/api/service/admin/notice/rule/list', data, ); } export function saveNoticeRule(data: { bodyTemplate?: string; channelCodes: string[]; enabled?: number; eventType: string; id?: number; name: string; titleTemplate?: string; userIds: number[]; }) { return requestClient.post<{ id: number }>( '/api/service/admin/notice/rule/save', data, ); } export function deleteNoticeRule(data: { id: number }) { return requestClient.post('/api/service/admin/notice/rule/delete', data); } // ---------- 日志 ---------- export interface NoticeLogItem { id: number; ruleId: number; eventType: string; channelCode: string; userId: number; target: string; title: string; body: string; result: number; error: string; createdAt: string; } export interface NoticeLogListResp { list: NoticeLogItem[]; total: number; } export function getNoticeLogList(data: { channelCode?: string; dateFrom?: string; dateTo?: string; eventType?: string; page: number; result?: number; size: number; }) { return requestClient.post( '/api/service/admin/notice/log/list', data, ); } // ---------- 测试 ---------- export function testNotice(data: { body?: string; channelCode?: string; ruleId?: number; target?: string; title?: string; userIds?: number[]; }) { return requestClient.post<{ message: string; result: boolean }>( '/api/service/admin/notice/test', data, ); } // 事件类型选项 export const NOTICE_EVENT_OPTIONS = [ { label: '任务完成', value: 'job_done' }, { label: '任务失败', value: 'job_fail' }, { label: '安全告警', value: 'security_alert' }, { label: '招聘每日推送', value: 'recruit_daily' }, ];