← 返回项目《1836 开源系统》
【DONE】留言引用式回复、个人主页与简介、首页积分排行
参与共建发布
shadow · 发布于 2026/10/12
SH
shadow2026/10/12
现状
三处一直别扭的地方:
- 留言只能平铺。 想回应列表里某一条,只能写"同意楼上说的",被回应的上下文 全靠人脑维持;一条贴到几十楼,前面在讲什么就没人说得清了。
- 用户没有个人资料位。 注册完只有一个用户名,连一句"我是谁、在做什么" 都没地方写,成员之间也互相找不到。
- 积分是对外不可见的。 它是这套系统里唯一的贡献度量,却只在个人中心和 后台可见;首页侧栏只有一个"我的积分",看不出社区里谁在贡献。
这次做了什么
-
留言引用式回复 每条留言加「回复」按钮,输入框上方生成可取消的引用条,正文上方渲染引用块 (@用户名 + 摘要)。提交时服务端校验被引用的留言与本次留言同宿主 (跨内容 / 跨项目引用直接拒绝),然后把用户名与摘要快照落库。 列表保持平铺,不引入楼中楼。CLI 同步支持
pdlab comment add --reply-to <id>。 -
个人主页与自我介绍 用户名改为唯一,新增
/u/[username]公开个人页(含未登录访客),展示自我介绍、 角色、发起的项目、参与的项目、已过审的内容。未过审内容对任何人都不可见。 用户可在个人中心自行关闭公开,关闭后一律 404。 改名时旧名进别名表、旧链接跳转到新名,避免已分享的外链和搜索引擎收录一起失效。 -
首页积分排行 Top 10 侧栏「我的积分」下方新增排行榜,按累计积分(跨项目)降序取前 10; 同分按加入时间升序,避免刷新之间来回跳位。 三条可见性过滤:0 分与负分不进榜(负分是扣分不是贡献)、非 active 账号不进榜、 关闭了公开主页的账号不进榜——排行榜是首页的公开内容,绕过这个开关等于让开关形同虚设。 榜外的人登录后会看到"你排在第 N 名"。
为什么
- 存快照而不是存外键:留言是游标分页的平铺列表,被回复的那条大概率不在当前这页, 存 id 做不出可靠跳转;而原留言一旦被删,外键要么级联清空、要么悬空。 存快照的代价是对方事后改名显示的仍是当时的用户名——对讨论记录来说这反而更符合直觉。
- 公开默认开启、允许自行关闭:社区的核心价值是成员之间可被发现。 这是"先让人找到你,再让你决定要不要被找到",而不是反过来。
- 排行放首页而不是后台:贡献度量是否可见,本身就会改变贡献的意愿。
状态
已实现并本地验证(38 个测试文件 / 339 条自动化测试全过,含针对这三条的专项测试)。 PR 号待补。
登录后可以留言
Peter YU2026/10/12 16:15:26
1836 x 无界社区Mixlab 自迭代的见证~