阅读和用户资产补齐之后,小程序还缺最后一层“有理由再回来”的内容氛围。很多项目做到这一步就停了,社区 Tab 还是空的,树洞只是个想法,举报入口没有,友链导航关于也只是以后再说,结果小程序看起来像个内容壳,没有社区感,也没有站点感。

Sourcelin 这轮把“社区扩展”单独收口,就是为了把说说、树洞、举报、友链、导航、关于这些看似分散的能力,真正变成一组能被用户感知到的轻社区入口。

本次阶段推文基于产品文档、仓库现状和本地可提取开发记录生成,未完整依赖远端会话历史。

这个阶段为什么不能只做一个社区列表

产品文档 5.1 第 6 周把这一阶段定义为:

  • 说说基础互动
  • 树洞
  • 举报入口
  • 友链
  • 导航
  • 关于

这几个点如果分开看,像是零散补功能;但从移动端体验看,它们其实都在回答一个问题:用户除了读文章,还能不能感知到这个站点在“活着”。

当前对应的页面和能力已经补齐

  • 社区页:sourcelin-ui/sourcelin-ui-uniapp/src/pages/community/community.vue
  • 说说发布:sourcelin-ui/sourcelin-ui-uniapp/src/pages-publish/say/say.vue
  • 树洞投递:sourcelin-ui/sourcelin-ui-uniapp/src/pages-publish/treehole/treehole.vue
  • 关于页:sourcelin-ui/sourcelin-ui-uniapp/src/pages-about/index/index.vue
  • 友情链接:sourcelin-ui/sourcelin-ui-uniapp/src/pages-about/links/links.vue
  • 网站导航:sourcelin-ui/sourcelin-ui-uniapp/src/pages-about/navigation/navigation.vue
  • 社区 API:src/modules/community/api/community.api.ts
  • 举报 API:src/modules/report/api/report.api.ts
  • 埋点 API:src/modules/analytics/api/analytics.api.ts
  • 后端补充:sourcelin-modules/sourcelin-blog/src/main/java/com/sourcelin/blog/controller/front/FrontReportController.javaFrontAnalyticsController.java

到这里已经能看出,这一阶段不是只写前端页面,而是把前端动作和后端接口一起补上了。

社区页已经不是占位,而是说说和树洞双列表

社区页现在直接承接两类内容:

const result = activeTab.value === 'says'
  ? await fetchSayPage(targetPage, 10)
  : await fetchTreeholePage(targetPage, 10);

这个结构的好处很直接:

  • 说说和树洞都能在一个一级 Tab 里承接
  • 每个列表都有分页、互动和空态
  • 发布入口会根据当前 Tab 自动切到“发说说”或“写树洞”

更重要的是,社区页里的点赞、收藏、评论抽屉和举报都已经接入真实动作,不再是浏览壳。

树洞投递这次真正补到了产品要求的细节

产品文档对树洞要求里有一个很容易被忽略的点:失败或中断后,草稿要本地暂存 1 小时。

这次树洞页正好把这个细节做进去了:

const DRAFT_KEY = 'publish.treehole.draft';

setStorage(DRAFT_KEY, {
  nickname: nickname.value.trim(),
  avatar: avatar.value.trim(),
  content: value
}, 3600);

这段代码的价值,比单纯“能发树洞”更大。因为它说明小程序已经开始按真实用户操作来做体验,而不是只顾着把接口调通。

举报、导航、关于、友链都已经从占位变成真实入口

社区扩展最容易被拖延的,往往就是举报和站点信息,因为这些功能不够炫,但缺了以后体验很假。

现在举报链路已经接到后端:

export function createContentReport(payload: ContentReportPayload): Promise<void> {
  return http.post<void>('/front/reports', payload);
}

后端也补了对外 Controller:

@RestController
@RequestMapping("/front/reports")
public class FrontReportController extends BaseController
{
    @PostMapping
    public Void create(@Valid @RequestBody FrontContentReportDTO body)

友情链接、导航和关于页也都不再是“建设中”,而是已经能拉数据、筛选、复制链接和提交申请。尤其导航页,已经补了分类切换和关键词筛选,这比只展示一页静态列表更像真实站点入口。

为什么我现在确认“社区扩展”可以勾选完成

之前这一阶段不能勾,原因非常明确:

  • 树洞投递还没闭环
  • 导航、关于等页面还有占位
  • 社区页还不足以形成访问理由

这次复核后,这几个阻断点都已经不在了:

  • 社区 Tab 已具备说说/树洞双列表
  • 树洞匿名投递支持 1 小时草稿暂存
  • 举报入口已经接入前后端
  • 友链、导航、关于全部有真实内容与交互

按产品文档第 7 章“只有核心页面、核心交互、占位替换和验收项全部闭合才算完成”的口径,这一阶段已经满足勾选条件,所以我会把它转为已完成,并补上这篇统一长文。

社区扩展完成状态图

以下是社区扩展各模块的完成状态可视化,展示了从"占位"到"真实功能"的转变:

40% 25% 20% 15% 社区扩展模块完成状态 说说系统 树洞功能 举报机制 站点信息
2024-01-01 2024-01-03 2024-01-05 2024-01-07 2024-01-09 2024-01-11 2024-01-13 2024-01-15 2024-01-17 2024-01-19 2024-01-21 2024-01-23 2024-01-25 2024-01-27 社区页双列表 社区API开发 说说发布页面 举报API开发 树洞投递页面 埋点API开发 草稿暂存实现 站点信息页面 举报链路打通 占位替换完成 前端页面 后端接口 功能闭环 社区扩展开发进度

效果图社区-树洞

社区-说说

开发过程提示词(优化版)我的-友情链接

请先读取 AGENTS.md、rules/frontend-uniapp.md、rules/api-contract.md,
以及 docs/product/UNIAPP_MINI_PROGRAM_PRODUCT_DESIGN.md 第 5.1 节“社区扩展”阶段要求。

本次只处理社区扩展,不扩展到兼容与性能、联调验收或后台管理能力。

请重点补齐:
1. 社区页说说/树洞双列表与基础互动
2. 树洞匿名投递与 1 小时草稿暂存
3. 举报入口及前后端接口
4. 友链、导航、关于真实页面与内容入口

输出时必须说明:
1. 页面目录与 API 归属
2. 哪些占位已被替换
3. 哪些后端接口是新补的
4. 当前还缺哪些上线前验证

这类任务里 AI 最容易跑偏的点

  • 只把社区页做成列表展示,不补发布、评论和举报。
  • 树洞能提交,但没有草稿暂存和审核提示,用户一中断内容就丢。
  • 导航、友链、关于仍然保留“建设中”文案,却误判阶段完成。
  • 前端举报入口做了,后端没有对应接口,最后整条链路还是假的。

项目入口

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐