夜雨聆风学习资料网

ARTICLE · 1207705

族谱软件开发日志2026-10-18

族谱软件开发日志2026-10-18


老闫的族谱软件开发日志

—— 一个不会写代码的人,和 AI 结对做软件的真实记录

最近更新:2026-10-18(第 8 篇)

这是一份持续更新的开发日志。我按时间节点记录「族谱管理」软件从想法到交付的全过程,每有新进展就续写一篇。本文为第 8 篇,全程文字记录,不涉及任何真实族人信息。

写在前面

我是老闫。家族修谱多年,想把老谱和新资料整理成电子版,但市面的族谱软件要么必须联网上传,要么臃肿难用。我的底线很明确:家族的资料是隐私,必须全部存在自己电脑上,一个字节都不许往外发。
我一行代码都不会写,办法是找 AI 结对:我出需求、出主意、做验收,AI 负责敲代码。规矩是:每做一个功能之前,先用选择题把边界敲清楚;每发一个版本之前,测试不全绿不打包。
上一篇(第 7 篇)写到两份底稿合一、老谱细节补全。这一篇记四天——10 月 15 日给软件加了个"世系窗口",还顺手生了个手机版;10 月 18 日把世系窗口接到族谱谱文件上,又揪出一个藏了很久的联动 bug,还差点让农历冒充公历把全库日期记错。

2026-10-15 | 第九天:世系窗口、导出 PDF,还有手机上的族谱

一、光有图不够,还得有"谱"

族谱树画得再好看,说到底是一张图。老祖宗修谱都是文字世系:一世谁、二世谁、每人的字什么、生卒如何、娶谁、生了谁——一辈一辈往下排。我在画布左上角加了个「世系」按钮,点开左侧多出一栏文字面板,第 1 到第 4 世按老谱的格式逐条列出。点树上任何一个人,文字栏自动翻到他那一段、黄底高亮;点文字里的名字,右边详情面板立刻显示这个人。图和谱,从此一家一半。
紧接着做「导出世系 PDF」。这个功能其实早就在给它铺路:世系窗口内部用的是带格式的富文本(加粗、颜色、换行都是结构性标签),导出时直接"打印"成 PDF,所见即所得,一点不走样。
中间踩了个小坑:打印控件 Qt 放的位置和我以为的不是同一个模块,第一版导出静默失败——点了按钮啥也没发生。这种错最阴险,不报错、不弹窗,就装死。定位半天,换对模块,PDF 才出来。

二、给手机也来一份

这天还干了件大事:给手机生了个安卓版。家里人手机上也能看族谱。路线是网页技术加打包工具,100% 离线、不联网,数据直接从电脑版的数据库转换内嵌进去。电脑上这套树的画法——卡片、配偶、过继虚线、缩放平移——整体搬到手机屏幕上。
踩的坑也值得一提:构建工具不认中文路径,项目文件夹带中文它直接罢工,最后用复制工具把整个项目挪到纯英文路径下才搞定。安卓那套东西是第一次碰,一路都是新坑,好在思路和电脑版一脉相承:先让核心功能跑通,再慢慢补。

2026-10-18 | 第十天:世系接上真谱、揪出装死的高亮、日期大扫除

一、世系窗口改读"生成文件"

15 日的世系窗口是从内存里的数据现场拼出来的。这天把它改了口径:写了个自动生成工具,从数据库一键生成《族人世系谱》文件——库里有 505 位男性,谱里就 505 个,一个不落;格式向手工谱看齐:中文数字世代标题、带字辈(如"六世(廷字辈)")、分支标题、成员去闫姓、过继的注明生父。库是唯一真源,库里加人减人,重跑一次谱就同步。
顶栏加「库同步至世系」按钮;世系窗口直接读这份生成文件——屏幕上看到的世系,和导出 PDF 的世系,和谱文件,三者从此是同一份东西。

二、一个"装死"很久的 bug

改的过程中发现不对劲:树上点人,世系窗口的高亮时灵时不灵,最后干脆不灵了。顺藤摸瓜,挖出来的问题不止一个:
高亮定位的方法调用在了错误的对象上,一执行就抛错——而这个错被界面环境吞了,不弹窗、不日志,就这么静默装死;
高亮底色的格式类型也用错了,Qt 不认;
滚动定位用的方法,富文本控件上压根不存在。
修完这三个,高亮动了——但落错地方,黄底盖在生卒行上而不是姓名行。深挖一层:字符坐标在文档里整体错位了,错位还会越攒越大。干脆推倒重来:不预先算坐标,改成品位扫描文档里的姓名锚点,锚点在哪个段落就高亮哪个段落。
改完拿真实库逐个人验证:496 位世系成员,树点文字亮、文字点树选,496 全中。这个 bug 教会我一件事:不报错的错最危险,而验证不能只测三五个,要全量扫一遍才敢说"好了"。

三、农历差点冒充公历

这天还出了件大事,是我点破的。翻库看日期,发现不对:老谱里写的"同治二年十二月""腊月初二",都是农历——软件之前把农历的月日直接当公历存了。这错可不小:多数日子会偏早一个月上下,农历十二月已经跨进公历次年,连年份都可能错。比如克宽的"腊月初二",其实是公历 1968 年 1 月 1 日,照抄就成了 1967 年 12 月 2 日。
怎么办?我和 AI 定的规矩是:没有把握的精度,宁可不要。全库 240 多条出生、逝世日期,抹掉没核对过的月日、只留年份;4 条我手工核对过公历的完整日期保留。以后导入老谱要存月日,必须走农历转公历的换算,不许再直接抄。
错的精度比没有精度更害人——记"某某年生"是诚实,记个错到月份的"生日"是埋雷。

四、收尾

导出菜单里"导出世系 PDF(第1~4世)"改名「导出现世系为PDF」,话说明白点。软件启动自动最大化。版本收在1.2.9,五套测试全绿。

收个账:这几天软件多了个文字世系窗口(图谱双向联动)、多导出一种 PDF、多了个手机版,还把全库日期里的农历水分挤了出去。最大的体会有三条:
不报错的错最危险。高亮那个 bug 藏了很久,因为失败是静默的。修完必须真机真数据验证,不能看代码"应该对"就放行。
验证要全量,不能抽查。496 个成员挨个过一遍才敢交付——抽查三个绿了,不代表第 400 个不埋雷。
宁可少记,不可错记。日期抹成年份看着信息少了,但每一条都站得住。

几句掏心窝的经验

同一份数据,只允许有一个真源。世系窗口、PDF、谱文件全从库生成,改一处、处处对——要是各存一份,早晚对不上。
静默失败要当大 bug 处理。功能没反应还不报错,比崩溃更难查,发现一个就要挖到底。
老谱纪年先问历法。年号、"一九XX年"都是农历,直接抄进公历字段就是错账。
AI 写的验证,人要盯着跑真数据。测试全绿是底线,但绿的是真库真成员,不是造出来的假数据。

下一步

手机版继续补功能:备份导入导出、史料附件
13 条"待接边"手动补齐(还欠着)
《族人信息(完整)》整理稿校订后导入(还欠着)
「分享包」压缩包,拷给家里其他人的电脑用(一直欠着)
(未完待续,下一篇见文首新的时间节点。)

相关学习资料