[0.4.0-beta] - 2026-06-01
🚀 GEO 监测报告生成器 + 客户端 dev/prod 双 scheme 隔离 + 网媒打标 V2 + portal 部署稳定性
本版本主线是面向客户的 GEO 监测报告全新功能:从监测中心一键生成图文结合、可白标、可流式生成、可导出 PDF 的售前/汇报报告(独立 BrowserWindow + V2 麦肯锡风模板 + Paged.js 真实分页 + Electron printToPDF)。同时落地了三块基础设施重构:① 客户端 dev/prod 双 scheme 隔离(insclaw:// / insclaw-dev://),让开发者本机 dev Electron + prod InsClaw 同时运行时 macOS LaunchServices 不再错投递 deep link;② 网媒打标任务中心 V2(持久化 + 互斥锁 + 失败队列 + worker pool 并发 + Gemini 3)+ 单轨化清理;③ portal 与 server 的部署稳定性全套修复(trust proxy + 真实 IP 转发 + IPv6 rate-limit 归并 + Next-Action 拦截 + 字体本地化)。
Added
- GEO 监测报告生成器(efe34ee → cfd60a2,30+ 提交):监测任务面板底部新增"生成监测报告"主按钮,点击后异步任务后台跑,进度通过
report-task:*IPC 实时推到面板;完成后用户主动点"查看报告"打开独立 BrowserWindow 加载主进程渲染的 V2 模板 HTML(顶层文档,@page分页 / Paged.js polyfill /printToPDF才能正确生效)。报告结构:封面 + 执行摘要 + 8 章正文(信息可见度 / 情感归因 / 竞争生态 / 内容生态 / 趋势对比 / 提及深度 / 行动总分总 / 诊断聚合),其中 brand / sentiment / competitor / ecosystem / trend / mentionDepth / action / diagnosis 八个 Agent 章节均按"总分总"叙述(图下判断 + per-platform 引述)。技术亮点:① viewModel 契约单一真源,确定性数据 + LLM JSON narrative 严格分层;② Handlebars + partial 主壳模板工程化,每章独立 partial;③ Paged.js 0.4.3 屏幕预览 ≡ PDF 导出(@page running header、string-set chapter-label、@top-left/@bottom-right 页眉页脚、break-before/break-inside avoid 守护单卡片);④ 失败章节单独重试面板(不消耗报告额度);⑤ 本地数据为空的章节跳过 LLM 调用,直接渲染统一空状态占位(chapterEmpty);⑥ per-platform 信源层确定性扩展(reportNormalize.js)+ enriched 全量并入避免内容生态等章节空白;⑦ PDF 导出走webContents.printToPDF+ 保存对话框;⑧ 白标配置支持自定义品牌/Logo/页眉页脚,0.4.0-beta 暂时隐藏入口(HIDE_WHITELABEL_ENTRY flag)但底层管线完整保留;⑨ 错误页 + 重试取代 V1 React 回退路径(loadFile 失败时显示明确错误页,单一渲染方案唯一性);⑩ 端到端契约测试tests/test-report-*.js钉死生成清单 ↔ V2 模板不漂移。 - 客户端 dev/prod 双 scheme 隔离 deep link(e7c8501 + 139354a + eaa2900):
src/main/services/protocolHandler.js新增getScheme()(按app.isPackaged派生insclaw://或insclaw-dev://)+installProtocolHandler({ isDev })单一收口;package.jsonbuild.protocols[0].schemes永久只列 prod schemeinsclaw,dev scheme 仅运行时setAsDefaultProtocolClient注册(永远不写 plist)。portaldesktop-login白名单同时允许两类 callback。永久红线:prod scheme 是项目级永久契约,等同于 API URL;线上跨用户碎片化(v0.3.x / v0.4.0 同时在用)是常态,改 prod scheme = 让所有未升级旧客户端登录全断。详见docs/系统部署与协同手册.md§7 不变式 #6。 - 网媒打标任务中心 V2(29cf263):持久化任务表 + 启动互斥锁(防止同 catalog 并发打标污染)+ 失败队列(自动重试 + 手动重跑) + 任务详情抽屉 UI(实时刷新节点状态 / 滚动加载更多 / 「正在打标」徽章)。
- 行动方案推荐快照持久化 + 发布弹窗双分组重塑(5737ac1):用户在 Dashboard 看到的"推荐行动"会持久化到磁盘,刷新后保留;发布弹窗按"推荐 / 已订阅"双分组展示,避免长列表淹没。
- Dashboard 卡片标题旁"问号说明"浮层(f071aa3):所有 KPI 卡片支持 hover 显示口径定义,不再需要查文档。
- portal/bff SSR 全链路转发访客真实 IP(eba1a17):portal 作为 BFF 转发到 server 时,把
x-forwarded-for链路完整透传,server 端的 rate-limit / 审计能拿到真实访客 IP。
Changed
- 网媒打标交互大重构(ed18cf6 + 73d6474 + 00dc2b8 + cc19b4d):① 打标改为逐条调用 + worker pool 并发(替代旧的批量单次大请求) + Gemini 3 模型;② admin-ui 打标交互降级为目录管理的批量操作,去掉抽屉/Modal 化;③ 清理打标任务中心双轨期残留(V1 旧路径 + V2 新路径),统一为单轨实现;④ 打标候选不再硬编码屏蔽百家号(业务策略从代码下沉到运营配置)。
- portal/fonts 中文字体改用系统字体栈(4be4cad):移除 Google Fonts 运行时依赖,国内访问 portal 不再被字体加载阻塞首屏。
- server/trust-proxy + 客户端 IP 抽取统一(a06e35d + 232a921):Express
app.set('trust proxy', ...)启用,新增lib/getClientIp.js单一收口;rate-limitkeyGenerator用ipKeyGenerator归并 IPv6 子网(000af0e),避免一个 IPv6 用户拿满整个 /64 段绕过限流。 - 下线 V1 React 报告渲染路径(24aad35):报告窗口统一加载主进程渲染的 V2 HTML 作为唯一方案,去掉 React 路由回退分支。
- 章节集合对齐 V2 模板(f2ca4ad):下线两个孤儿章节,生成清单严格 == 模板 partial 集合,进度计数全链路对齐。
- 报告卡片在刚生成完保留执行摘要 + KPI 数据摘要(00e7aa9):发起者面板 done 态优先用 hook 内存里的
task.results,避免被持久化快照"抢先命中"退化成"封面 + 按钮"。
Fixed
- auth / 登录后偶发卡 needActivation 自动恢复(6c8640e):
SessionContext在'authorized'事件后做一次入口 entitlement 自检,发现状态卡死时自动重新拉取,不再需要手动重启客户端。 - auth / offline_expired 退回登录页 + toast(2462226):离线 token 过期时不再停在激活页,而是回退到登录页 + 顶部 toast 提示用户重新扫码登录。
- portal/middleware 拦截扫描器伪造的 Next-Action POST 请求(6c5ce03):避免 Next.js Server Actions 被外部恶意构造调用。
- profiling/stats 500(6dc9a06 + bc60f7d):SQL 别名反引号化 + 错误细节透传定位 500 根因;后续 c812ebe 切回标准
_sendProfilingError收口。 - profiling 任务详情多个 race(c51b32c + 55b1904 + 1d5b5e5):① 滚动加载在快速切 filter 时的 race;② 任务运行中详情列表不再"折叠后展开";③ 任务详情深页节点 status 不刷新。
- network-media/catalog 编辑/新增媒体时同步 profiling_status(aab494d):避免老媒体被改后打标状态错位。
- admin-ui/network-media 统一打标按钮口径(fab1f8b):补全勾选打标警示,避免误触发大批量任务。
- report 系列稳定性修复:① PDF 导出与 Paged.js 页眉页脚稳定性(3c6964f);② 品牌缺席时情感分布不再误判中性 100%(56e5a8d);③ 前端生成进度步骤对齐当前章节结构(13fb167)。
- report / 暂时隐藏「白标设置」入口(cfd60a2):监测任务面板"生成监测报告"按钮下方的"白标设置"折叠按钮 + 展开面板暂时隐藏(仅 UI,保留 state / brandConfig payload 兜底走默认品牌),后续品牌定制功能上线时移除 HIDE_WHITELABEL_ENTRY flag 即可恢复。
Removed
- 下线 V1 React 报告渲染路径(24aad35):报告窗口不再回退到 React 路由,渲染失败统一显示错误页 + 重试按钮。
- 清理网媒打标任务中心双轨期残留(00dc2b8):V1 旧路径完全移除,统一为 V2 单轨。
- profiling 批量打标 dry_run 模式(d4c1300):实际从未启用,下线减少分支。