63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
/* =========================================================================
|
|
Insurance Plan AI - 启动入口
|
|
========================================================================= */
|
|
|
|
import { goStep, buildStepsNav, toast } from './steps.js';
|
|
import { state } from './state.js';
|
|
import { getSession } from './api.js';
|
|
|
|
// 启动时挂载顶部步骤指示器
|
|
document.addEventListener('DOMContentLoaded', async () => {
|
|
if (location.protocol === 'file:') {
|
|
toast('已检测到本地文件模式,页面将自动连接 http://localhost:3000 的后端服务', 'info');
|
|
}
|
|
|
|
// 1) 步骤指示器
|
|
const navHost = document.getElementById('stepsNavHost');
|
|
if (navHost) navHost.innerHTML = buildStepsNav();
|
|
|
|
// 2) 默认进入 upload 屏
|
|
goStep('upload');
|
|
|
|
// 3) 如果有 sessionId 在 URL 上 (从分享链接回来), 自动恢复
|
|
const params = new URLSearchParams(location.search);
|
|
const sid = params.get('session');
|
|
if (sid) {
|
|
try {
|
|
const session = await getSession(sid);
|
|
state.sessionId = sid;
|
|
state.extractions = session.extractions || [];
|
|
state.files = (session.files || []).map((f) => ({
|
|
file: { name: f.name, size: 0 },
|
|
type: f.type || 'savings',
|
|
}));
|
|
if (session.status === 'parsed' && state.extractions.length > 0) {
|
|
const last = (session.chatHistory || []).slice(-1)[0];
|
|
state.initialChatMsg = last?.content || '';
|
|
toast('已恢复上次会话', 'success');
|
|
goStep('chat');
|
|
} else if (session.status === 'done' && session.hasPpt) {
|
|
state.downloadUrl = session.downloadUrl || '';
|
|
state.markdownUrl = session.markdownUrl || '';
|
|
state.previewUrls = session.previewUrls || [];
|
|
state.previewPdfUrl = session.previewPdfUrl || '';
|
|
state.slideCount = session.slideCount || 0;
|
|
state.resultFilename = (() => {
|
|
try {
|
|
const parsed = new URL(session.downloadUrl, location.origin);
|
|
return decodeURIComponent(parsed.pathname.split('/').pop() || 'plan.pptx');
|
|
} catch {
|
|
return 'plan.pptx';
|
|
}
|
|
})();
|
|
goStep('result');
|
|
} else if (session.status === 'parsing') {
|
|
goStep('parsing');
|
|
setTimeout(() => window.__triggerParse?.(), 300);
|
|
}
|
|
} catch (err) {
|
|
console.warn('恢复会话失败:', err);
|
|
}
|
|
}
|
|
});
|