FinAgent 本周进度记录|报告展示升级、走势看板、首页实时新闻与导航改版
日期2026-04-20项目FinAgentFastAPI React/Vite这篇记录我尽量按“真实做事顺序”来写不搞太多流水账模板。简单说这一轮我主要在做三件事一是把报告展示这条链路补完整从“能出文本”到“能读、能点、能导出”二是把“看盘入口”补上走势看板三是把首页从静态介绍页升级为“有实时信息”的工作台入口。这轮我到底做了什么1) 报告体验从“能看”到“像报告”最开始的问题其实很典型后端给的是 Markdown但前端不少地方当普通字符串渲染于是标题、列表、表格都失真。后来又遇到一个坑接口里有些report_markdown是被字符串化过的页面会直接出现\n。这块我最后做了三层处理先把文本标准化反转义再统一走ReactMarkdown remark-gfm链接按阅读习惯做成句尾小标记悬停提示、点击新开页。顺手把报告页导出收敛成默认 PDF 下载移掉了之前那块“搜索与导出”的复杂 UI页面负担小很多。2) 补上走势看板不是只看结论也能看过程用户只看结论会有心理门槛所以我加了“走势看板”支持K 线MA5/MA10/MA30成交量副图另外做了一个默认态不输入代码时先展示 A 股总体以上证指数为参考避免空页面。输入个股代码后再切到个股走势整体路径更自然。3) 首页加实时新闻不再只是“介绍页面”首页新增“实时财经新闻”模块按平台分组展示。本来想直接用搜狐 RSS结果踩坑很重有些源是老 feed时间长期不变甚至链接失效。后来改成搜狐 v2 feed 才相对靠谱。目前首页这块做了两件防抖措施短 TTL 缓存避免每次刷新标题大跳无效链接降级为不可点击避免用户点进 404 再被自动跳首页。一张图看本次改造主链路关键改动按模块看报告链路frontend/src/utils/markdown.tsx统一 Markdown 渲染工具含链接处理frontend/src/pages/SingleStockAnalysisPage.tsx摘要、分析师结论、完整报告统一 Markdown 渲染frontend/src/pages/ReportPage.tsx报告查看/下载逻辑收敛默认 PDFfrontend/src/services/tasksApi.tsnormalizeMarkdownText()兜底反转义走势看板frontend/src/pages/StockTrendPage.tsx新增走势看板页面frontend/src/services/tasksApi.tsgetTickerTrend()、getMarketOverviewTrend()backend/app/api/routes/analysis.py新增个股趋势与市场趋势接口公司名联动backend/app/dataflows/providers/stock_provider.py代码解析 公司名解析 名称标准化backend/app/api/routes/analysis.py/api/analysis/ticker/{ticker}/metafrontend/src/pages/SingleStockAnalysisPage.tsx输入代码时联动展示公司名首页新闻聚合backend/app/api/routes/analysis.py/api/news/live/topfrontend/src/services/newsApi.ts新闻接口调用frontend/src/pages/HomePage.tsx平台新闻卡片渲染布局与导航frontend/src/App.tsxfrontend/src/styles.css侧边栏固定、底部留白、账号/退出同排移除任务中心页面挂载页面路径收敛这轮踩坑里最有价值的几条“接口返回是对的”不等于“页面就是对的”Markdown 这类内容如果没有统一渲染入口页面很快就会出现“有的地方对有的地方错”的碎片化体验。新闻聚合里数据源质量比 UI 更决定体验一开始我花时间在排版后来发现用户最在意的是“点开是不是原文、是不是新内容”。结论先治数据源再雕 UI。不要怕做降级策略比起“勉强可点但 404”不可点击 明确提示其实更专业。真实产品里稳定感比“看上去功能多”更重要。我这轮的具体方法论可复用方法 1四层定位法渲染层 / 接口层 / 数据层 / 样式层每次碰到“看起来像前端 bug”的问题我会先判断它在哪一层渲染层组件是否正确解析内容接口层返回结构是不是稳定数据层源数据是否新鲜、可用样式层展示是否误导这能快速避免“凭直觉改代码”。方法 2先做观测点再做修复比如搜狐新闻这块不先验证源数据就很难解释“为什么一直是 2016”。我会先直接请求真实接口看返回再决定是换源、加缓存还是做降级。方法 3优先抽公共能力这轮把 Markdown 相关逻辑抽成统一工具后后面每个页面接入成本明显下降。经验是同类问题第二次出现时就该抽公共层了。还可以继续优化的点新闻聚合做更明确的平台排序与更新时间展示走势看板补更细的 tooltip 与坐标提示比如相对昨收百分比报告导出增加页眉/页脚模板将新闻源治理独立成 service 层减少路由文件复杂度最后的感受这轮最大的收获不是“加了多少功能”而是把产品从“能跑通”往“可用、可信、可解释”推了一步。以前我会更在意功能覆盖率现在更在意用户看到页面时会不会放心内容是不是清楚、链接是不是靠谱、默认状态是不是不尴尬、布局是不是不别扭。如果说一句最实在的话真正耗时间的不是写功能而是把细节打磨到“像真的产品”。FinAgent 项目实训进度记录 · weekly-cjw · report3