新增: 轮询管理
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m17s

This commit is contained in:
sexygoat
2026-03-30 14:59:56 +08:00
parent dbe6070207
commit a05717c2ed
28 changed files with 6865 additions and 103 deletions

74
src/types/api/alert.ts Normal file
View File

@@ -0,0 +1,74 @@
/**
* 轮询告警管理相关类型定义
*/
/**
* 告警规则
*/
export interface PollingAlertRule {
id: number
rule_name: string
alert_level: string
metric_type: string
metric_type_name: string
task_type: string
task_type_name: string
operator: string
threshold: number
cooldown_minutes: number
notify_channels: string
status: number
created_at: string
updated_at: string
}
/**
* 告警历史
*/
export interface PollingAlertHistory {
id: number
rule_id: number
rule_name: string
alert_level: string
metric_type: string
task_type: string
threshold: number
current_value: number
message: string
created_at: string
}
/**
* 创建告警规则请求
*/
export interface CreatePollingAlertRuleRequest {
rule_name: string
alert_level: string
metric_type: string
task_type: string
threshold: number
operator?: string
cooldown_minutes?: number
notify_channels?: string
}
/**
* 更新告警规则请求
*/
export interface UpdatePollingAlertRuleRequest {
rule_name?: string
alert_level?: string
threshold?: number
cooldown_minutes?: number
notify_channels?: string
status?: number
}
/**
* 告警历史查询参数
*/
export interface PollingAlertHistoryQueryParams {
rule_id?: number
page?: number
page_size?: number
}

View File

@@ -0,0 +1,78 @@
/**
* 数据清理配置相关类型定义
*/
// 数据清理配置
export interface DataCleanupConfig {
id: number
table_name: string
description: string
retention_days: number
batch_size: number
enabled: number // 0=禁用1=启用
created_at: string
updated_at: string
updated_by: number
}
// 创建数据清理配置请求
export interface CreateDataCleanupConfigRequest {
table_name: string
retention_days: number
batch_size?: number
description?: string
}
// 更新数据清理配置请求
export interface UpdateDataCleanupConfigRequest {
retention_days?: number
batch_size?: number
description?: string
enabled?: number
}
// 数据清理日志
export interface DataCleanupLog {
id: number
table_name: string
cleanup_type: 'scheduled' | 'manual'
status: 'success' | 'failed' | 'running'
retention_days: number
deleted_count: number
duration_ms: number
started_at: string
completed_at: string | null
error_message: string
triggered_by: number | null
}
// 数据清理日志查询参数
export interface DataCleanupLogQueryParams {
table_name?: string
page?: number
page_size?: number
}
// 数据清理预览项
export interface DataCleanupPreviewItem {
table_name: string
description: string
retention_days: number
record_count: number
}
// 数据清理进度
export interface DataCleanupProgress {
is_running: boolean
current_table: string
total_tables: number
processed_tables: number
total_deleted: number
started_at: string | null
last_log: DataCleanupLog | null
}
// 手动触发数据清理请求
export interface TriggerDataCleanupRequest {
table_name?: string
}

View File

@@ -85,3 +85,24 @@ export * from './agentRecharge'
// 微信支付配置相关
export * from './wechatConfig'
// 退款管理相关
export * from './refund'
// 数据清理相关
export * from './dataCleanup'
// 轮询告警相关
export * from './alert'
// 轮询并发控制相关
export * from './pollingConcurrency'
// 轮询配置管理相关
export * from './pollingConfig'
// 手动触发相关
export * from './manualTrigger'
// 轮询监控相关
export * from './pollingMonitor'

View File

@@ -0,0 +1,140 @@
/**
* 手动触发相关类型定义
*/
/**
* 任务类型
*/
export type TaskType = 'polling:realname' | 'polling:carddata' | 'polling:package'
/**
* 触发类型
*/
export type TriggerType = 'single' | 'batch' | 'by_condition'
/**
* 任务状态
*/
export type ManualTriggerStatus = 'pending' | 'processing' | 'completed' | 'cancelled'
/**
* 手动触发日志对象
*/
export interface ManualTriggerLog {
/** 日志ID */
id: number
/** 任务类型 */
task_type: TaskType
/** 任务类型名称 */
task_type_name: string
/** 触发类型 */
trigger_type: TriggerType
/** 触发类型名称 */
trigger_type_name: string
/** 总卡数 */
total_count: number
/** 已处理数 */
processed_count: number
/** 成功数 */
success_count: number
/** 失败数 */
failed_count: number
/** 状态 */
status: ManualTriggerStatus
/** 状态名称 */
status_name: string
/** 触发时间 */
triggered_at: string
/** 完成时间 */
completed_at: string | null
/** 触发人ID */
triggered_by: number
}
/**
* 批量手动触发请求参数
*/
export interface BatchManualTriggerRequest {
/** 任务类型 */
task_type: TaskType
/** 卡ID列表最多1000个 */
card_ids?: number[]
}
/**
* 条件筛选触发请求参数
*/
export interface ConditionManualTriggerRequest {
/** 任务类型 */
task_type: TaskType
/** 限制数量最多1000 */
limit: number
/** 卡状态筛选 */
card_status?: string
/** 卡类型筛选 */
card_type?: string
/** 运营商代码筛选 */
carrier_code?: string
/** 是否启用轮询筛选 */
enable_polling?: boolean
/** 套餐ID列表筛选 */
package_ids?: number[]
/** 店铺ID筛选 */
shop_id?: number
}
/**
* 单卡手动触发请求参数
*/
export interface SingleManualTriggerRequest {
/** 卡ID */
card_id: number
/** 任务类型 */
task_type: TaskType
}
/**
* 取消手动触发请求参数
*/
export interface CancelManualTriggerRequest {
/** 触发任务ID */
trigger_id: number
}
/**
* 手动触发历史查询参数
*/
export interface ManualTriggerHistoryQueryParams {
/** 任务类型筛选 */
task_type?: TaskType
/** 页码 */
page?: number
/** 每页数量 */
page_size?: number
}
/**
* 手动触发历史列表响应
*/
export interface ManualTriggerHistoryResponse {
/** 日志列表 */
items: ManualTriggerLog[]
/** 当前页 */
page: number
/** 每页数量 */
page_size: number
/** 总数 */
total: number
/** 总页数 */
total_pages: number
}
/**
* 手动触发状态响应
*/
export interface ManualTriggerStatusResponse {
/** 各队列大小 */
queue_sizes: Record<string, number>
/** 正在运行的任务列表 */
running_tasks: ManualTriggerLog[]
}

View File

@@ -0,0 +1,45 @@
/**
* 轮询并发控制相关类型定义
*/
/**
* 并发配置对象
*/
export interface PollingConcurrency {
/** 任务类型 */
task_type: string
/** 任务类型名称 */
task_type_name: string
/** 最大并发数 */
max_concurrency: number
/** 当前并发数 */
current: number
/** 可用并发数 */
available: number
/** 使用率(百分比) */
utilization: number
}
/**
* 并发配置列表响应
*/
export interface PollingConcurrencyListResponse {
/** 并发配置列表 */
items: PollingConcurrency[]
}
/**
* 更新并发配置请求参数
*/
export interface UpdateConcurrencyParams {
/** 最大并发数1-1000 */
max_concurrency: number
}
/**
* 重置并发计数请求参数
*/
export interface ResetConcurrencyParams {
/** 任务类型(不传则重置全部) */
task_type?: string
}

View File

@@ -0,0 +1,137 @@
/**
* 轮询配置管理相关类型定义
*/
/**
* 卡业务类型
*/
export type CardCategory = 'normal' | 'industry'
/**
* 卡状态条件
*/
export type CardCondition = 'not_real_name' | 'real_name' | 'activated' | 'suspended'
/**
* 轮询配置对象
*/
export interface PollingConfig {
/** 配置ID */
id: number
/** 配置名称 */
config_name: string
/** 配置说明 */
description: string
/** 卡业务类型 */
card_category: CardCategory
/** 卡状态条件 */
card_condition: CardCondition
/** 运营商ID */
carrier_id: number
/** 优先级(数字越小优先级越高) */
priority: number
/** 状态1:启用0:禁用) */
status: number
/** 实名检查间隔NULL表示不检查 */
realname_check_interval: number | null
/** 套餐检查间隔NULL表示不检查 */
package_check_interval: number | null
/** 流量检查间隔NULL表示不检查 */
carddata_check_interval: number | null
/** 创建时间 */
created_at: string
/** 更新时间 */
updated_at: string
}
/**
* 轮询配置查询参数
*/
export interface PollingConfigQueryParams {
/** 页码默认1 */
page?: number
/** 每页数量1-100 */
page_size?: number
/** 状态1:启用0:禁用) */
status?: number
/** 卡状态条件 */
card_condition?: CardCondition
/** 卡业务类型 */
card_category?: CardCategory
/** 运营商ID */
carrier_id?: number
/** 配置名称(模糊搜索) */
config_name?: string
}
/**
* 轮询配置列表响应
*/
export interface PollingConfigListResponse {
/** 配置列表 */
items: PollingConfig[]
/** 当前页 */
page: number
/** 每页数量 */
page_size: number
/** 总数 */
total: number
/** 总页数 */
total_pages: number
}
/**
* 创建轮询配置请求参数
*/
export interface CreatePollingConfigRequest {
/** 配置名称1-100字符 */
config_name: string
/** 优先级1-1000数字越小优先级越高 */
priority: number
/** 配置说明最多500字符 */
description?: string
/** 卡业务类型 */
card_category?: CardCategory
/** 卡状态条件 */
card_condition?: CardCondition
/** 运营商ID */
carrier_id?: number
/** 实名检查间隔最小30NULL表示不检查 */
realname_check_interval?: number | null
/** 套餐检查间隔最小60NULL表示不检查 */
package_check_interval?: number | null
/** 流量检查间隔最小60NULL表示不检查 */
carddata_check_interval?: number | null
}
/**
* 更新轮询配置请求参数
*/
export interface UpdatePollingConfigRequest {
/** 配置名称1-100字符 */
config_name?: string
/** 优先级1-1000数字越小优先级越高 */
priority?: number
/** 配置说明最多500字符 */
description?: string
/** 卡业务类型 */
card_category?: CardCategory
/** 卡状态条件 */
card_condition?: CardCondition
/** 运营商ID */
carrier_id?: number
/** 实名检查间隔最小30NULL表示不检查 */
realname_check_interval?: number | null
/** 套餐检查间隔最小60NULL表示不检查 */
package_check_interval?: number | null
/** 流量检查间隔最小60NULL表示不检查 */
carddata_check_interval?: number | null
}
/**
* 更新轮询配置状态请求参数
*/
export interface UpdatePollingConfigStatusRequest {
/** 状态1:启用0:禁用) */
status: number
}

View File

@@ -0,0 +1,95 @@
/**
* 轮询监控相关类型定义
*/
/**
* 轮询总览统计对象
*/
export interface PollingOverviewStats {
/** 总卡数 */
total_cards: number
/** 已初始化卡数 */
initialized_cards: number
/** 是否正在初始化 */
is_initializing: boolean
/** 初始化进度0-100 */
init_progress: number
/** 实名检查队列大小 */
realname_queue_size: number
/** 套餐检查队列大小 */
package_queue_size: number
/** 流量检查队列大小 */
carddata_queue_size: number
}
/**
* 轮询初始化进度对象
*/
export interface PollingInitProgress {
/** 总卡数 */
total_cards: number
/** 已初始化卡数 */
initialized_cards: number
/** 进度百分比0-100 */
progress: number
/** 是否完成 */
is_complete: boolean
/** 开始时间 */
started_at: string
/** 预计完成时间 */
estimated_eta: string
}
/**
* 轮询队列状态对象
*/
export interface PollingQueueStatus {
/** 任务类型 */
task_type: string
/** 任务类型名称 */
task_type_name: string
/** 队列大小 */
queue_size: number
/** 到期待处理数 */
due_count: number
/** 手动触发待处理数 */
manual_pending: number
/** 平均等待时间(秒) */
avg_wait_time_s: number
}
/**
* 队列状态列表响应
*/
export interface PollingQueueStatusResponse {
/** 队列状态列表 */
items: PollingQueueStatus[]
}
/**
* 轮询任务统计对象
*/
export interface PollingTaskStats {
/** 任务类型 */
task_type: string
/** 任务类型名称 */
task_type_name: string
/** 1小时总数 */
total_count_1h: number
/** 1小时成功数 */
success_count_1h: number
/** 1小时失败数 */
failure_count_1h: number
/** 成功率0-100 */
success_rate: number
/** 平均耗时(毫秒) */
avg_duration_ms: number
}
/**
* 任务统计列表响应
*/
export interface PollingTaskStatsResponse {
/** 任务统计列表 */
items: PollingTaskStats[]
}

85
src/types/api/refund.ts Normal file
View File

@@ -0,0 +1,85 @@
/**
* 退款管理相关类型定义
*/
// 退款状态
export enum RefundStatus {
PENDING = 1, // 待审批
APPROVED = 2, // 已通过
REJECTED = 3, // 已拒绝
RETURNED = 4 // 已退回
}
// 退款申请
export interface Refund {
id: number
refund_no: string
order_id: number
shop_id: number
package_usage_id: number | null
requested_refund_amount: number // 申请退款金额(分)
approved_refund_amount: number | null // 实际退款金额(分)
actual_received_amount: number // 实收金额(分)
status: RefundStatus
refund_reason: string
reject_reason: string
remark: string
asset_reset: boolean
commission_deducted: boolean
creator: number
processor_id: number | null
processed_at: string | null
created_at: string
updated_at: string
updater: number
}
// 查询退款申请列表参数
export interface RefundQueryParams {
page?: number
page_size?: number
status?: RefundStatus
order_id?: number
shop_id?: number
dateRange?: string[]
}
// 退款申请列表响应
export interface RefundListResponse {
items: Refund[]
page: number
size: number
total: number
}
// 创建退款申请请求
export interface CreateRefundRequest {
order_id: number
package_usage_id?: number
requested_refund_amount: number // 申请退款金额(分)
actual_received_amount: number // 实收金额(分)
refund_reason?: string
}
// 审批通过退款申请请求
export interface ApproveRefundRequest {
approved_refund_amount?: number // 实际退款金额(分)
remark?: string
}
// 审批拒绝退款申请请求
export interface RejectRefundRequest {
reject_reason: string
}
// 重新提交退款申请请求
export interface ResubmitRefundRequest {
requested_refund_amount?: number
actual_received_amount?: number
refund_reason?: string
}
// 退回退款申请请求
export interface ReturnRefundRequest {
remark?: string
}