先说结果:一个真实可用的影讯小程序,已经提交微信体验版了。
从立项到跑通前前后后没几天,但踩的坑比我想象中多得多。这篇就是记录一下整个过程,尤其是那些 AI 也替我踩不掉的坑。
为什么要做这个
我家附近有一家影院,平时想看个电影,得在好几个 App 之间来回切:先看哪个片子值得看,再看哪家影院有场,再看几点的场次合适,最后还要跳去购票平台买票。
每个 App 都只给一部分信息,体验特别割裂。
所以我就想做一个纯粹的影讯工具:只给信息,不做交易。今天有什么片、附近哪家影院有场、今天大盘票房多少,一目了然。想买票?再跳官方平台去。
听起来是个挺简单的小工具,但真做起来才发现,最难的问题只有一个:数据从哪来。
技术上大概是这么回事
懂技术的看这段,不懂的可以直接跳过。
- 前端:微信原生小程序,四个 Tab——影讯、影院、排片、票房。
- 后端:微信云开发,云函数加云数据库,不用自己运维服务器,个人开发者比较友好。
- 数据:主要从猫眼移动端接口抓,影片、排片、票房都是。影院详情补充了一点极速数据 API,还有高德做定位和逆地址解析。
- 定位:拿微信的坐标,丢给云函数调高德翻译成城市,结果缓存 24 小时。
但说实话,"把接口数据抓回来存进数据库"这种事,AI 一天就能写完。真正麻烦的是后面那些坑。

首页就是票房大盘加热映列表
三个印象最深的坑
第一个:云函数只有 3 秒超时
第一次跑数据同步,接口直接报错。查了半天才发现,云函数默认超时只有 3 秒。而控制台里那个"云端测试"通道,虽然显示可以跑更久,但其实也有一个硬上限——根本跑不完一次完整的数据同步。
后来改成了分片抓:每次给云函数一个时间预算,比如 12 秒,能抓多少家影院算多少,抓完把进度存成游标,下次接着来。前端也配合着驱动——用户打开影院页,小程序自己循环调云函数,每次推进一点,直到这个城市的数据开通完。
第二个:全国城市根本预同步不过来
一开始我只同步了十几个热门城市,结果用户一切换城市就白屏。全国 300 多个城市,每个城市上百家影院,要是全量预同步,请求量直接爆炸,分分钟被风控。
最后想出来的办法是按需开通:用户所在城市没数据,前端就自动分片同步,用户那边能看到"正在开通 XX 影院数据"的进度条。开通完缓存 24 小时,同城的其他用户打开就是秒开。每天再跑个定时任务,只给"近 7 天有人访问"的城市续抓。
说白了就是请求量跟着真实用户走——没人的城市不浪费额度,有人的城市数据永远新鲜。个人开发者做爬虫,这几乎是唯一能跑通的模式。
第三个:广告位死活不显示
接广告组件的时候遇到最玄学的一个 bug:配置读得到,开关是开的,页面就是不渲染。缓存清了,代码翻了,每一行都正常。
最后发现是给广告组件传参数的时候,参数名撞上了小程序的系统保留字,传什么都会被平台吃掉,等于白传。换了个参数名,一行代码就解决了。
这种坑 AI 写代码的时候不知道,我 review 的时候也看不出来,只有真机跑了才会暴露。
类似的还有好几个:比如用命令行部署云函数会静默把超时重置回 3 秒,后来把超时声明写进配置文件才根治;还有高德的密钥分"网页端"和"服务端"两种,绑错了定位就一直失败……每个单拎出来都够写一条知乎回答。
和 AI 结对写代码,真实感受
这次全程用的 AI 编程助手(Trae + GLM),说三点最真实的感受。
第一,AI 负责写代码,人负责做判断。像"按需开通"这套架构,是我和 AI 讨论出来的方案。但"要不要为全国城市预同步"这种产品决策,AI 给不了答案——它不知道你的请求额度有多少、风控能承受多大、你的用户到底在哪。
第二,描述清楚 bug 比描述清楚需求难多了。"广告不显示"这种话丢给 AI,它只能瞎猜。但如果你把现象、已经排除的可能性、控制台输出的内容整理好给它,可能两轮就定位到问题了。能不能把问题说清楚,效率差十倍都不止。
第三,AI 不会替你收尾。功能能跑和产品能用之间,隔着一大堆细节:加载失败了怎么兜底、列表太长了怎么折叠展开、权限被拒了怎么降级让用户手动选城市……这些"用户体验的毛边",都是我自己一次次真机测试、然后提出来让 AI 改的。
现在跑起来是什么样
目前有的功能:影讯首页(热映、预映、想看)、影院列表(按距离排序,可以筛 IMAX/CINITY)、排片三步选场(选片 → 选影院 → 选场次)、票房双榜、影片和影院详情页、全国城市按需开通、还有个管理员后台管广告位和数据体检。




影院按距离排 / 排片三步选 / 票房双榜
最后随便说两句
放在以前,一个人做这样一个小程序,少说也得挤一个月业余时间。这次从立项到提交体验版,断断续续也就几天。
AI 没有把开发变成"动动嘴就行"的事,但它确实把"从 0 到 1"的门槛压下来了——个人爱好者踮踮脚,就能够得到。
剩下从 1 到 100 的那些活,还是得一步一步磨。
本文由人机协作完成:产品和踩坑是人的,初稿和润色是 AI 的


Thomas3 年前
发表在:SQL Server2008报错:值不能为空[S35]
Thomas3 年前
发表在:解决Composer Installing dependencies from lock file你这都看不清了
1112021-03-15 23:30
发表在:Cetnos7 新手安装ZABBIX4.0.5详解教程有人嘛
耗子2020-04-08 15:02
发表在:写给正在创业的自己看到了,想写点。可能我开过这网站了,以后...
Thomas2019-11-19 19:57
发表在:twcms您的IP地址已改变,为了安全考虑,请重新登录这个好
酷喵2016-08-03 15:22
发表在:我家侄女成长记前排支持啦!
五爷2015-12-01 03:26
发表在:关于centos中的相关查看命令@admin:呵呵
admin2015-12-01 01:49
发表在:关于centos中的相关查看命令非常不错