package com.nanri.aiimage.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; /** * 用户 API 密钥(外观专利密钥 / 货源查询密钥)服务端化配置。 */ @Data @ConfigurationProperties(prefix = "aiimage.user-secret") public class UserSecretProperties { /** 每日定时连通性巡检开关(应急可关,无需重新打包)。 */ private boolean checkEnabled = true; /** 巡检 cron(默认每天 04:30,Asia/Shanghai)。 */ private String checkCron = "0 30 4 * * *"; /** 单轮巡检最多检测条数,超出顺延下一轮。 */ private int checkMaxRows = 500; /** 单轮巡检时间预算(分钟),超时中断本轮。 */ private int checkBudgetMinutes = 20; /** * 检测请求使用的 LLM 模型:独立于业务任务模型(业务用 gemini-3.8-flash 等), * 选便宜的可用模型,只验证密钥有效性与链路连通,降低每次检测与巡检的成本。 * 用 lite 而非 mini:mini 在中继分组下无可用渠道(503 model_not_found),实测 lite 可路由。 */ private String checkModel = "doubao-seed-2-0-lite-260215"; /** * 检测出口代理提取链接(选配):配置后检测请求优先经该代理 IP 发出, * 代理不可用时自动回退直连;留空则全部直连。 */ private String checkProxyExtractUrl = ""; /** jikip 余量查询接口(客户端设置弹窗展示套餐 IP 余量 / 账户余额)。 */ private String jikipBalanceUrl = "https://api.jikip.com/find-balance"; /** jikip 套餐 id(余量查询参数)。 */ private String jikipPlanId = ""; /** jikip 用户 ID(余量查询参数)。 */ private String jikipUserId = ""; /** * 巡检发现欠费/密钥失效时是否推送站内通知(桌面端用户 + 后台管理员); * 关闭后巡检只更新检测状态、不发通知(应急降噪开关)。 */ private boolean notifyEnabled = true; }