()
| 265 | } |
| 266 | |
| 267 | async function runSessionBootstrap() { |
| 268 | const accountId = Number(document.getElementById("account-select")?.value || 0); |
| 269 | if (!accountId) { |
| 270 | toast.warning("请先选择账号"); |
| 271 | return; |
| 272 | } |
| 273 | setButtonLoading("session-bootstrap-btn", "补全中...", true); |
| 274 | showSessionDiagnosticPanel("正在执行会话补全,请稍候(可能需要等待邮箱验证码)..."); |
| 275 | try { |
| 276 | const data = await api.post(`/payment/accounts/${accountId}/session-bootstrap`, {}); |
| 277 | if (data?.success) { |
| 278 | toast.success(`会话补全成功(len=${data?.session_token_len || 0})`); |
| 279 | } else { |
| 280 | toast.warning(data?.message || "会话补全未命中"); |
| 281 | } |
| 282 | await runSessionDiagnostic(); |
| 283 | } catch (error) { |
| 284 | const message = formatErrorMessage(error); |
| 285 | showSessionDiagnosticPanel(`会话补全失败: ${message}`); |
| 286 | toast.error(`会话补全失败: ${message}`); |
| 287 | } finally { |
| 288 | setButtonLoading("session-bootstrap-btn", "补全中...", false); |
| 289 | } |
| 290 | } |
| 291 | |
| 292 | async function saveManualSessionToken() { |
| 293 | const accountId = Number(document.getElementById("account-select")?.value || 0); |
nothing calls this directly
no test coverage detected