feat: 老板台2.0 + 手机端适配 + 专家库 + 智囊入口
CI / 后端测试 (push) Has been cancelled
CI / 前端构建 (push) Has been cancelled

- 老板台: AI执行摘要卡 + 待办优先级排序 + 时间线视图 + 环形健康度
- 手机端: 事项看板折叠列表 + 7个页面响应式修复 + 底部安全边距
- 专家库: 新增用户端专家浏览页(参考管理端卡片风格)
- 智囊入口: 底部Tab加"智囊" + 4个智囊页场景切换栏 + "我"页分组入口
- FAB弹窗: 场景快速入口 + 指令卡片优化 + 输入区sticky
- 后端: /dashboard/summary + /dashboard/timeline API
- 后端: life场景事实维度扩充(2→5) + 17个生活关键词优先级
- 前端: 抑制React DevTools startTime噪音错误

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
selfrelease
2026-08-31 14:11:09 +08:00
co-authored by Devin
parent 4de36547cd
commit dd01d94ade
24 changed files with 1088 additions and 300 deletions
+28 -4
View File
@@ -2327,10 +2327,16 @@ class FactFinder:
"questions": ["预期利润率大约是多少?", "投资回收期预计多长?"]},
],
"life": [
{"key": "context", "desc": "具体情境",
"questions": ["能具体描述一下当前的情况吗?", "最希望解决的核心问题是什么?"]},
{"key": "constraint", "desc": "时间和资源限制",
"questions": ["目前有多少时间可以投入?", "有哪些资源可以利用?"]},
{"key": "situation", "desc": "具体情境",
"questions": ["这件事具体是怎么发生的?能描述一下经过吗?", "最希望解决的核心问题是什么?"]},
{"key": "people", "desc": "涉及的人",
"questions": ["这件事涉及哪些人?他们的态度如何?", "对方目前是什么反应?"]},
{"key": "duration", "desc": "持续时间和频率",
"questions": ["这种情况持续多久了?是偶尔发生还是经常出现?", "上次类似情况是什么时候?"]},
{"key": "attempt", "desc": "已尝试的解决方式",
"questions": ["之前有没有尝试过什么方法来解决?", "效果如何?"]},
{"key": "goal", "desc": "期望的结果",
"questions": ["你期望达到什么样的结果?", "最理想的状态是什么?"]},
],
"emotion": [
{"key": "feeling", "desc": "当前情绪状态",
@@ -2388,6 +2394,24 @@ class FactFinder:
"压力": ["feeling", "trigger"],
"焦虑": ["feeling", "trigger"],
"失眠": ["feeling", "trigger"],
# 生活场景关键词
"夫妻": ["situation", "people", "attempt"],
"吵架": ["situation", "people", "duration"],
"争吵": ["situation", "people", "duration"],
"婚姻": ["situation", "people", "attempt"],
"亲子": ["situation", "people", "duration"],
"孩子": ["situation", "people", "goal"],
"教育": ["situation", "goal", "people"],
"升学": ["situation", "goal", "attempt"],
"养老": ["situation", "people", "attempt"],
"父母": ["situation", "people", "duration"],
"健康": ["situation", "duration", "attempt"],
"体检": ["situation", "goal", "attempt"],
"睡眠": ["situation", "duration", "attempt"],
"出差": ["situation", "duration", "goal"],
"出行": ["situation", "duration", "goal"],
"饮食": ["situation", "duration", "attempt"],
"运动": ["situation", "duration", "goal"],
}
def __init__(self, max_rounds: int = 2, max_questions_per_round: int = 3):