# Cloudflare 在线聊天室(D1 + KV + R2) 按 `readme.txt` 需求实现的最小可用在线聊天室:D1 存用户/房间/消息,KV 做会话与房间访问令牌缓存,R2 存图片。 ## 功能概览 - 房间模式:开放/私密 - 当前版本只有一个房间:大厅(可选设置密码) - 开放:所有人可浏览;必须注册登录才能发言 - 私密:需要密码进入;可选“允许游客匿名发言” - 用户等级:匿名游客 / 注册会员 / 认证会员 / 管理员 - 注册会员:可发文字/表情;不可上传图片 - 认证会员:可上传图片(R2) - 管理员:可编辑用户资料与等级、封禁用户、删除消息 - 页面:注册、登录、找回密码、房间列表、聊天窗口(左右气泡) - 实时:SSE(EventSource)推送(简化实现,适合 MVP) ## 本地开发 1) 安装依赖 ```bash npm i ``` 2) 创建并迁移 D1 ```bash npx wrangler d1 create chat_db # 把输出的 database_id 填到 wrangler.toml npx wrangler d1 execute chat_db --file=./schema.sql ``` 3) 创建 KV / R2,并填入 `wrangler.toml` ```bash npx wrangler kv namespace create CACHE npx wrangler r2 bucket create chat-bucket ``` 4) 启动 ```bash npm run dev ``` ## 部署 ```bash npm run deploy ``` ## 管理员 生产/开发环境:第一个注册成功的用户会自动提升为管理员(后续用户为注册会员)。 开发环境也可用接口创建管理员(`wrangler.toml` 的 `DEV_MODE = "true"`): ```bash curl -X POST http://localhost:8787/api/admin/debug/create-admin ^ -H "content-type: application/json" ^ -d "{\"username\":\"admin\",\"password\":\"admin123\"}" ``` 管理员可在页面右侧“管理 → 大厅密码”设置/取消大厅密码:设置后游客登录会要求输入该密码;取消后游客登录直接进入。