Skip to content

RFC: 自习室(轻社交) #6

@gxxk-dev

Description

@gxxk-dev

RFC: 自习室(轻社交)

三档渐进式实现,从无声陪伴到房间互动逐步升级。

关联:#5(待办系统)— 任务完成事件可广播到自习室

现有基础设施

  • OnlineCounter Durable Object:WebSocket 生命周期、心跳保活(30s ping)、指数退避重连(最多 10 次)
  • StatusPill 组件:展示在线人数 + 连接状态
  • workerchat-with-E2EE:可迁移的聊天能力(房间管理、邀请链接、角色权限、WebSocket 消息协议)

A档:全局广场

基于现有 OnlineCounter DO 扩展,不新建 DO。

  • 扩展 WebSocket 消息类型,广播系统事件:
    • 有人开始专注
    • 有人完成了一个番茄钟
    • 有人完成了任务 ✓
  • 预设快捷短语("加油"、"冲冲冲"、"休息一下"等)
  • 前端展示:弹幕 / 轻量 feed 形式
  • 频率限制(防刷屏)

不支持自定义消息,保持零社交压力。

B档:私人房间

新建 StudyRoom Durable Object,按房间隔离。

  • 创建 / 加入房间
  • 邀请链接机制(从 workerchat 迁移,简化)
  • 房间内成员专注状态实时同步(谁在专注、谁在休息)
  • 房间共同目标("今天一起完成 N 个番茄钟",共享进度条)
  • 匿名 / 昵称可选
  • 分享房间链接

角色体系(从 workerchat 简化)

角色 能力
Creator(房主) 踢人、管理邀请链接、设置房间目标
User(已登录) 查看成员、参与专注
Guest(未登录/链接加入) 查看状态

去掉 Admin 层级,自习室场景不需要。

C档:房间内互动

在 B 档基础上增加交流能力,聊天功能从 workerchat 迁移改造。

  • 房间内聊天(明文,从 workerchat 迁移核心消息协议)
  • 快捷反应(加油 / 辛苦了 / Miku 贴纸)
  • 房间排行榜(今日专注时长)
  • 消息回复(复用 workerchat 的 ReplyInfo 结构)

架构

OnlineCounter (现有 DO,扩展)
└── A档:全局广场
    ├── 系统事件广播
    └── 快捷短语

StudyRoom (新 DO,从 workerchat 迁移改造)
├── B档:私人房间
│   ├── 邀请链接 / 房间管理
│   ├── 成员专注状态同步
│   └── 房间目标
└── C档:房间互动
    ├── 聊天
    ├── 快捷反应 / Miku 贴纸
    └── 排行榜

实现优先级

A → B → C,逐步交付。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions