Skip to content

1#87

Merged
yxz6811 merged 26 commits intoyxzfrom
main
Apr 16, 2026
Merged

1#87
yxz6811 merged 26 commits intoyxzfrom
main

Conversation

@yxz6811
Copy link
Copy Markdown
Collaborator

@yxz6811 yxz6811 commented Apr 16, 2026

1

jiangmuran and others added 26 commits April 9, 2026 15:45
设计:
- 11个步骤全部可见,垂直排列
- 完成的步骤: 绿色圆点+绿色连线+绿色文字
- 当前步骤: 红色大圆点+发光+粗体+展开描述
- 待处理步骤: 灰色小圆点+灰色文字
- 步骤间有垂直连线

辩论阶段(step 8):
- 展开显示辩论实况气泡(彩色边框)
- 每条辩论消息逐条显示

裁判阶段(step 9):
- 展开显示"综合裁判正在评定..."脉冲动画

底部:
- 进度条移到顶部(紧凑)
- 数据洞察+猜一猜在时间线下方
- SHA-512 密码验证(硬编码hash)
- 统计面板: 训练笔记数/诊断次数/基线品类/系统内存
- 品类分布条形图
- 品类互动数据表(平均赞/藏/评/爆款率)
- 最近10条诊断记录表
- 纯HTML+JS内联,无额外依赖
- SPA middleware排除/admin路径
usage_log表:
- ip/action/title/category/total_tokens/duration_sec/status/created_at
- 每次诊断自动记录(IP通过X-Forwarded-For提取)

Admin面板(noterx.muran.tech/admin):
- 今日诊断/今日UV/总诊断/总UV/总Token/平均耗时
- 24h请求分布柱状图
- 品类诊断分布条形图
- Top IP排行(次数+占比)
- 最近20条诊断列表(时间/IP/标题/品类/Token/耗时/状态)
- 系统内存监控
根因:
1. report里没有token数据(model_a_pre_score是纯数学不消耗token)
2. /api/diagnose-stream没有记日志(大部分用户走这个)

修复:
- orchestrator: result['_usage'] = {total_tokens, duration_sec}
- /api/diagnose: 从_usage读token(不再从model_a_pre_score)
- /api/diagnose-stream: 也记录usage日志
- 新增 docs/terms.html 服务条款页面(中文,含服务说明、免责声明、数据说明等)
- 新增 docs/privacy.html 隐私政策页面(中文,含信息收集、本地存储、匿名数据等)
- backend/app/main.py 添加 /terms 和 /privacy 路由,排除 SPA 中间件拦截
- frontend Home.tsx 桌面端底部添加服务条款和隐私政策链接
- frontend vite.config.ts 添加 /terms 和 /privacy 的开发代理
之前: 只尝试去code fence + json.loads, 失败就返回error
现在: 4级fallback:
1) 去code fence + json.loads
2) _parse_json_from_llm_text(处理思考标签/raw_decode/多候选)
3) 手动找第一个{...}
4) 全失败则打原始输出前300字到日志(便于排查)
S1 Admin时序攻击: == 改为 hmac.compare_digest
S2 CORS过宽: allow_origins=* → 限制到noterx.muran.tech+localhost
S4 Admin XSS: 所有动态值加esc()HTML转义
S6 History数据泄露: 禁用服务端history路由(前端已用IndexedDB)
B1 SQLite连接泄漏: admin_api加try/finally确保conn.close()
1. submitError不自动消失: 用户修复条件(上传文件/输入标题)后错误提示仍在
   → useEffect监听files.length和title变化自动清空

2. SimulatedComments崩溃: report.simulated_comments为undefined时initial.map()抛错
   → (initial || []).map()

3. AgentDebate崩溃: report.agent_opinions为undefined时opinions.map()抛错
   → 传入时加 || []

4. SimulatedComments同上: report.simulated_comments || []

5. SuggestionList同上: report.suggestions || []
根因: 浏览器bfcache恢复页面时不重新执行JS(IIFE), overlay保持全屏红色
修复: 改用window.addEventListener('pageshow'), bfcache恢复时也触发, 立即重置overlay
根因: prompt要求嵌套JSON(publisher:{name,follower_count}+engagement_signal:{...})
模型被搞晕,输出slot_type=other且字段打散到顶层

修复:
1. prompt大幅精简: 去掉嵌套结构,只要求平铺字段
   旧: 118行prompt + 复杂嵌套JSON schema
   新: 20行prompt + 7个平铺字段
2. 后端兼容: 如果模型返回flat的likes/name,自动转成engagement_signal/publisher
3. slot_type判断规则更简洁明确
- 新增 AnnouncementDialog 组件,首次访问弹出公益声明
- 声明项目免费开源、广告位招租、有偿合作信息
- 展示产品数据(百万曝光/10万日流量)及 GitHub、主页链接
- 首页导航栏新增邮件联系按钮
- 首页桌面端 footer 追加 GitHub 和合作邮箱
- 报告页底部追加公益声明和联系方式
@yxz6811 yxz6811 merged commit e741f44 into yxz Apr 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants