跳到正文
1836 · 开源社区

1836 · 开源社区

AI时代的人本基建

← 返回项目《1836 开源系统》

【DONE】留言引用式回复、个人主页与简介、首页积分排行

参与共建发布

shadow · 发布于 2026/10/12

SH

shadow2026/10/12

现状

三处一直别扭的地方:

  • 留言只能平铺。 想回应列表里某一条,只能写"同意楼上说的",被回应的上下文 全靠人脑维持;一条贴到几十楼,前面在讲什么就没人说得清了。
  • 用户没有个人资料位。 注册完只有一个用户名,连一句"我是谁、在做什么" 都没地方写,成员之间也互相找不到。
  • 积分是对外不可见的。 它是这套系统里唯一的贡献度量,却只在个人中心和 后台可见;首页侧栏只有一个"我的积分",看不出社区里谁在贡献。

这次做了什么

  1. 留言引用式回复 每条留言加「回复」按钮,输入框上方生成可取消的引用条,正文上方渲染引用块 (@用户名 + 摘要)。提交时服务端校验被引用的留言与本次留言同宿主 (跨内容 / 跨项目引用直接拒绝),然后把用户名与摘要快照落库。 列表保持平铺,不引入楼中楼。CLI 同步支持 pdlab comment add --reply-to <id>。

  2. 个人主页与自我介绍 用户名改为唯一,新增 /u/[username] 公开个人页(含未登录访客),展示自我介绍、 角色、发起的项目、参与的项目、已过审的内容。未过审内容对任何人都不可见。 用户可在个人中心自行关闭公开,关闭后一律 404。 改名时旧名进别名表、旧链接跳转到新名,避免已分享的外链和搜索引擎收录一起失效。

  3. 首页积分排行 Top 10 侧栏「我的积分」下方新增排行榜,按累计积分(跨项目)降序取前 10; 同分按加入时间升序,避免刷新之间来回跳位。 三条可见性过滤:0 分与负分不进榜(负分是扣分不是贡献)、非 active 账号不进榜、 关闭了公开主页的账号不进榜——排行榜是首页的公开内容,绕过这个开关等于让开关形同虚设。 榜外的人登录后会看到"你排在第 N 名"。

为什么

  • 存快照而不是存外键:留言是游标分页的平铺列表,被回复的那条大概率不在当前这页, 存 id 做不出可靠跳转;而原留言一旦被删,外键要么级联清空、要么悬空。 存快照的代价是对方事后改名显示的仍是当时的用户名——对讨论记录来说这反而更符合直觉。
  • 公开默认开启、允许自行关闭:社区的核心价值是成员之间可被发现。 这是"先让人找到你,再让你决定要不要被找到",而不是反过来。
  • 排行放首页而不是后台:贡献度量是否可见,本身就会改变贡献的意愿。

状态

已实现并本地验证(38 个测试文件 / 339 条自动化测试全过,含针对这三条的专项测试)。 PR 号待补。

PE

Peter YU2026/10/12 16:15:26

1836 x 无界社区Mixlab 自迭代的见证~

登录后可以留言