// ================================================================================ // Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. // You can delete these comments if you wish manually maintain this interface file. // ================================================================================ package service import ( "context" v1 "github.com/qianfree/team-api/api/admin/v1" ) type ( IAdmin interface { // ListUsers returns a paginated list of admin users. ListUsers(ctx context.Context, req *v1.AdminUserListReq) (*v1.AdminUserListRes, error) // CreateUser creates a new admin user. CreateUser(ctx context.Context, req *v1.AdminUserCreateReq) (*v1.AdminUserCreateRes, error) // UpdateUser updates an admin user. UpdateUser(ctx context.Context, req *v1.AdminUserUpdateReq) (*v1.AdminUserUpdateRes, error) // DeleteUser deletes an admin user. DeleteUser(ctx context.Context, req *v1.AdminUserDeleteReq) (*v1.AdminUserDeleteRes, error) // UpdateUserStatus enables or disables an admin user. UpdateUserStatus(ctx context.Context, req *v1.AdminUserUpdateStatusReq) (*v1.AdminUserUpdateStatusRes, error) // UnlockUser 清除管理员的登录锁定状态(重置失败计数与锁定截止时间)。 // // 解锁是本文件里唯一漏掉 assertCanManageAdminUser 的账号处置动作:锁定本身是暴力破解 // 的防线,非超管若能解锁超级管理员账号,就等于可以无限次重置对方的失败计数继续爆破。 UnlockUser(ctx context.Context, req *v1.AdminUserUnlockReq) (*v1.AdminUserUnlockRes, error) // ResetUserPassword resets an admin user's password. ResetUserPassword(ctx context.Context, req *v1.AdminUserResetPasswordReq) (*v1.AdminUserResetPasswordRes, error) // ExportUsers exports admin users to CSV or Excel. ExportUsers(ctx context.Context, req *v1.AdminUserExportReq) (*v1.AdminUserExportRes, error) // CreateAgreement 创建协议版本 CreateAgreement(ctx context.Context, req *v1.AgreementCreateReq) (*v1.AgreementCreateRes, error) // ListAgreements 协议版本列表 ListAgreements(ctx context.Context, req *v1.AgreementListReq) (*v1.AgreementListRes, error) // GetAgreement 协议版本详情 GetAgreement(ctx context.Context, req *v1.AgreementGetReq) (*v1.AgreementGetRes, error) // UpdateAgreement 更新协议版本(仅 draft) UpdateAgreement(ctx context.Context, req *v1.AgreementUpdateReq) (*v1.AgreementUpdateRes, error) // DeleteAgreement 删除协议版本(仅 draft) DeleteAgreement(ctx context.Context, req *v1.AgreementDeleteReq) (*v1.AgreementDeleteRes, error) // PublishAgreement 发布协议版本 PublishAgreement(ctx context.Context, req *v1.AgreementPublishReq) (*v1.AgreementPublishRes, error) // ListAgreementAcceptances 协议接受记录列表 ListAgreementAcceptances(ctx context.Context, req *v1.AgreementAcceptanceListReq) (*v1.AgreementAcceptanceListRes, error) // ListAdminPendingAgreements 当前管理员待接受的协议 ListAdminPendingAgreements(ctx context.Context, req *v1.AdminAgreementPendingReq) (*v1.AdminAgreementPendingRes, error) // AcceptAdminAgreements 管理员接受协议 AcceptAdminAgreements(ctx context.Context, req *v1.AdminAgreementAcceptReq) (*v1.AdminAgreementAcceptRes, error) // GetAuditConfig retrieves the global audit level from sys_options. GetAuditConfig(ctx context.Context, _ *v1.AuditConfigGetReq) (*v1.AuditConfigGetRes, error) // UpdateAuditConfig updates the global audit level. UpdateAuditConfig(ctx context.Context, req *v1.AuditConfigUpdateReq) (*v1.AuditConfigUpdateRes, error) // ListOperationLogs retrieves a paginated list of operation logs with optional filters. ListOperationLogs(ctx context.Context, req *v1.OperationLogListReq) (*v1.OperationLogListRes, error) // ListSensitiveAccessLogs retrieves a paginated list of sensitive data access logs. ListSensitiveAccessLogs(ctx context.Context, req *v1.SensitiveLogListReq) (*v1.SensitiveLogListRes, error) // ListRequestAuditLogs 分页查询请求审计日志(不返回 request_body/response_body 以优化性能) // 审计数据从审计库查询,关联信息(用户名、租户名等)从主库批量查询后在应用层合并。 ListRequestAuditLogs(ctx context.Context, req *v1.RequestAuditLogListReq) (*v1.RequestAuditLogListRes, error) // GetRequestAuditLogDetail 查询单条请求审计日志详情(含完整 request_body 和 response_body) GetRequestAuditLogDetail(ctx context.Context, req *v1.RequestAuditLogDetailReq) (*v1.RequestAuditLogDetailRes, error) // ForwardingTraceGet 按 request_id 查询请求转发路径追踪(仅管理员,用量日志详情懒加载用)。 // 从审计库查询 aud_request_logs(可能独立于主库),仅取 forwarding_trace 与 audit_level 两列。 // 一个 request_id 仅对应一条审计记录(任务完成审计为 UPDATE 非 INSERT),OrderDesc 取最新为防御性兜底。 ForwardingTraceGet(ctx context.Context, req *v1.ForwardingTraceGetReq) (*v1.ForwardingTraceGetRes, error) // ExportOperationLogs exports operation logs to CSV or Excel. ExportOperationLogs(ctx context.Context, req *v1.OperationLogExportReq) (*v1.OperationLogExportRes, error) // ContentFilterLogList returns a paginated list of content filter interception logs. // 审计数据从审计库查询,关联信息从主库批量查询后在应用层合并。 ContentFilterLogList(ctx context.Context, req *v1.ContentFilterLogListReq) (*v1.ContentFilterLogListRes, error) // ContentFilterLogClear 硬删除全部内容过滤拦截日志。 // 拦截日志为追加型审计流水,堆积后用 TRUNCATE 秒级清空并立即归还磁盘空间 // (DELETE 需等 VACUUM 回收)。TRUNCATE 不返回行数,故先取删除前条数作为反馈。 // 表无数据库级外键,TRUNCATE 安全。 ContentFilterLogClear(ctx context.Context, _ *v1.ContentFilterLogClearReq) (*v1.ContentFilterLogClearRes, error) // Login handles admin login. Login(ctx context.Context, req *v1.AdminLoginReq) (*v1.AdminLoginRes, error) // Logout handles admin logout. Logout(ctx context.Context, _ *v1.AdminLogoutReq) (*v1.AdminLogoutRes, error) // Refresh handles token refresh. Refresh(ctx context.Context, req *v1.AdminRefreshReq) (*v1.AdminRefreshRes, error) // ListSessions returns active sessions for the current admin user. ListSessions(ctx context.Context, req *v1.AdminSessionListReq) (*v1.AdminSessionListRes, error) // RevokeSession revokes a specific session. RevokeSession(ctx context.Context, req *v1.AdminRevokeSessionReq) (*v1.AdminRevokeSessionRes, error) // ForceLogout revokes all sessions for a specific user. ForceLogout(ctx context.Context, req *v1.AdminForceLogoutReq) (*v1.AdminForceLogoutRes, error) // ChangePassword handles admin password change. ChangePassword(ctx context.Context, req *v1.AdminChangePasswordReq) (*v1.AdminChangePasswordRes, error) // GetMe 返回当前登录用户的信息与有效权限。 // // 权限此前只在登录响应里下发一次,之后前端从 localStorage 恢复:管理员改了某人的权限, // 对方不重新登录就一直按旧权限渲染菜单。前端在应用启动与 token 刷新后调用本接口刷新。 GetMe(ctx context.Context, _ *v1.AdminMeReq) (*v1.AdminMeRes, error) // CreateChangelog 创建更新日志 CreateChangelog(ctx context.Context, req *v1.ChangelogCreateReq) (*v1.ChangelogCreateRes, error) // ListChangelogs 更新日志列表(管理后台,含草稿) ListChangelogs(ctx context.Context, req *v1.ChangelogListReq) (*v1.ChangelogListRes, error) // UpdateChangelog 更新更新日志 UpdateChangelog(ctx context.Context, req *v1.ChangelogUpdateReq) (*v1.ChangelogUpdateRes, error) // DeleteChangelog 删除更新日志 DeleteChangelog(ctx context.Context, req *v1.ChangelogDeleteReq) (*v1.ChangelogDeleteRes, error) // PublishChangelog 发布更新日志 PublishChangelog(ctx context.Context, req *v1.ChangelogPublishReq) (*v1.ChangelogPublishRes, error) // ListChannelOptions 渠道下拉选项(不分页,返回全部渠道)。 // 刻意不做状态过滤:日志 / 统计页的渠道筛选项要覆盖历史数据里出现过的全部渠道, // 已停用渠道同样需要能作为筛选条件;status 原样返回,由前端决定是否标记。 // 注意与 /admin/channels 的区别:后者是渠道管理列表(分页 + 健康度联表 + 运行态), // 下拉场景不要用它 —— 那是本接口存在的意义。 ListChannelOptions(ctx context.Context, _ *v1.ChannelOptionsReq) (*v1.ChannelOptionsRes, error) ListChannels(ctx context.Context, req *v1.ChannelListReq) (*v1.ChannelListRes, error) // CloneChannel 克隆渠道 CloneChannel(ctx context.Context, req *v1.ChannelCloneReq) (*v1.ChannelCloneRes, error) // CreateChannel 创建渠道 CreateChannel(ctx context.Context, req *v1.ChannelCreateReq) (*v1.ChannelCreateRes, error) // UpdateChannel 更新渠道 UpdateChannel(ctx context.Context, req *v1.ChannelUpdateReq) (*v1.ChannelUpdateRes, error) // DeleteChannel 删除渠道 DeleteChannel(ctx context.Context, req *v1.ChannelDeleteReq) (*v1.ChannelDeleteRes, error) // GetChannelDetail 获取渠道详情 GetChannelDetail(ctx context.Context, req *v1.ChannelDetailReq) (*v1.ChannelDetailRes, error) // AddChannelKey 添加渠道 API Key(已废弃:每渠道仅支持一个 Key) AddChannelKey(ctx context.Context, req *v1.ChannelKeyCreateReq) (*v1.ChannelKeyCreateRes, error) // DeleteChannelKey 删除渠道 API Key DeleteChannelKey(ctx context.Context, req *v1.ChannelKeyDeleteReq) (*v1.ChannelKeyDeleteRes, error) // SetChannelAbilities 设置渠道模型能力 SetChannelAbilities(ctx context.Context, req *v1.ChannelAbilityBatchReq) (*v1.ChannelAbilityBatchRes, error) // GetChannelKeys 获取渠道 Key 列表 GetChannelKeys(ctx context.Context, req *v1.ChannelKeyListReq) (*v1.ChannelKeyListRes, error) // GetChannelAbilities 获取渠道模型能力列表 GetChannelAbilities(ctx context.Context, req *v1.ChannelAbilitiesGetReq) (*v1.ChannelAbilitiesGetRes, error) // GetProviderDefaultURLs 获取供应商默认 API 地址 GetProviderDefaultURLs(ctx context.Context, _ *v1.ProviderDefaultURLReq) (*v1.ProviderDefaultURLRes, error) // GetChannelHealthTrend 获取渠道健康趋势数据(健康度、延迟在 SQL 层四舍五入取整,避免展示小数) // 不再返回 stability_score / consecutive_failures:健康体系重写后这两列已停止写入, // 返回恒定值只会让前端画出两条毫无意义的常量线。 GetChannelHealthTrend(ctx context.Context, req *v1.ChannelHealthTrendReq) (*v1.ChannelHealthTrendRes, error) // ResetChannelHealth 重置渠道健康度(渠道可能已修复、重新可用):落库健康分 80(展示层), // 并复位熔断 + 成功率 EWMA(调度层),使渠道立即恢复被调度选择的能力。 ResetChannelHealth(ctx context.Context, req *v1.ChannelResetHealthReq) (*v1.ChannelResetHealthRes, error) // ExportChannels exports channel list to CSV or Excel. ExportChannels(ctx context.Context, req *v1.ChannelExportReq) (*v1.ChannelExportRes, error) // ChannelDebugLogList 渠道调试日志列表(原生 SQL:octet_length 表达式经 gdb Fields 有引号化风险) ChannelDebugLogList(ctx context.Context, req *v1.ChannelDebugLogListReq) (*v1.ChannelDebugLogListRes, error) // ChannelDebugLogStats 渠道调试日志统计(条数/落库体积/最早时间,供清理提示) ChannelDebugLogStats(ctx context.Context, req *v1.ChannelDebugLogStatsReq) (*v1.ChannelDebugLogStatsRes, error) // ChannelDebugLogDetail 渠道调试日志详情(四段完整报文;headers JSONB 解析为对象便于前端渲染) ChannelDebugLogDetail(ctx context.Context, req *v1.ChannelDebugLogDetailReq) (*v1.ChannelDebugLogDetailRes, error) // ChannelDebugLogDelete 删除单条调试日志(硬删除) ChannelDebugLogDelete(ctx context.Context, req *v1.ChannelDebugLogDeleteReq) (*v1.ChannelDebugLogDeleteRes, error) // ChannelDebugLogClear 清空渠道调试日志(按渠道硬删除全部) ChannelDebugLogClear(ctx context.Context, req *v1.ChannelDebugLogClearReq) (*v1.ChannelDebugLogClearRes, error) // ChannelErrorEventList 渠道错误事件列表 ChannelErrorEventList(ctx context.Context, req *v1.ChannelErrorEventListReq) (*v1.ChannelErrorEventListRes, error) // ChannelErrorStats 渠道错误统计 ChannelErrorStats(ctx context.Context, req *v1.ChannelErrorStatsReq) (*v1.ChannelErrorStatsRes, error) // ChannelErrorTrend 渠道错误趋势 ChannelErrorTrend(ctx context.Context, req *v1.ChannelErrorTrendReq) (*v1.ChannelErrorTrendRes, error) // ChannelErrorTopChannels 错误最多的渠道 ChannelErrorTopChannels(ctx context.Context, req *v1.ChannelErrorTopChannelsReq) (*v1.ChannelErrorTopChannelsRes, error) // ChannelErrorCategories 错误分类选项 ChannelErrorCategories(ctx context.Context, req *v1.ChannelErrorCategoriesReq) (*v1.ChannelErrorCategoriesRes, error) // ChannelErrorClear 硬删除全部渠道错误事件。 // 错误风暴时事件表堆积很快,用 TRUNCATE 而非逐行 DELETE 秒级清空并立即归还磁盘空间。 // TRUNCATE 不返回行数,故先取删除前条数作为反馈。表无数据库级外键,TRUNCATE 安全。 // 注意异步写入器(DefaultChannelErrorWriter)清空后继续写入新事件,属预期行为。 ChannelErrorClear(ctx context.Context, _ *v1.ChannelErrorClearReq) (*v1.ChannelErrorClearRes, error) // ChannelOAuthAuthURL 生成 OAuth 授权链接 ChannelOAuthAuthURL(ctx context.Context, req *v1.ChannelOAuthAuthURLReq) (*v1.ChannelOAuthAuthURLRes, error) // ChannelOAuthExchange OAuth 授权码换取令牌 ChannelOAuthExchange(ctx context.Context, req *v1.ChannelOAuthExchangeReq) (*v1.ChannelOAuthExchangeRes, error) // ChannelOAuthRefresh 手动刷新 OAuth 令牌 ChannelOAuthRefresh(ctx context.Context, req *v1.ChannelOAuthRefreshReq) (*v1.ChannelOAuthRefreshRes, error) // TestChannel 测试渠道可用性(发送最小请求验证)。 // 不限制渠道状态:禁用中的渠道也允许手动测试,便于管理员在启用放流量前确认已恢复; // 自动探测 cron 只查 active 渠道,禁用渠道不会被自动探测。 TestChannel(ctx context.Context, req *v1.ChannelTestReq) (*v1.ChannelTestRes, error) // CronJobList returns all registered cron jobs with their last execution status. CronJobList(ctx context.Context, _ *v1.CronJobListReq) (*v1.CronJobListRes, error) // CronJobTrigger manually triggers a cron job. CronJobTrigger(ctx context.Context, req *v1.CronJobTriggerReq) (*v1.CronJobTriggerRes, error) // GetDashboardStats 获取管理后台仪表盘统计 GetDashboardStats(ctx context.Context, req *v1.AdminDashboardReq) (*v1.AdminDashboardRes, error) // GetDashboardTrends returns daily revenue and request trends for the past N days. GetDashboardTrends(ctx context.Context, req *v1.AdminDashboardTrendsReq) (*v1.AdminDashboardTrendsRes, error) // GetTopTenants returns the top 10 tenants by revenue. GetTopTenants(ctx context.Context, req *v1.AdminDashboardTopTenantsReq) (*v1.AdminDashboardTopTenantsRes, error) // GetModelDistribution returns the model usage distribution. GetModelDistribution(ctx context.Context, req *v1.AdminDashboardModelDistributionReq) (*v1.AdminDashboardModelDistributionRes, error) // GetModelHourlyCost 模型费用按小时堆叠统计,用于仪表盘堆叠柱状图: // 取最近 N 小时内费用最高的 TopN 个模型,按小时聚合费用,非 TopN 模型归并为"其他"。 GetModelHourlyCost(ctx context.Context, req *v1.AdminDashboardModelHourlyReq) (*v1.AdminDashboardModelHourlyRes, error) // GetAllUsageLogs 获取所有租户的用量日志(管理后台) GetAllUsageLogs(ctx context.Context, req *v1.AdminUsageLogListReq) (*v1.AdminUsageLogListRes, error) // GetUsageLogDetail 获取单条用量日志详情(含 billing_snapshot / billing_summary / // user_agent / error_message 等列表不返回的大字段)。 // bil_usage_logs 按 created_at 月分区且 PK 为 (id, created_at):仅按 id 查询无法 // 分区裁剪,计划为对各月分区的 Append 索引探测(每分区走本地 PK 前缀命中 id), // 分区数随月份线性增长但单次探测为微秒级,与 upstream_request_id 反查(000023) // 同一模式;若日后分区数显著增大,可让调用方携带 created_at 提示做裁剪。 GetUsageLogDetail(ctx context.Context, req *v1.AdminUsageLogDetailReq) (*v1.AdminUsageLogDetailRes, error) // GetUsageLogSummary 获取用量日志统计汇总(独立接口,与列表共用筛选口径) GetUsageLogSummary(ctx context.Context, req *v1.AdminUsageLogSummaryReq) (*v1.AdminUsageLogSummaryRes, error) // GetAllBillingRecords 获取所有计费记录(管理后台) GetAllBillingRecords(ctx context.Context, req *v1.AdminBillingRecordListReq) (*v1.AdminBillingRecordListRes, error) // GetTenantWallets 获取所有租户钱包(管理后台) GetTenantWallets(ctx context.Context, req *v1.AdminWalletListReq) (*v1.AdminWalletListRes, error) // AdjustBalance 调整租户余额(管理后台)。 // Redis 权威化架构:余额变动以 Redis Lua 为资金提交点(扣减在权威可用余额上原子判断, // 穿透冻结会破坏预扣一致性),DB 侧仅记流水;流水失败时逆转 Redis 已发生的变动。 AdjustBalance(ctx context.Context, req *v1.AdminWalletAdjustReq) (*v1.AdminWalletAdjustRes, error) // OfflineRecharge 线下充值入账(管理后台) // 场景:用户线下银行转账(人民币 CNY),运营确认到账后入账。 // 本位币=USD 时按平台汇率换算入账;本位币=CNY 时直接入账(无换汇)。 // 与 AdjustBalance 的区别:走正规充值链路——余额与累计充值同步累加、触发等级检查、 // 流水类型为 recharge,并在描述中携带 CNY 快照(原始人民币 + 汇率 + 入账金额 + 转账流水号), // 供现金对账与开票追溯。 OfflineRecharge(ctx context.Context, req *v1.AdminWalletOfflineRechargeReq) (*v1.AdminWalletOfflineRechargeRes, error) // GetWalletInfo 获取租户钱包信息(管理后台)。 // balance/frozen_balance 以 Redis 权威值为准(Redis 是资金提交点,调整余额/线下入账后立即可见), // DB 侧余额是物化器周期覆盖的滞后副本,仅作钱包行存在性校验与 Redis 不可用时的降级展示。 GetWalletInfo(ctx context.Context, req *v1.AdminWalletInfoReq) (*v1.AdminWalletInfoRes, error) // GetWalletTransactions 获取租户钱包交易流水(管理后台) GetWalletTransactions(ctx context.Context, req *v1.AdminWalletTransactionListReq) (*v1.AdminWalletTransactionListRes, error) // SetWarningThreshold 设置租户钱包预警阈值(管理后台) SetWarningThreshold(ctx context.Context, req *v1.AdminWalletSetWarningThresholdReq) (*v1.AdminWalletSetWarningThresholdRes, error) // GetWalletFrozenItems 获取租户钱包冻结明细(管理后台)。 // 数据源为 Redis 预扣明细(权威),DB 预扣追踪表已废弃。 GetWalletFrozenItems(ctx context.Context, req *v1.AdminWalletFrozenItemListReq) (*v1.AdminWalletFrozenItemListRes, error) // ReleaseWalletFrozenItem 按笔释放冻结(管理后台运维逃生舱)。 // 释放走 billing.UnfreezePreDeduct 的 Redis 认领路径:认领即删预扣 hash、幂等、逐笔精确, // 绝不直接改写钱包 hash 的 frozen_balance 汇总值。 ReleaseWalletFrozenItem(ctx context.Context, req *v1.AdminWalletFrozenReleaseReq) (*v1.AdminWalletFrozenReleaseRes, error) // ReleaseAllWalletFrozenItems 一键释放租户全部冻结(管理后台运维逃生舱)。 // 遍历 Redis 活跃冻结明细,复用 frozenItemGuard 护栏逐项筛选: // - 任务关联在途/待结算项自动跳过(由任务结算流程负责,禁止手动释放); // - 保护期内(冻结不足 frozenReleaseMinAge)项默认跳过,Force=true 时才释放; // - 其余项逐个 UnfreezePreDeduct(Lua 认领即删,幂等,与并发结算竞争安全)。 // // 返回实际释放笔数/金额与跳过原因摘要(去重)。 ReleaseAllWalletFrozenItems(ctx context.Context, req *v1.AdminWalletFrozenReleaseAllReq) (*v1.AdminWalletFrozenReleaseAllRes, error) // GetAllTransactions 获取所有租户交易流水(管理后台) GetAllTransactions(ctx context.Context, req *v1.AdminTransactionListReq) (*v1.AdminTransactionListRes, error) // GetDashboardChannelHealth 获取渠道健康概览(最不健康的5个活跃渠道) GetDashboardChannelHealth(ctx context.Context, req *v1.AdminDashboardChannelHealthReq) (*v1.AdminDashboardChannelHealthRes, error) // GetDashboardRecentAlerts 获取最近5条告警 GetDashboardRecentAlerts(ctx context.Context, req *v1.AdminDashboardRecentAlertsReq) (*v1.AdminDashboardRecentAlertsRes, error) // ExportUsageLogs exports usage logs to CSV or Excel. ExportUsageLogs(ctx context.Context, req *v1.AdminUsageLogExportReq) (*v1.AdminUsageLogExportRes, error) // ExportBillingRecords exports billing records to CSV or Excel. ExportBillingRecords(ctx context.Context, req *v1.AdminBillingRecordExportReq) (*v1.AdminBillingRecordExportRes, error) DataGovernanceSettingsGet(ctx context.Context, _ *v1.DataGovernanceSettingsGetReq) (*v1.DataGovernanceSettingsGetRes, error) // UpdateDataGovernanceSettings 更新数据治理设置 DataGovernanceSettingsUpdate(ctx context.Context, req *v1.DataGovernanceSettingsUpdateReq) (*v1.DataGovernanceSettingsUpdateRes, error) // RequestDataExport 请求数据导出 DataGovernanceExport(ctx context.Context, req *v1.DataGovernanceExportReq) (*v1.DataGovernanceExportRes, error) // RequestDataDeletion 请求数据删除 DataGovernanceDeletion(ctx context.Context, req *v1.DataGovernanceDeletionReq) (*v1.DataGovernanceDeletionRes, error) // TriggerDataCleanup 手动触发数据清理 DataGovernanceCleanup(ctx context.Context, _ *v1.DataGovernanceCleanupReq) (*v1.DataGovernanceCleanupRes, error) // ListEmailSendLogs 分页查询邮件发送记录(ntf_send_log,主库)。 // 列表不返回 body(HTML 正文较大),由详情接口返回完整记录。 ListEmailSendLogs(ctx context.Context, req *v1.EmailSendLogListReq) (*v1.EmailSendLogListRes, error) // GetEmailSendLogDetail 查询单条邮件发送记录详情(含 body 正文)。 GetEmailSendLogDetail(ctx context.Context, req *v1.EmailSendLogDetailReq) (*v1.EmailSendLogDetailRes, error) // ListEmailVerifyCodes 分页查询验证码申请记录(sys_email_verify_codes,主库)。 ListEmailVerifyCodes(ctx context.Context, req *v1.EmailVerifyCodeListReq) (*v1.EmailVerifyCodeListRes, error) // ErrorLogList returns a paginated list of system error logs. ErrorLogList(ctx context.Context, req *v1.ErrorLogListReq) (*v1.ErrorLogListRes, error) // ErrorLogDetail returns the detail of a single error log. ErrorLogDetail(ctx context.Context, req *v1.ErrorLogDetailReq) (*v1.ErrorLogDetailRes, error) // ErrorLogResolve marks an error log as resolved. ErrorLogResolve(ctx context.Context, req *v1.ErrorLogResolveReq) (*v1.ErrorLogResolveRes, error) // ErrorLogBatchResolve marks multiple error logs as resolved. ErrorLogBatchResolve(ctx context.Context, req *v1.ErrorLogBatchResolveReq) (*v1.ErrorLogBatchResolveRes, error) // ErrorLogClear 硬删除全部错误日志。 // 系统报错大量堆积时用于快速释放数据库空间:用 TRUNCATE 而非逐行 DELETE, // 秒级清空并立即归还磁盘空间(DELETE 需等 VACUUM 回收)。TRUNCATE 不返回行数, // 故先取删除前条数作为反馈。表无数据库级外键,TRUNCATE 安全。 ErrorLogClear(ctx context.Context, _ *v1.ErrorLogClearReq) (*v1.ErrorLogClearRes, error) // ErrorLogStats returns error log statistics. ErrorLogStats(ctx context.Context, _ *v1.ErrorLogStatsReq) (*v1.ErrorLogStatsRes, error) // ListAllFeedbacks 管理后台反馈列表 ListAllFeedbacks(ctx context.Context, req *v1.FeedbackListAllReq) (*v1.FeedbackListAllRes, error) // ReplyToFeedback 管理员回复反馈 ReplyToFeedback(ctx context.Context, req *v1.FeedbackReplyReq) (*v1.FeedbackReplyRes, error) // UpdateFeedbackStatus 更新反馈状态 UpdateFeedbackStatus(ctx context.Context, req *v1.FeedbackUpdateStatusReq) (*v1.FeedbackUpdateStatusRes, error) // GetFeedbackStats 反馈统计 GetFeedbackStats(ctx context.Context, req *v1.FeedbackStatsReq) (*v1.FeedbackStatsRes, error) // FileList 文件列表(分页 + 筛选)。 FileList(ctx context.Context, req *v1.FileListReq) (*v1.FileListRes, error) // FileStats 存储占用统计(KPI)。 FileStats(ctx context.Context, req *v1.FileStatsReq) (*v1.FileStatsRes, error) // FileDownload 生成临时预览下载链接。 FileDownload(ctx context.Context, req *v1.FileDownloadReq) (*v1.FileDownloadRes, error) // FileDelete 删除单个文件(存储对象 + 记录)。 FileDelete(ctx context.Context, req *v1.FileDeleteReq) (*v1.FileDeleteRes, error) // FileCleanup 手动触发一次保留期清理(导出 + 图片)。 FileCleanup(ctx context.Context, req *v1.FileCleanupReq) (*v1.FileCleanupRes, error) // CreateHelpCategory 创建帮助分类 CreateHelpCategory(ctx context.Context, req *v1.HelpCategoryCreateReq) (*v1.HelpCategoryCreateRes, error) // UpdateHelpCategory 更新帮助分类 UpdateHelpCategory(ctx context.Context, req *v1.HelpCategoryUpdateReq) (*v1.HelpCategoryUpdateRes, error) // DeleteHelpCategory 删除帮助分类 DeleteHelpCategory(ctx context.Context, req *v1.HelpCategoryDeleteReq) (*v1.HelpCategoryDeleteRes, error) // ListHelpCategories 帮助分类列表(管理后台) ListHelpCategories(ctx context.Context, req *v1.HelpCategoryListReq) (*v1.HelpCategoryListRes, error) // CreateHelpArticle 创建帮助文章 CreateHelpArticle(ctx context.Context, req *v1.HelpArticleCreateReq) (*v1.HelpArticleCreateRes, error) // UpdateHelpArticle 更新帮助文章 UpdateHelpArticle(ctx context.Context, req *v1.HelpArticleUpdateReq) (*v1.HelpArticleUpdateRes, error) // DeleteHelpArticle 删除帮助文章 DeleteHelpArticle(ctx context.Context, req *v1.HelpArticleDeleteReq) (*v1.HelpArticleDeleteRes, error) // ListHelpArticles 帮助文章列表(管理后台) ListHelpArticles(ctx context.Context, req *v1.HelpArticleListReq) (*v1.HelpArticleListRes, error) // GetHelpArticle 帮助文章详情(管理后台) GetHelpArticle(ctx context.Context, req *v1.HelpArticleGetReq) (*v1.HelpArticleGetRes, error) // CreateMember adds a new member to a specified tenant. CreateMember(ctx context.Context, req *v1.AdminMemberCreateReq) (*v1.AdminMemberCreateRes, error) // ListAllMembers returns a paginated list of all tenant members across all tenants. ListAllMembers(ctx context.Context, req *v1.AdminMemberListReq) (*v1.AdminMemberListRes, error) // DisableMember disables a tenant member by admin. DisableMember(ctx context.Context, req *v1.AdminMemberDisableReq) (*v1.AdminMemberDisableRes, error) // EnableMember re-enables a tenant member by admin. EnableMember(ctx context.Context, req *v1.AdminMemberEnableReq) (*v1.AdminMemberEnableRes, error) // ResetMemberPassword resets a member's password by admin, returns the new random password. ResetMemberPassword(ctx context.Context, req *v1.AdminMemberResetPasswordReq) (*v1.AdminMemberResetPasswordRes, error) // UnlockMember 清除成员的登录锁定状态(平台视角,跨租户)。 UnlockMember(ctx context.Context, req *v1.AdminMemberUnlockReq) (*v1.AdminMemberUnlockRes, error) // ExportMembers exports member list to CSV or Excel. ExportMembers(ctx context.Context, req *v1.AdminMemberExportReq) (*v1.AdminMemberExportRes, error) // ListModelOptions 获取模型选项列表(不分页,用于下拉选择) ListModelOptions(ctx context.Context, req *v1.ModelOptionsReq) (*v1.ModelOptionsRes, error) // ListModels 获取模型列表(含定价摘要) ListModels(ctx context.Context, req *v1.ModelListReq) (*v1.ModelListRes, error) // CreateModel 创建模型(自动创建默认 token 定价记录) CreateModel(ctx context.Context, req *v1.ModelCreateReq) (*v1.ModelCreateRes, error) // UpdateModel 更新模型(含弃用状态管理) UpdateModel(ctx context.Context, req *v1.ModelUpdateReq) (*v1.ModelUpdateRes, error) // DeleteModel 删除模型(同时删除定价记录、租户分配记录和分组关联) DeleteModel(ctx context.Context, req *v1.ModelDeleteReq) (*v1.ModelDeleteRes, error) // GetModelPricing 获取模型定价(pricing JSONB 单行还原为 PricingItem 列表,响应结构与旧多行结构保持兼容) GetModelPricing(ctx context.Context, req *v1.PricingGetReq) (*v1.PricingGetRes, error) // SetModelPricing 设置模型定价(全量替换) SetModelPricing(ctx context.Context, req *v1.PricingSetReq) (*v1.PricingSetRes, error) // FetchOfficialPricing 拉取模型官方定价(来自 LiteLLM + models.dev 双数据源) FetchOfficialPricing(ctx context.Context, req *v1.PricingFetchOfficialReq) (*v1.PricingFetchOfficialRes, error) // FetchOfficialModelInfo 按模型名称拉取官方模型信息(上下文长度+能力特性) // 按优先级尝试 LiteLLM → OpenRouter → BaseLLM,返回第一个匹配的结果 FetchOfficialModelInfo(ctx context.Context, req *v1.ModelFetchOfficialInfoReq) (*v1.ModelFetchOfficialInfoRes, error) // ExportModels exports model list to CSV or Excel. ExportModels(ctx context.Context, req *v1.ModelExportReq) (*v1.ModelExportRes, error) // ListModelGroups 模型分组列表 ListModelGroups(ctx context.Context, req *v1.ModelGroupListReq) (*v1.ModelGroupListRes, error) // CreateModelGroup 创建模型分组 CreateModelGroup(ctx context.Context, req *v1.ModelGroupCreateReq) (*v1.ModelGroupCreateRes, error) // UpdateModelGroup 更新模型分组 UpdateModelGroup(ctx context.Context, req *v1.ModelGroupUpdateReq) (*v1.ModelGroupUpdateRes, error) // DeleteModelGroup 删除模型分组 DeleteModelGroup(ctx context.Context, req *v1.ModelGroupDeleteReq) (*v1.ModelGroupDeleteRes, error) // ListModelGroupOptions 分组选项列表(不分页,用于下拉选择) ListModelGroupOptions(ctx context.Context, req *v1.ModelGroupOptionsReq) (*v1.ModelGroupOptionsRes, error) // ListGroupModels 查看分组内模型列表 ListGroupModels(ctx context.Context, req *v1.GroupModelsListReq) (*v1.GroupModelsListRes, error) // SetGroupModels 设置分组内模型(全量替换) SetGroupModels(ctx context.Context, req *v1.GroupModelsSetReq) (*v1.GroupModelsSetRes, error) // ListTenantGroups 查看租户关联的分组列表 ListTenantGroups(ctx context.Context, req *v1.TenantGroupsListReq) (*v1.TenantGroupsListRes, error) // SetTenantGroups 设置租户关联的分组(全量替换) SetTenantGroups(ctx context.Context, req *v1.TenantGroupsSetReq) (*v1.TenantGroupsSetRes, error) // ExportModelsJson 导出模型配置为 JSON 文件(含定价数据,用于跨环境迁移) ExportModelsJson(ctx context.Context, req *v1.ModelExportJsonReq) (*v1.ModelExportJsonRes, error) // ImportModelsPreview 导入模型预览(解析上传文件,检测冲突) ImportModelsPreview(ctx context.Context, req *v1.ModelImportPreviewReq) (*v1.ModelImportPreviewRes, error) // ImportModels 确认导入模型(事务内执行) ImportModels(ctx context.Context, req *v1.ModelImportReq) (*v1.ModelImportRes, error) // ListTemplates 获取通知模板列表(分页) ListTemplates(ctx context.Context, req *v1.TemplateListReq) (*v1.TemplateListRes, error) // GetTemplate 获取单个通知模板 GetTemplate(ctx context.Context, req *v1.TemplateGetReq) (*v1.TemplateGetRes, error) // UpdateTemplate 更新通知模板 UpdateTemplate(ctx context.Context, req *v1.TemplateUpdateReq) (*v1.TemplateUpdateRes, error) // TestTemplate 用测试变量渲染模板,返回渲染结果(不发送) TestTemplate(ctx context.Context, req *v1.TemplateTestReq) (*v1.TemplateTestRes, error) // SendMessage 创建手动站内消息并推送 WebSocket 通知 SendMessage(ctx context.Context, req *v1.MessageSendReq) (*v1.MessageSendRes, error) // SendBroadcast 创建广播消息并推送 WebSocket 通知 SendBroadcast(ctx context.Context, req *v1.MessageBroadcastReq) (*v1.MessageBroadcastRes, error) // ListMessages 获取所有消息列表(管理后台,支持过滤) ListMessages(ctx context.Context, req *v1.MessageListReq) (*v1.MessageListRes, error) // CreateAnnouncement 创建公告 CreateAnnouncement(ctx context.Context, req *v1.AnnouncementCreateReq) (*v1.AnnouncementCreateRes, error) // UpdateAnnouncement 更新公告 UpdateAnnouncement(ctx context.Context, req *v1.AnnouncementUpdateReq) (*v1.AnnouncementUpdateRes, error) // ListAnnouncements 获取公告列表(分页) ListAnnouncements(ctx context.Context, req *v1.AnnouncementListReq) (*v1.AnnouncementListRes, error) // PublishAnnouncement 发布公告 PublishAnnouncement(ctx context.Context, req *v1.AnnouncementPublishReq) (*v1.AnnouncementPublishRes, error) // ArchiveAnnouncement 归档公告 ArchiveAnnouncement(ctx context.Context, req *v1.AnnouncementArchiveReq) (*v1.AnnouncementArchiveRes, error) // ListOrders 获取全部订单列表 ListOrders(ctx context.Context, req *v1.OrderListReq) (*v1.OrderListRes, error) // GetOrder 获取订单详情 GetOrder(ctx context.Context, req *v1.OrderDetailReq) (*v1.OrderDetailRes, error) // RefundOrder 发起退款(线上侧一步完成:状态流转 + 权益收回;渠道打款由管理员线下原路退回)。 // // 退款语义(与《系统货币规则》对齐): // - 退款认订单原始 CNY 金额(ord_ 层永远 CNY),线下按此金额原路退给用户; // - 已履约的充值订单必须按【履约当时入账的 USD】原额扣回钱包(从入账流水取值, // 禁止按当前汇率反算,防止汇率波动套利); // - 已履约的套餐订单撤销对应的活跃订阅; // - 已支付未履约(paid)的订单权益尚未发放,仅做状态流转。 RefundOrder(ctx context.Context, req *v1.OrderRefundReq) (*v1.OrderRefundRes, error) // OrderComplete 手动完成订单 OrderComplete(ctx context.Context, req *v1.OrderCompleteReq) (*v1.OrderCompleteRes, error) // GetPaymentChannels 获取所有渠道配置(单例模式,从 sys_options 读取) GetPaymentChannels(ctx context.Context, _ *v1.PaymentChannelListReq) (*v1.PaymentChannelListRes, error) // SavePaymentChannel 保存指定渠道的配置(整体覆盖) SavePaymentChannel(ctx context.Context, req *v1.PaymentChannelSaveReq) (*v1.PaymentChannelSaveRes, error) // GetPaymentSettings 获取全局支付设置。 GetPaymentSettings(ctx context.Context, _ *v1.PaymentSettingsGetReq) (*v1.PaymentSettingsGetRes, error) // UpdatePaymentSettings 更新全局支付设置。 UpdatePaymentSettings(ctx context.Context, req *v1.PaymentSettingsUpdateReq) (*v1.PaymentSettingsUpdateRes, error) // ExportOrders exports order list to CSV or Excel. ExportOrders(ctx context.Context, req *v1.OrderExportReq) (*v1.OrderExportRes, error) // GetUserPermissions returns permission points and data scopes for an admin user. GetUserPermissions(ctx context.Context, req *v1.AdminPermissionListReq) (*v1.AdminPermissionListRes, error) // UpdateUserPermissions updates permission points for an admin user. UpdateUserPermissions(ctx context.Context, req *v1.AdminPermissionUpdateReq) (*v1.AdminPermissionUpdateRes, error) // GetAllPermissions returns all predefined permission groups plus tier metadata. // // 同时返回权限点分组(高级模式用)与「模块 × 档位」元数据(默认配置界面用): // 二者是同一份数据的两个视图,由后端统一给出,避免前端复刻一份档位定义造成漂移。 GetAllPermissions(ctx context.Context, _ *v1.AdminAllPermissionsReq) (*v1.AdminAllPermissionsRes, error) // ListPlans 获取套餐列表 ListPlans(ctx context.Context, req *v1.PlanListReq) (*v1.PlanListRes, error) // GetPlan 获取套餐详情 GetPlan(ctx context.Context, req *v1.PlanDetailReq) (*v1.PlanDetailRes, error) // CreatePlan 创建套餐 CreatePlan(ctx context.Context, req *v1.PlanCreateReq) (*v1.PlanCreateRes, error) // UpdatePlan 更新套餐 UpdatePlan(ctx context.Context, req *v1.PlanUpdateReq) (*v1.PlanUpdateRes, error) // ArchivePlan 下架套餐(软删除) ArchivePlan(ctx context.Context, req *v1.PlanArchiveReq) (*v1.PlanArchiveRes, error) // ToggleRecommend 切换推荐标记 ToggleRecommend(ctx context.Context, req *v1.PlanToggleRecommendReq) (*v1.PlanToggleRecommendRes, error) // ExportPlans exports plan list to CSV or Excel. ExportPlans(ctx context.Context, req *v1.PlanExportReq) (*v1.PlanExportRes, error) PluginList(ctx context.Context, req *v1.PluginListReq) (*v1.PluginListRes, error) PluginDetail(ctx context.Context, req *v1.PluginDetailReq) (*v1.PluginDetailRes, error) PluginInstall(ctx context.Context, req *v1.PluginInstallReq) (*v1.PluginInstallRes, error) PluginEnable(ctx context.Context, req *v1.PluginEnableReq) (*v1.PluginEnableRes, error) PluginDisable(ctx context.Context, req *v1.PluginDisableReq) (*v1.PluginDisableRes, error) PluginUninstall(ctx context.Context, req *v1.PluginUninstallReq) (*v1.PluginUninstallRes, error) PluginUpgrade(ctx context.Context, req *v1.PluginUpgradeReq) (*v1.PluginUpgradeRes, error) PluginConfigUpdate(ctx context.Context, req *v1.PluginConfigUpdateReq) (*v1.PluginConfigUpdateRes, error) PluginConfigSchema(ctx context.Context, req *v1.PluginConfigSchemaReq) (*v1.PluginConfigSchemaRes, error) // ListPromoCodes 获取优惠码列表 ListPromoCodes(ctx context.Context, req *v1.PromoCodeListReq) (*v1.PromoCodeListRes, error) // CreatePromoCode 创建优惠码 CreatePromoCode(ctx context.Context, req *v1.PromoCodeCreateReq) (*v1.PromoCodeCreateRes, error) // UpdatePromoCode 更新优惠码 UpdatePromoCode(ctx context.Context, req *v1.PromoCodeUpdateReq) (*v1.PromoCodeUpdateRes, error) // GetPromoCodeUsages 获取优惠码使用记录 GetPromoCodeUsages(ctx context.Context, req *v1.PromoCodeUsagesReq) (*v1.PromoCodeUsagesRes, error) // ExportPromoCodes exports promo code list to CSV or Excel. ExportPromoCodes(ctx context.Context, req *v1.PromoCodeExportReq) (*v1.PromoCodeExportRes, error) // ListRedemptions 获取兑换码列表 ListRedemptions(ctx context.Context, req *v1.RedemptionListReq) (*v1.RedemptionListRes, error) // BatchCreateRedemptions 批量生成兑换码 BatchCreateRedemptions(ctx context.Context, req *v1.RedemptionCreateReq) (*v1.RedemptionCreateRes, error) // DisableRedemption 禁用兑换码 DisableRedemption(ctx context.Context, req *v1.RedemptionDisableReq) (*v1.RedemptionDisableRes, error) // ListRedemptionUsages 获取兑换码使用记录 ListRedemptionUsages(ctx context.Context, req *v1.RedemptionUsagesReq) (*v1.RedemptionUsagesRes, error) // ExportRedemptions exports redemption list to CSV or Excel. ExportRedemptions(ctx context.Context, req *v1.RedemptionExportReq) (*v1.RedemptionExportRes, error) // AssignUserRoles 为管理员分配角色(全量覆盖)。 AssignUserRoles(ctx context.Context, req *v1.AdminUserRoleAssignReq) (*v1.AdminUserRoleAssignRes, error) // GetUserRoles 查询管理员已分配的角色。 GetUserRoles(ctx context.Context, req *v1.AdminUserRoleListReq) (*v1.AdminUserRoleListRes, error) // ListRoles 返回角色列表(角色数量少,不分页)。 ListRoles(ctx context.Context, _ *v1.AdminRoleListReq) (*v1.AdminRoleListRes, error) // GetRoleDetail 返回角色详情,同时给出权限点全集与按模块归纳的档位视图。 GetRoleDetail(ctx context.Context, req *v1.AdminRoleDetailReq) (*v1.AdminRoleDetailRes, error) // CreateRole 新建角色。权限可直接给出,也可从现有角色复制。 CreateRole(ctx context.Context, req *v1.AdminRoleCreateReq) (*v1.AdminRoleCreateRes, error) // UpdateRole 更新角色的名称、说明、排序与权限(code 不可修改)。 UpdateRole(ctx context.Context, req *v1.AdminRoleUpdateReq) (*v1.AdminRoleUpdateRes, error) // UpdateRoleStatus 启用/禁用角色。禁用后该角色的权限对全部关联用户立即失效。 UpdateRoleStatus(ctx context.Context, req *v1.AdminRoleStatusUpdateReq) (*v1.AdminRoleStatusUpdateRes, error) // DeleteRole 删除角色,并在同一事务内级联清理其权限行与用户关联。 // // 无外键,级联必须由业务层完成,否则会留下悬空的权限行与用户关联。 // 预置角色同样可删:is_builtin 只标识来源,不构成删除保护。 // // 不存在把自己锁死的风险 —— 超级管理员由 sys_admin_users.role 判定并短路鉴权, // 不依赖任何角色记录,即便角色被删光也能登录并重建,因此不设「至少保留一个角色」的约束。 DeleteRole(ctx context.Context, req *v1.AdminRoleDeleteReq) (*v1.AdminRoleDeleteRes, error) // ResetRoleDefaults 把预置角色的权限恢复为出厂默认值。 ResetRoleDefaults(ctx context.Context, req *v1.AdminRoleResetReq) (*v1.AdminRoleResetRes, error) // Verify2FA handles the 2FA verification step during admin login. Verify2FA(ctx context.Context, req *v1.Admin2FAVerifyReq) (*v1.Admin2FAVerifyRes, error) // Setup2FA starts the 2FA setup process for the current admin user. Setup2FA(ctx context.Context, _ *v1.Admin2FASetupReq) (*v1.Admin2FASetupRes, error) // Enable2FA confirms and enables 2FA after verifying the code. Enable2FA(ctx context.Context, req *v1.Admin2FAEnableReq) (*v1.Admin2FAEnableRes, error) // Disable2FA disables 2FA for the current admin user. Disable2FA(ctx context.Context, req *v1.Admin2FADisableReq) (*v1.Admin2FADisableRes, error) // RegenerateBackupCodes generates new backup codes. RegenerateBackupCodes(ctx context.Context, req *v1.Admin2FARegenerateBackupCodesReq) (*v1.Admin2FARegenerateBackupCodesRes, error) // ConfirmHighRisk generates a confirm token for high-risk operations. ConfirmHighRisk(ctx context.Context, req *v1.Admin2FAConfirmReq) (*v1.Admin2FAConfirmRes, error) // LoginHistory returns the login history for all admin users with search filters. LoginHistory(ctx context.Context, req *v1.AdminLoginHistoryReq) (*v1.AdminLoginHistoryRes, error) // TenantLoginHistory returns login history for tenant users (admin view). TenantLoginHistory(ctx context.Context, req *v1.AdminTenantLoginHistoryReq) (*v1.AdminTenantLoginHistoryRes, error) // GetSettingsCategories returns all available setting categories. GetSettingsCategories(ctx context.Context, _ *v1.AdminSettingsCategoriesReq) (*v1.AdminSettingsCategoriesRes, error) // GetSettings retrieves settings with schema for a given category. GetSettings(ctx context.Context, req *v1.AdminSettingsGetReq) (*v1.AdminSettingsGetRes, error) // UpdateSettings batch-updates settings for a given category. UpdateSettings(ctx context.Context, req *v1.AdminSettingsUpdateReq) (*v1.AdminSettingsUpdateRes, error) // TestStorageConfig 测试对象存储配置连通性:用生成的测试图片走一次「上传 → 下载校验 → 删除」 // 完整往返,验证凭证 / 桶 / 端点 / 读写删权限是否正常。 // // access_key_id / secret 为空或掩码("******")时回落到已保存的配置值——与 GET 接口对敏感字段 // 的掩码逻辑(config.GetCategoryWithValues)以及 Turnstile 校验的 "******" 处理保持一致, // 从而支持管理员在「未点保存」的状态下直接测试表单中新填/改动的配置。 TestStorageConfig(ctx context.Context, req *v1.AdminStorageTestReq) (*v1.AdminStorageTestRes, error) // TestEmailConfig 发送一封测试邮件,验证 SMTP 配置是否可用。 // // 与 TestStorageConfig 同构:请求体携带表单中的邮件配置(可能尚未保存),字段为空或为掩码 // "******" 时回落到已保存的值,从而支持管理员在「未点保存」的状态下直接测试改动。 // 收件人留空时发送给当前登录管理员的邮箱。 // // 使用 SendOnce 而非 Send:连通性测试要快速拿到真实 SMTP 错误(认证失败、端口不通重试 // 三次也不会变好),不该让管理员多等十几秒的退避。 TestEmailConfig(ctx context.Context, req *v1.AdminEmailTestReq) (*v1.AdminEmailTestRes, error) // GetSupportPendingSummary 顶栏铃铛待办计数。 GetSupportPendingSummary(ctx context.Context, _ *v1.AdminSupportPendingSummaryReq) (*v1.AdminSupportPendingSummaryRes, error) // TaskList 大模型异步任务列表 TaskList(ctx context.Context, req *v1.TaskListReq) (*v1.TaskListRes, error) // TaskDetail 大模型异步任务详情 TaskDetail(ctx context.Context, req *v1.TaskDetailReq) (*v1.TaskDetailRes, error) // TaskCancel 取消大模型异步任务 TaskCancel(ctx context.Context, req *v1.TaskCancelReq) (*v1.TaskCancelRes, error) // TenantSelect returns a lightweight paginated tenant list for dropdown selectors. TenantSelect(ctx context.Context, req *v1.TenantSelectReq) (*v1.TenantSelectRes, error) // CreateTenant creates a new tenant with its owner user and wallet. CreateTenant(ctx context.Context, req *v1.TenantCreateReq) (*v1.TenantCreateRes, error) // ListTenants returns a paginated list of tenants. ListTenants(ctx context.Context, req *v1.TenantListReq) (*v1.TenantListRes, error) // GetTenant returns detail of a single tenant. GetTenant(ctx context.Context, req *v1.TenantGetReq) (*v1.TenantGetRes, error) // UpdateTenantStatus updates a tenant's status. UpdateTenantStatus(ctx context.Context, req *v1.TenantUpdateStatusReq) (*v1.TenantUpdateStatusRes, error) // UpdateTenant updates tenant information. UpdateTenant(ctx context.Context, req *v1.TenantUpdateReq) (*v1.TenantUpdateRes, error) // UpdateTenantChannelScope 更新租户默认渠道范围 UpdateTenantChannelScope(ctx context.Context, req *v1.TenantChannelScopeUpdateReq) (*v1.TenantChannelScopeUpdateRes, error) // ExportTenants exports tenant list to CSV or Excel. ExportTenants(ctx context.Context, req *v1.TenantExportReq) (*v1.TenantExportRes, error) // TenantApiKeySelect 租户 API Key 下拉选择列表(轻量,不返回密钥原值)。 // 供渠道调试目标过滤等管理端选择器使用;user_id > 0 时按创建者过滤。 // 注意:Fields 不能挂在 Count 之前的模型上——gdb 会生成 COUNT(col1, col2, ...), // PostgreSQL 的 count 只接受单参数,会直接报错。 TenantApiKeySelect(ctx context.Context, req *v1.TenantApiKeySelectReq) (*v1.TenantApiKeySelectRes, error) ListTenantLevelConfigs(ctx context.Context, _ *v1.TenantLevelConfigListReq) (*v1.TenantLevelConfigListRes, error) CreateTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigCreateReq) (*v1.TenantLevelConfigCreateRes, error) UpdateTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigUpdateReq) (*v1.TenantLevelConfigUpdateRes, error) DeleteTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigDeleteReq) (*v1.TenantLevelConfigDeleteRes, error) // ListTenantModels 列出租户已分配的模型 ListTenantModels(ctx context.Context, req *v1.TenantModelListReq) (*v1.TenantModelListRes, error) // BatchAssignModels 批量分配模型给租户 BatchAssignModels(ctx context.Context, req *v1.TenantModelBatchAssignReq) (*v1.TenantModelBatchAssignRes, error) // UpdateTenantModel 更新租户模型配置 UpdateTenantModel(ctx context.Context, req *v1.TenantModelUpdateReq) (*v1.TenantModelUpdateRes, error) // DeleteTenantModel 移除租户模型分配 DeleteTenantModel(ctx context.Context, req *v1.TenantModelDeleteReq) (*v1.TenantModelDeleteRes, error) // ListTenantAvailableModels 预览租户实际可用的所有模型(显式分配 + 分组来源,去重) ListTenantAvailableModels(ctx context.Context, req *v1.TenantAvailableModelsPreviewReq) (*v1.TenantAvailableModelsPreviewRes, error) // ListAllTickets 获取全部工单列表(管理后台) ListAllTickets(ctx context.Context, req *v1.TicketListReq) (*v1.TicketListRes, error) // GetTicketAdmin 获取工单详情(管理后台,含回复) GetTicketAdmin(ctx context.Context, req *v1.TicketGetReq) (*v1.TicketGetRes, error) // AssignTicket 分配工单给管理员 AssignTicket(ctx context.Context, req *v1.TicketAssignReq) (*v1.TicketAssignRes, error) // ReplyToTicketAdmin 管理员回复工单 ReplyToTicketAdmin(ctx context.Context, req *v1.TicketReplyReq) (*v1.TicketReplyRes, error) // UpdateTicketStatus 更新工单状态 UpdateTicketStatus(ctx context.Context, req *v1.TicketStatusUpdateReq) (*v1.TicketStatusUpdateRes, error) // CheckUpdate checks GitHub Releases for a newer version UpdateCheck(ctx context.Context, req *v1.UpdateCheckReq) (*v1.UpdateCheckRes, error) // GetUpdateStatus returns the current update status UpdateStatus(ctx context.Context, req *v1.UpdateStatusReq) (*v1.UpdateStatusRes, error) // ExecuteUpdate triggers the system update UpdateExecute(ctx context.Context, req *v1.UpdateExecuteReq) (*v1.UpdateExecuteRes, error) // RollbackUpdate rolls back to the previous version UpdateRollback(ctx context.Context, req *v1.UpdateRollbackReq) (*v1.UpdateRollbackRes, error) UsageLogCleanupCreate(ctx context.Context, req *v1.UsageLogCleanupCreateReq) (*v1.UsageLogCleanupCreateRes, error) UsageLogCleanupList(ctx context.Context, req *v1.UsageLogCleanupListReq) (*v1.UsageLogCleanupListRes, error) UsageLogCleanupCancel(ctx context.Context, req *v1.UsageLogCleanupCancelReq) (*v1.UsageLogCleanupCancelRes, error) // GetWorkbenchSummary 工作台汇总。 GetWorkbenchSummary(ctx context.Context, _ *v1.AdminWorkbenchSummaryReq) (*v1.AdminWorkbenchSummaryRes, error) // GetWorkbenchBadges 工作台菜单角标计数(与 summary 共用缓存,不额外压库)。 // // 角标只挂工作台菜单一项:待办的排查线索只存在于工作台的描述文案里, // 业务菜单里没有对应的定位入口,往各业务菜单挂数字只会带来 // 「进去了却找不到问题」的困惑(红点引路却无路可走)。 GetWorkbenchBadges(ctx context.Context, _ *v1.AdminWorkbenchBadgeReq) (*v1.AdminWorkbenchBadgeRes, error) } ) var ( localAdmin IAdmin ) func Admin() IAdmin { if localAdmin == nil { panic("implement not found for interface IAdmin, forgot register?") } return localAdmin } func RegisterAdmin(i IAdmin) { localAdmin = i }