拜年不再叫错人:亲戚称呼计算器,一键算出怎么喊
打开网页点几下饭桌上的亲戚路径,就能知道这层关系该怎么称呼:点「爸爸的哥哥」出来的是书面称谓「伯父」、口语「大伯」;反过来它还告诉你「对方应该怎么称呼我」。每次算完顺手配一句适合这位亲戚的节日祝福,常用关系还能存进收藏夹。先看成品,再讲怎么用华为云 CodeArts 码道 WebUI 一段话把它做出来、部署上线。
这个工具做什么
它把「亲戚怎么称呼」这件过年刚需做成一个点选式单页小工具:
- 点选亲属路径:父亲 / 母亲 / 哥哥 / 姐姐 / 弟弟 / 妹妹 / 儿子 / 女儿 / 丈夫 / 妻子,一步步点下去,自动组合成关系链。
- 书面 + 口语双称呼:结果同时给出正式称谓和日常叫法,比如「父亲的父亲」是「祖父」、口语「爷爷」。
- 倒推结果:顺手算出「对方应该怎么称呼我」,不用再反向心算。
- 节日祝福语:匹配当前关系随机给一句适合他的祝福,过年祝福不再只会发「新年快乐」。
- 本地收藏:常用亲戚一键收藏,存在
localStorage里,下次打开还在。 - 喜庆配色:红色系界面,手机和电脑都能用,纯前端,不上传任何数据。

码道开通(免费体验版)
开始之前,先免费开通码道体验版。不需要装任何软件,浏览器就能用:
https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz
开通后有三种使用方式:WebUI(浏览器对话)、TUI(终端命令行)和桌面 IDE(IDE 插件)。本文用 WebUI 版演示。
进入 AI 开发者空间
- 浏览器打开 https://devstation.developer.huaweicloud.com/aidevspace?utm_source=opcsfsq&utm_medium=wbwz
- 弹窗「请选择要进入的版本」→ 点击 体验版
- 首次使用会跳到华为云登录页,扫码登录一次,后续浏览器会话复用
- 弹窗「临时凭据自动配置」→ 点击 同意,沙箱自动创建
进入 AI 开发者空间主界面后,先等左侧菜单加载出来,再找到 CodeArts,点击它右侧的浏览器图标,打开码道 WebUI 对话窗口:

打开后码道 WebUI 会先和你打招呼,下方就是需求输入框:

小贴士:体验版沙箱 3 小时后自动重置,生成完记得把
index.html下载保存。
任务描述
在码道 WebUI 输入框粘贴以下需求,回车发送:
开发一个「亲戚称呼计算器」单文件网页应用:用户按父亲/母亲/哥哥/姐姐/弟弟/妹妹/儿子/女儿/丈夫/妻子等关系一步步点选亲属路径,自动算出这层关系对应的中文书面称谓和日常口语称呼;同时给出“对方应该怎么称呼我”的倒推结果,并附上一句适合这个亲戚的节日祝福语。支持把常用亲戚加入本地收藏。界面喜庆温馨、简洁清晰,手机和电脑都能用,所有代码写在一个 index.html 里。完成后用部署功能部署成可访问的网页应用,并告诉我访问地址。

这轮码道具体做了什么
不是复述通用 AI 能力,而是它在这次项目里的实际动作:
- 新建任务后先走
huawei-cloud-codearts-coding工作流,探测空闲端口时发现沙箱里的python3环境变量被污染,退回到纯 bash 的/dev/tcp方式重新探测。 mkdir -p /workspace/kinship-calculator建好项目目录,把亲属关系引擎和 UI 全部写进一个index.html。- 找到一个空闲端口(这次落在 3004)后用
http.server起服务并自检,给出内部访问地址。
代码亮点
以下是 index.html 里值得关注的设计思路和实现细节。
1. 关系表:每步都带书面称谓 + 口语 + 性别 + 倒推
关系不是零散写死,而是用 add() 统一登记:F 代表父亲,字段依次是书面称谓「父亲」、口语称呼「爸爸」、性别、代际、尊称关系,以及「对方怎么称呼我」的两种反向结果:
var T = {};
function add(k,f,c,s,g,w,rM,rF,opt){opt=opt||{};T[k]={f:f,c:c,s:s,g:g,w:w,rM:rM,rF:rF,amb:opt.amb||false,af:opt.af||'',ac:opt.ac||''};}
add('F','父亲','爸爸','m',-1,'elder','儿子','女儿');
add('M','母亲','妈妈','f',-1,'elder','儿子','女儿');
add('B','哥哥','哥哥','m',0,'peer','弟弟','妹妹');
add('N','儿子','儿子','m',1,'junior','父亲','母亲');
add('H','丈夫','老公','m',0,'spouse','妻子','妻子');
2. 配偶抵消:HW / WH 连续点两次直接消掉
「丈夫的丈夫」「妻子的妻子」这类路径没有实际含义,用 reducePath 把末尾连续的 H/W 两两抵消,避免「丈夫的丈夫」被算成某个错误称谓:
function reducePath(p){
var r = p.slice();
while(r.length>=2){
var a=r[r.length-2], b=r[r.length-1];
if((a==='H'&&b==='W')||(a==='W'&&b==='H')){ r.pop(); r.pop(); }
else break;
}
return r;
}
3. 一次查表,正式称谓 / 口语 / 倒推一起出来
compute() 把路径规约成 key 后直接从 T 里取结果,并根据「我是男 / 我是女」选不同的倒推称谓(rM / rF):
function compute(){
var p = reducePath(state.path);
var key = pathKey(p);
if(p.length===0){ return {self:true}; }
var item = T[key];
if(!item){ return {unknown:true, key:key, path:p}; }
var young = state.young;
var f = item.f, c = item.c;
if(item.amb && young){ f = item.af||item.f; c = item.ac||item.c; }
var rev = state.mySex==='m' ? item.rM : item.rF;
return {item:item, formal:f, casual:c, reverse:rev, key:key, path:p};
}
4. 祝福语按关系分类随机抽
pickWish 根据当前关系类别(长辈 / 平辈 / 晚辈)从对应祝福语数组里随机取一条,不存在的时候就回退到通用祝福:
function pickWish(t){var a=WISH[t]||WISH.general;return a[Math.floor(Math.random()*a.length)];}
直接下载试玩
本次生成的项目就是单文件 index.html,没有第三方依赖,把文件保存到本地后双击用浏览器打开即可运行。源码同步到公开 Demo Park 仓库:
- Demo Park 仓库:https://atomgit.com/deli007/demo_park
- 本案例目录:https://atomgit.com/deli007/demo_park/tree/main/codearts-relative-call
总结
亲戚称呼计算器把称呼这件事做成关系链查表:每个亲属关系同时保存书面称谓、口语叫法和倒推结果,reducePath 先抵消配偶路径异常,compute 再一次性查出来;祝福语按辈分分类随机抽取,收藏走 localStorage。整个过程没有第三方依赖,纯前端跑通。后续还可以再加方言称呼、亲戚关系图谱可视化,或者直接接一张「全家福关系编辑器」。
如果还没用过码道,可以免费开通体验版:https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz
- 点赞
- 收藏
- 关注作者
评论(0)