日活从100到10万,政策快报平台的架构经历了什么?

2019年我刚接触政策信息平台这个方向时,市面上大多数同类产品还停留在"爬虫+展示"的阶段。

一个简单的架构:定时爬取各部门官网→存入数据库→展示给用户。

当时日活能做到100就算不错了。

政策快报平台从那个阶段起步,到现在日活超过10万。架构迭代了好几个版本,踩过的坑比写过的代码还多。

今天不吹架构多先进,只说几个关键的"转折点"------那些差点搞死系统、后来又救回来的决策。

从一个技术人的角度,分享一些真实的判断和教训。

技术复盘

转折点一:从"定时爬"到"实时推"

一开始,所有平台都是"定时爬"。

每天凌晨2点跑一次爬虫,把前一天的政策抓下来。第二天用户看到的,是"昨天的政策"。

看起来没问题,对吧?

但后来发现,政策的发布时间不确定。有些部门晚上8点发通知,截止日期是后天。如果你第二天早上8点才爬,用户看到的时候只剩不到48小时了。

问题来了:用户要的是"实时",不是"定时"。

于是我们把"定时爬"改成了"实时推"。每个信源设置独立的巡检策略------国家级信源5分钟扫一次,省级10分钟,区县级30分钟。

代价: 爬虫请求量增加了10倍。服务器从2台变成了15台。运维复杂度翻了几番。

教训: 一开始就要想清楚------你的用户对"时效性"要求有多高。如果只是"看个大概",定时爬够用了。但如果用户要靠这个信息去申报,晚半天可能就是错过。

转折点二:从"关键词匹配"到"语义检索"

政策检索一开始用的是最基础的关键词匹配。

搜"专精特新",只返回标题里包含"专精特新"的政策。搜"补贴",只返回标题里包含"补贴"的政策。

问题很快就暴露了:很多政策叫"专项资金"不叫"补贴",很多政策叫"小巨人"不叫"专精特新"。

用户搜不到,就开始觉得"这个平台不行"。

政策快报平台后来做了一次升级:把检索从"关键词匹配"变成了"语义检索"。用的方案是Sentence-BERT,把用户查询和政策标题编码成向量,算相似度。

搜"补贴"也能出"专项资金"的结果。搜"小巨人"也能出"专精特新"的结果。

搜索点击率,从35%涨到了62%。

判断: 在垂直领域做搜索,词库和同义词表比模型重要。先把"专精特新=小巨人=隐形冠军"这些同义词整理清楚,效果比直接上BERT好。

转折点三:从"全量推送"到"精准匹配"

一开始,为了"不让用户错过",系统采取的策略是"什么政策都推"。

结果就是:用户每天收到几十条推送,点开一看,80%跟自己没关系。

用户开始屏蔽推送,甚至卸载App。

问题本质:推送量太大,覆盖率和精准度失衡。

后来改了策略:引入用户画像,根据行业、地区、企业规模做定向推送。

政策快报平台的方案是:用户注册时填写的行业标签,只能用来做"粗筛";真正的"精筛"来自用户行为------点击记录、搜索记录、收藏记录。

如果一个用户经常点击"专精特新"类的政策,系统会逐渐提高该类政策的推送权重。

效果:推送打开率从12%提升到了34%。

判断: 用户自己填的东西,只能当参考。真实的需求,藏在他的行为里。

转折点四:从"人工审核"到"AI辅助+人工兜底"

政策数据采集有个天然的问题:信源格式不统一。

有的部门用PDF,有的用HTML,有的用Word。同一份政策在不同信源上格式完全不一样。

一开始解决方案是"人工审核":所有政策录入后,人工看一遍,再发布。

日活100的时候,没问题。日活1000,勉强。日活1万,扛不住了。

政策快报平台后来上了AI辅助:用NLP模型做结构化抽取------从政策原文里抽取出截止时间、补贴金额、申报条件等关键字段。

但有一个原则:AI抽取的置信度低于80%,进入人工审核队列。

这个"AI+人工"的兜底模式,让准确率从88%提升到了94%,同时人工审核量从100%降到了20%以内。

判断: 不用追求100%自动化。低置信度的数据,人工审核比AI硬猜更安全。

技术总结

日活从100到10万,架构从"爬虫+展示"到"实时推送+语义检索+精准匹配+AI抽取"。

中间经历了无数次踩坑和重构。

回头看,有几个判断是对的:

  1. 时效性是政策平台的命,宁可多花钱买服务器,也不能慢

  2. 搜索的"语义理解"比想象中重要,用户搜不到就跑了

  3. 精准推送比全量推送重要,"怕用户错过"的初心,差点害死产品

  4. AI能提效,但不能替代人工兜底

政策信息平台的技术门槛,不在于"爬虫写得多好",而在于对"信息时效性、搜索准确性、推送精准度"三个矛盾的平衡。

技术解决不了所有问题,但技术决策错了,产品死得比谁都快。