(payload)
| 192 | } |
| 193 | |
| 194 | function formatSessionDiagnosticPayload(payload) { |
| 195 | if (!payload || typeof payload !== "object") { |
| 196 | return "诊断结果为空"; |
| 197 | } |
| 198 | const token = payload.token_state || {}; |
| 199 | const cookie = payload.cookie_state || {}; |
| 200 | const bootstrap = payload.bootstrap_capability || {}; |
| 201 | const probe = payload.probe || null; |
| 202 | const notes = Array.isArray(payload.notes) ? payload.notes : []; |
| 203 | |
| 204 | const lines = [ |
| 205 | `账号: ${payload.email || "-"} (ID=${payload.account_id || "-"})`, |
| 206 | `Access Token: ${yesNo(token.has_access_token)} | len=${token.access_token_len || 0} | ${token.access_token_preview || "-"}`, |
| 207 | `Refresh Token: ${yesNo(token.has_refresh_token)} | len=${token.refresh_token_len || 0}`, |
| 208 | `Session(DB): ${yesNo(token.has_session_token_db)} | len=${token.session_token_db_len || 0} | ${token.session_token_db_preview || "-"}`, |
| 209 | `Session(Cookie): ${yesNo(token.has_session_token_cookie)} | len=${token.session_token_cookie_len || 0} | ${token.session_token_cookie_preview || "-"}`, |
| 210 | `Session(Resolved): len=${token.resolved_session_token_len || 0} | ${token.resolved_session_token_preview || "-"}`, |
| 211 | `Cookies: ${yesNo(cookie.has_cookies)} | len=${cookie.cookies_len || 0}`, |
| 212 | `oai-did: ${yesNo(cookie.has_oai_did)} | ${cookie.resolved_oai_did || "-"}`, |
| 213 | `Session 分片: count=${cookie.session_chunk_count || 0} | [${(cookie.session_chunk_indices || []).join(", ")}]`, |
| 214 | `自动补会话能力: ${yesNo(bootstrap.can_login_bootstrap)} | has_password=${yesNo(bootstrap.has_password)} | email_service=${bootstrap.email_service_type || "-"}`, |
| 215 | ]; |
| 216 | |
| 217 | if (probe) { |
| 218 | lines.push( |
| 219 | `实时探测: ok=${yesNo(probe.ok)} | http=${probe.http_status ?? "-"} | session=${yesNo(probe.session_token_found)} | session_json_access=${yesNo(probe.access_token_in_session_json)}` |
| 220 | ); |
| 221 | if (probe.session_token_preview) { |
| 222 | lines.push(`探测 session 预览: ${probe.session_token_preview}`); |
| 223 | } |
| 224 | if (probe.access_token_preview) { |
| 225 | lines.push(`探测 access 预览: ${probe.access_token_preview}`); |
| 226 | } |
| 227 | if (probe.error) { |
| 228 | lines.push(`探测错误: ${probe.error}`); |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | if (notes.length) { |
| 233 | lines.push("诊断备注:"); |
| 234 | notes.forEach((n) => lines.push(`- ${n}`)); |
| 235 | } |
| 236 | if (payload.recommendation) { |
| 237 | lines.push(`建议: ${payload.recommendation}`); |
| 238 | } |
| 239 | if (payload.checked_at) { |
| 240 | lines.push(`检查时间: ${payload.checked_at}`); |
| 241 | } |
| 242 | return lines.join("\n"); |
| 243 | } |
| 244 | |
| 245 | async function runSessionDiagnostic() { |
| 246 | const accountId = Number(document.getElementById("account-select")?.value || 0); |
no test coverage detected