面向管理员(小陆)、写手、客户三端的一站式论文辅导协作平台:闲鱼订单同步、套餐与写手管理、订单分配、三方实时沟通(文字 / 图片 / 语音)、写手通讯录私聊、内部论坛、客户免登录下单、数据自动清理。
小陆辅导是一个连接论文辅导客户与写手的协作平台。客户通过客户门户选择套餐下单;管理员在后台接收订单、分配写手并管理套餐;写手拥有独立工作台,只查看自己负责的订单。订单分配后,管理员(小陆)、写手、客户三方可在同一订单下沟通;此外写手之间、写手与管理员之间还可通过通讯录私聊,并在内部论坛发帖交流。平台部署于 Cloudflare Pages,数据存储于 Cloudflare D1(免费版单库 500 MB 上限)。
订单 / 套餐 / 写手全局管理,沟通中心、通讯录私聊、内部论坛、数据清理、使用文档
https://xiaolu-tutoring.pages.dev/(管理后台)我的订单、订单沟通、通讯录私聊(写手间 / 与管理)、内部论坛
https://xiaolu-tutoring.pages.dev/writer.html免注册浏览套餐、下单,凭专属链接查看订单并沟通
https://xiaolu-tutoring.pages.dev/client.html(免登录下单)
flowchart LR
C[客户门户 /client.html] -->|浏览套餐/下单| A[API 网关]
A -->|订单+token| DB[(D1 数据库)]
M[管理后台 /] -->|订单/套餐/写手管理| A
W[写手工作台 /writer.html] -->|我的订单| A
W2[写手/管理员] -->|通讯录私聊| A
W3[写手/管理员] -->|内部论坛 发帖/回复| A
C2[客户专属链接] -->|token 自动登录| A
subgraph 沟通体系
A -->|订单对话: 文字/图片/语音| DB
A -->|私聊: 文字/图片/语音| DB
end
A -->|图片/语音文件| R2[(R2 对象存储)]
| 角色 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| 管理员 | admin | admin123 | 系统显示名为「小陆」,拥有全部管理权限 |
ADMIN_PASSWORD 环境变量(wrangler.toml)。writer123)| 用户名 | 手机号 | 专业方向 | 说明 |
|---|---|---|---|
| 张老师 | 13800001111 | 数学与应用数学 | 可测试写手间私聊 |
| 李老师 | 13800002222 | 英语语言文学 | — |
| 王老师 | 13800003333 | 计算机科学与技术 | 已有 3 单,可测试写手视角与私聊 |
| 赵老师 | 13800004444 | 经济学 | — |
| 陈老师 | 13800005555 | 临床医学 | — |
| 刘老师 | 13800006666 | 法学 | — |
客户无需注册。下单后系统自动生成 16 位访问口令(Token)与专属链接,客户凭链接自动登录。测试方法:在客户门户下单,或构造链接 https://xiaolu-tutoring.pages.dev/client.html?token=口令。
https://xiaolu-tutoring.pages.dev/client.html?token=xxx),随时可再次发送给客户。沟通中心:管理员可查看并参与全部订单对话,发送文字 / 图片(自动压缩)/ 语音,身份显示「小陆」(紫色气泡)。
通讯录:管理员可见全部写手,可发起一对一私聊(文字 / 图片 / 语音),未读消息带角标提醒。
https://xiaolu-tutoring.pages.dev/writer.html:登录后自动跳转,不再进入管理后台,只能看到分配给自己的订单。v1.2 新增的站内即时通信能力,用于写手之间、写手与管理员的非订单事务沟通(如排班协调、请教经验)。
管理员可见:全部写手;写手可见:管理员「小陆」+ 全部写手。支持按姓名搜索。
文字、图片(自动压缩)、语音消息;未读消息数角标;会话列表显示最后一条消息与时间;5 秒自动刷新。
v1.2 新增的内部交流区,管理员与写手均可参与,用于发布平台通知、经验分享、求助答疑。
每次 API 请求有 10% 概率触发惰性清理,自动删除超过 60 天的订单消息与私聊记录,无需人工干预。
Cloudflare D1 免费版单库上限 500 MB,超过后无法写入[1]。系统在清理时读取数据库实时大小,达到 400 MB(80%)时自动深度清理:30 天前消息与日志、90 天前已完成/取消订单。
发送图片时前端自动处理:超过 1 MB 或宽度大于 1920px 的图片压缩为 JPEG(质量 80%),PNG 透明底转白底,GIF 动图不压缩。
基于 MediaRecorder 录音(WebM/MP4),上传 R2 后以播放器展示;三端与私聊均可使用,单文件上限 20 MB。
登录会话持久化存储于数据库,7 天自动过期;客户口令永久有效直至订单被清理。
共 53 条测试用例,覆盖管理员 / 写手 / 客户 / 通讯录私聊 / 内部论坛 / 系统自动六类。执行时按编号逐条测试,在「10. 测试记录表」中填写结果。
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-001 | 管理员登录 | 选择「管理员」,输入 admin / admin123 | 登录成功,进入工作台,侧边栏显示「小陆」 |
| TC-002 | 工作台统计 | 进入工作台查看统计卡片 | 待处理/进行中/已完成/总收入与订单一致 |
| TC-003 | 新建订单 | 订单管理 → 新建订单 | 生成订单号、客户 token 与专属链接 |
| TC-004 | 订单详情 | 点击订单「详情」 | 展示套餐、金额、题目、学科、备注、写手、时间 |
| TC-005 | 分配写手 | 待处理订单 → 分配 → 选择写手 | 状态变「进行中」,写手收到系统通知 |
| TC-006 | 标记完成 | 进行中订单 → 标记完成 | 状态变「已完成」,收入统计更新 |
| TC-007 | 状态筛选 | 按四种状态筛选 | 列表正确过滤 |
| TC-008 | 新建套餐 | 套餐管理 → 新建套餐 | 创建成功,客户门户可见 |
| TC-009 | 编辑套餐 | 套餐卡片 → 编辑 → 修改价格 | 保存后价格立即生效 |
| TC-010 | 下架套餐 | 套餐卡片 → 下架 | 置灰显示「已下架」,客户门户不可见,历史订单不受影响 |
| TC-011 | 重新上架 | 已下架套餐 → 重新上架 | 套餐恢复正常,客户门户可见 |
| TC-012 | 添加写手 | 写手管理 → 添加写手,设置密码 | 创建成功,新写手可用该账号登录 |
| TC-013 | 编辑写手 | 写手卡片 → 编辑 → 修改专业/评分 | 信息更新成功 |
| TC-014 | 重置密码 | 写手卡片 → 重置密码 | 写手使用新密码可登录,旧密码失效 |
| TC-015 | 删除写手 | 对无订单写手执行删除 | 删除成功,账号消失 |
| TC-016 | 停用保护 | 对王老师(有进行中订单)执行删除 | 转为停用,订单不受影响,账号无法登录 |
| TC-017 | 管理员对话 | 沟通中心选择订单,发送文字 | 紫色气泡显示,发送者「小陆」 |
| TC-018 | 数据清理 | 写手管理页 → 数据清理 | 弹窗显示删除条数与数据库占用 MB |
| TC-019 | 未授权拦截 | 不带 token 调用管理 API | 返回 401「未授权,请以管理员身份登录」 |
| TC-040 | 订单客户链接 | 订单列表点击任意订单「🔗链接」 | 弹出提示并复制客户免登录链接到剪贴板 |
| TC-041 | 使用文档入口 | 侧边栏点击「📖 使用文档」 | 内容区展示本使用与测试文档,可滚动查看 |
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-020 | 写手登录 | 选择「写手」,输入 王老师 / writer123 | 登录成功,自动跳转独立写手工作台 |
| TC-021 | 订单隔离 | 写手登录后查看「我的订单」 | 仅显示分配给自己的订单(王老师 3 单) |
| TC-022 | 写手发文字 | 订单沟通选择订单,发送文字 | 蓝色气泡显示,发送者为写手姓名 |
| TC-023 | 写手发图片 | 发送 3MB 以上大图 | 发送成功且图片被压缩 |
| TC-024 | 写手发语音 | 点击 🎤 录音后结束发送 | 消息包含可播放语音条 |
| TC-025 | 停用拦截 | 用被停用账号尝试登录 | 提示「用户名或密码错误,或账号已被停用」 |
| TC-042 | 写手访问管理后台 | 写手登录态下直接访问 https://xiaolu-tutoring.pages.dev | 自动重定向到 https://xiaolu-tutoring.pages.dev/writer.html |
| TC-043 | 写手无管理菜单 | 检查写手工作台侧边栏 | 仅含 我的订单/订单沟通/通讯录/内部论坛,无套餐/写手管理等 |
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-026 | 门户访问 | 访问 https://xiaolu-tutoring.pages.dev/client.html | 展示品牌、热门套餐、下单表单 |
| TC-027 | 套餐浏览 | 进入「套餐」页 | 展示全部上架套餐 |
| TC-028 | 提交下单 | 填写信息选择套餐提交 | 成功卡片显示订单号 + 专属链接 |
| TC-029 | 链接自动登录 | 访问专属链接 | 免注册自动登录,进入「我的订单」 |
| TC-030 | 订单列表 | 登录后查看我的订单 | 仅显示自己的订单,含状态徽章 |
| TC-031 | 订单详情 | 点击订单卡片 | 展示套餐、金额、写手、状态、备注 |
| TC-032 | 客户发文字 | 与老师沟通 → 发送文字 | 灰色气泡显示 |
| TC-033 | 客户发图片 | 发送大图 | 图片自动压缩后上传成功 |
| TC-034 | 客户发语音 | 点击 🎤 录音发送 | 生成可播放语音消息 |
| TC-035 | 口令登录 | 右上角登录 → 输入口令 | 错误口令提示无效;正确口令进入订单 |
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-044 | 管理员发起私聊 | 管理员 → 通讯录 → 选择写手 → 发送文字 | 消息发送成功,写手端可见 |
| TC-045 | 未读提醒 | 写手不打开通讯录,管理员再发一条 | 写手通讯录侧边栏出现未读角标,列表显示未读数 |
| TC-046 | 写手回复管理员 | 写手 → 通讯录 → 小陆 → 回复 | 管理员通讯录出现未读角标与消息 |
| TC-047 | 写手之间私聊 | 王老师 → 通讯录 → 张老师 → 发送消息 | 张老师登录后可查看该会话 |
| TC-048 | 私聊发图片 | 私聊窗口发送大图 | 图片压缩后发送成功 |
| TC-049 | 私聊发语音 | 私聊窗口 🎤 录音发送 | 对端可见可播放的语音消息 |
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-050 | 发帖与浏览 | 管理员/写手在内部论坛发布帖子 | 帖子出现在列表,显示作者与时间,管理员带 🏛️ 标识 |
| TC-051 | 回复帖子 | 打开帖子详情 → 发表回复 | 回复出现在详情页,回复数 +1 |
| TC-052 | 删除权限 | 写手尝试删除帖子;管理员删除帖子 | 写手被拒(仅管理员可删除);管理员删除成功 |
| 编号 | 测试项 | 操作步骤 | 预期结果 |
|---|---|---|---|
| TC-036 | 消息自动清理 | 执行 60 天清理 SQL 验证规则 | 60 天前的消息可被清除,索引生效 |
| TC-037 | 容量保护 | 检查清理接口 db_size_mb;模拟超 400MB | 自动深度清理旧数据 |
| TC-038 | 图片压缩效果 | 上传 5MB、4000×3000 图片 | 压缩后明显小于原图,可正常预览 |
| TC-039 | 会话过期 | 等待 7 天或手动删除 sessions 记录 | 旧 token 失效,需重新登录 |
按 TC 编号逐条执行,通过打 ✓,失败记录现象与截图。
| 编号 | 执行人 | 结果 ✓ / ✗ | 发现的问题 / 备注 |
|---|---|---|---|
| TC-001 | |||
| TC-002 | |||
| TC-003 | |||
| TC-004 | |||
| TC-005 | |||
| TC-006 | |||
| TC-007 | |||
| TC-008 | |||
| TC-009 | |||
| TC-010 | |||
| TC-011 | |||
| TC-012 | |||
| TC-013 | |||
| TC-014 | |||
| TC-015 | |||
| TC-016 | |||
| TC-017 | |||
| TC-018 | |||
| TC-019 | |||
| TC-020 | |||
| TC-021 | |||
| TC-022 | |||
| TC-023 | |||
| TC-024 | |||
| TC-025 | |||
| TC-026 | |||
| TC-027 | |||
| TC-028 | |||
| TC-029 | |||
| TC-030 | |||
| TC-031 | |||
| TC-032 | |||
| TC-033 | |||
| TC-034 | |||
| TC-035 | |||
| TC-036 | |||
| TC-037 | |||
| TC-038 | |||
| TC-039 | |||
| TC-040 | |||
| TC-041 | |||
| TC-042 | |||
| TC-043 | |||
| TC-044 | |||
| TC-045 | |||
| TC-046 | |||
| TC-047 | |||
| TC-048 | |||
| TC-049 | |||
| TC-050 | |||
| TC-051 | |||
| TC-052 |
| 用途 | 地址 |
|---|---|
| 管理后台(管理员登录) | https://xiaolu-tutoring.pages.dev |
| 写手工作台 | https://xiaolu-tutoring.pages.dev/writer.html |
| 客户门户(免登录下单) | https://xiaolu-tutoring.pages.dev/client.html |
| 使用与测试文档 | https://xiaolu-tutoring.pages.dev/docs/xiaolu-usage-guide.html |
| 健康检查 | https://xiaolu-tutoring.pages.dev/api/health |
| 方法 | 路径 | 说明 | 鉴权 |
|---|---|---|---|
| POST | /api/orders | 客户下单,返回 token 与专属链接 | 公开 |
| GET | /api/orders?writer_id= | 订单列表(写手按 ID 过滤) | 公开* |
| PUT | /api/orders/:id/assign | 分配写手 | 管理员会话 |
| POST | /api/packages | 新建套餐 | 管理员会话 |
| PUT/DELETE | /api/packages/:id | 编辑 / 下架套餐 | 管理员会话 |
| POST | /api/writers | 添加写手 | 管理员会话 |
| PUT/DELETE | /api/writers/:id | 编辑 / 删除写手 | 管理员会话 |
| PUT | /api/writers/:id/password | 重置写手密码 | 管理员会话 |
| POST | /api/auth/client-login | 客户口令自动登录 | 公开(需口令) |
| GET | /api/client/orders | 客户查询自己的订单 | 客户会话 |
| GET/POST | /api/messages(/:id) | 订单消息读取 / 发送(含图片、语音) | 公开* |
| POST | /api/chat/send | 发送私聊消息 | 管理员/写手会话 |
| GET | /api/chat/conversations | 私聊会话列表(含未读) | 管理员/写手会话 |
| GET | /api/chat/messages?with= | 私聊聊天记录 | 管理员/写手会话 |
| POST | /api/forum/posts | 发布帖子 | 管理员/写手会话 |
| GET | /api/forum/posts(/:id) | 帖子列表 / 详情(含回复) | 公开 |
| POST | /api/forum/posts/:id/replies | 回复帖子 | 管理员/写手会话 |
| DELETE | /api/forum/posts/:id | 删除帖子 | 仅管理员 |
| POST | /api/upload | 图片 / 音频上传(R2) | 公开* |
| POST | /api/admin/cleanup | 手动数据清理 | 管理员会话 |
* 标注「公开」的管理写操作需在系统运行中通过登录会话校验;会话有效期 7 天。
回到客户门户点击右上角「登录」输入访问口令;口令丢失时,管理员在订单列表点击「🔗链接」重新获取并发送。
请使用 Chrome / Edge,允许麦克风权限;录音过短(<1 秒)会被拦截。
支持 JPG / PNG / GIF / WebP,单文件上限 20MB;大图自动压缩,仍超限请先手动缩小。
请确认管理员已在订单上「分配」该写手;写手只能看到分配给自己的订单。
系统在 400MB 时自动深度清理,也可在写手管理页手动清理;仍紧张可升级 Workers 付费版(单库上限 10GB)。
<textarea> + enterkeyhint="send" + 自动扩展高度)