import http from '../utils/http'; /** * @typedef {object} CreateUserRequest * @property {string} username * @property {string} password */ /** * @typedef {object} CreateUserResponse * @property {number} id * @property {string} username */ /** * @typedef {object} LoginRequest * @property {string} identifier - Identifier 可以是用户名、邮箱、手机号、微信号或飞书账号 * @property {string} password */ /** * @typedef {object} LoginResponse * @property {number} id * @property {string} username * @property {string} token */ /** * @typedef {('成功'|'失败')} AuditStatus */ /** * @typedef {object} UserActionLogDTO * @property {number} id * @property {number} user_id * @property {string} username * @property {string} action_type * @property {string} description * @property {string} http_method * @property {string} http_path * @property {string} source_ip * @property {Array} target_resource * @property {AuditStatus} status * @property {string} result_details * @property {string} time */ /** * @typedef {object} PaginationDTO * @property {number} page * @property {number} page_size * @property {number} total */ /** * @typedef {object} ListUserActionLogResponse * @property {Array} list * @property {PaginationDTO} pagination */ /** * @typedef {object} UserHistoryParams * @property {string} [action_type] * @property {string} [end_time] * @property {string} [order_by] * @property {number} [page] * @property {number} [page_size] * @property {string} [start_time] * @property {string} [status] * @property {number} [user_id] * @property {string} [username] */ /** * @typedef {('邮件'|'企业微信'|'飞书'|'日志')} NotifierType */ /** * @typedef {object} SendTestNotificationRequest * @property {NotifierType} type - Type 指定要测试的通知渠道 */ /** * @typedef {object} Response * @property {number} code - 业务状态码 * @property {object} [data] - 业务数据 * @property {string} [message] - 提示信息 */ /** * 创建一个新用户 * @param {CreateUserRequest} userData - 用户信息 * @returns {Promise} */ const createUser = (userData) => { return http.post('/api/v1/users', userData); }; /** * 用户登录 * @param {LoginRequest} credentials - 登录凭证 * @returns {Promise} */ const login = (credentials) => { return http.post('/api/v1/users/login', credentials); }; /** * 获取用户操作日志列表 * @param {UserHistoryParams} params - 查询参数 * @returns {Promise} */ const getUserActionLogs = (params) => { const newParams = { action_type: params.action_type, end_time: params.end_time, order_by: params.order_by, page: params.page, page_size: params.page_size, start_time: params.start_time, status: params.status, user_id: params.user_id, username: params.username, }; return http.get('/api/v1/monitor/user-action-logs', { params: newParams }); }; /** * 发送测试通知 * @param {number} id - 用户ID * @param {SendTestNotificationRequest} data - 请求体 * @returns {Promise} */ const sendTestNotification = (id, data) => { return http.post(`/api/v1/users/${id}/notifications/test`, data); }; export const UserApi = { createUser, login, getUserActionLogs, sendTestNotification, };