【版本更新】V3.19 / V3.20 / V3.21 / V3.22:集合投票口径、成员名单去重与角色展示收敛
shadow · 发布于 2026/10/21
shadow2026/10/21
本次更新已上线,四项围绕「前台展示与统计口径」的修复。共同的毛病是:同一件事在页面上被算了两遍,或者干脆没人算。
修掉的问题
-
成员名单标题旁给出人数:关于我们页的「成员名单」标题旁边现在会写清楚一共列了几个人,口径是分组后真正列出来的名字个数(去重之后同一个人只在一组里,所以这个数不是账号数、也不会重复计数)。另外「普通用户」那一档不再展示——它是注册即有的默认身份,站里注册的人一多,这一档就成了一面账号墙,把真正的成员挤到下面去。
-
对外展示的角色身份去重:站点角色是一棵继承树,子角色继承父角色的全部权限。所以一个人同时被授予「1836发起人 + 1836共建者 + 普通用户」时,那三个标签其实是同一件事说三遍。此前关于我们成员名单、个人主页徽章、个人中心角色名各写各的,于是同一个人会在成员名单里落进多个分组,主页上挂三个徽章,个人中心的角色名还是数据库返回的随机序。现在统一只留最派生的那一档(发起人盖掉共建者、共建者盖掉普通用户,覆盖是传递的),并列的三支(共建者 / 联合发起人 / 商业合作者)互不覆盖,展示顺序按权限高低降序。被授予了哪些角色的事实口径不变——接口里的
roles字段和 CLIpdlab whoami读到的仍是全部被直接授予的角色 key,只有对外展示的那一份去重。顺带修掉一个后台配置被悄悄冲掉的真 bug:角色的「继承自」此前每次容器启动跑 seed 都会被无条件改回代码里的默认值,于是管理员在后台改过的继承关系会在下次部署后静默消失。现在 seed 只给首次新建的角色连默认父角色,管理员的配置(包括明确选「不继承」的)保持不动。
-
数据全景的投票分两套口径;集合成员名单按最高角色去重:集合开了投票,页面上「数据全景」却显示「投票 0 / 投票中 0 / 投票者人数 0」,而同一页的集合投票区明明挂着「投票中」的牌子,两处自相矛盾。根因是集合自己的投票(不属于任何项目)和集合内项目的投票本来就是两回事,此前只按后者统计。现在数据全景拆成 6 个徽标——项目 / 子项目投票 / 集合投票 / 点赞 / 评论 / 投票者,两套投票口径各占一格、互不冒充;「投票者」给的是两边投票者的去重并集,同一个人在两边都投过只算一个人。「Top 投票者」也一并纳入集合投票的投票人,否则只在集合投票上表态的人会完全不见。接口既有的字段含义一个字没改,集合自身的投票走新增的字段,老的 CLI 和老脚本照读。同一页的成员名单也在去重:一个人既是 A 项目的发起人、又是 B 项目的参与者时,原来会出现两次,现在按最高的项目内角色归并,三档人数之和等于集合里的真实人数。
-
集合内没开投票时「投票排行」整块不显示:集合内的项目一个投票都没开时,「投票排行」会渲染成一张只有标题加一句「本集合内的项目还没有开启任何投票。」的空卡片。那句话本身没错,但它出现在一个看起来像内容区块的位置,读起来像页面出了故障,而不是「这块本来就没有内容」。现在这种情况下整块卡片(连标题一起)不渲染,与同页「数据全景 / 参与者活跃度」在纯内容集合下的既有做法一致。已关闭的投票同样算数——卡片上写的是「N 个投票 · 投票中 M」,关掉的投票照样占一行。
验证
547 个自动化测试全部通过,其中新增 25 个(集合投票的显示条件 5 条、集合汇总口径 4 条、角色展示去重 13 条、seed 继承关系 3 条)。没有数据库结构变更,接口只增字段不改含义。
登录后可以留言