diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 7aee6ce..fc6a68e 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -1,7 +1,6 @@
# ChatRoom 开发计划与注意事项
> **技术栈**:Laravel 12 · PHP 8.4 · Laravel Reverb (WebSocket) · Redis · MySQL 8.0 · Laravel Horizon
-> **原项目**:`/Users/pllx/Web/chat/hp0709`(VBScript ASP + MS Access 聊天室)
> **目标域名**:`http://chatroom.test`(Herd 自动配置)| `https://chat.ay.lc`(生产环境)
---
@@ -463,8 +462,6 @@ routes/
- [ ] **滚动公告管理**(后台 CRUD,`ScrollAd` 模型已建,界面待完成)
- [ ] **好友系统**(`FriendCall` / `FriendRequest` 模型已建,Controller 待完成)
- [ ] **婚姻系统**(`Marriage` 模型已建,界面待完成)
-- [ ] **历史数据迁移**(从 Access 导入旧用户数据:GBK→UTF-8 转换)
-- [ ] **密码兼容过渡**(旧 MD5 用户登录时自动升级为 bcrypt)
- [ ] **单元测试**(核心 Service 层测试覆盖率)
- [ ] **Flash 游戏替代**(`game/`、`pig/` 等 .swf 文件,考虑 HTML5/Canvas 重写)
@@ -472,39 +469,32 @@ routes/
## 七、注意事项
-### 7.1 密码兼容策略
+### 7.1 密码策略
-- 导入旧数据时,`password` 字段存原始 MD5 值(32位字符串)
-- 登录时双模式验证:`md5($input) === $storedPass` 成功后升级为 `bcrypt`
-- 新注册用户直接用 `bcrypt`(`Hash::make()`)
+- 所有用户密码使用 `bcrypt`(`Hash::make()`)
+- 登录时使用 `Hash::check()` 验证
-### 7.2 字符编码
+### 7.2 实时推送机制
-- 原 Access 数据库为 **GBK 编码**
-- 所有 MySQL 表必须 `utf8mb4_unicode_ci`
-- 导入历史数据前转换:
- ```bash
- iconv -f GBK -t UTF-8 原文件.csv > 目标文件_utf8.csv
- ```
+**聊天室所有状态变更均通过 Reverb WebSocket 广播**,无需轮询刷新。
-### 7.3 REFRESH.ASP 已废弃
+> [!NOTE]
+> 历史上基于 `` 的 6秒刷新方案已被完全取代,任何涉及聊天室状态更新的功能都应通过 Event → Broadcasting 实现,**禁止在实现中引入轮询逻辑**。
-原系统的 6 秒 `` **完全由 Reverb WebSocket 实时推送取代**,无需任何轮询逻辑。
+### 7.3 Redis 状态层设计
-### 7.4 Application 对象替代
+| 数据 | Redis Key 格式 | 说明 |
+| ------------ | ------------------------- | -------------------------- |
+| 在线用户列表 | `room:{id}:users` Hash | 值为用户信息 JSON |
+| 消息环形缓冲 | `room:{id}:messages` List | 最多保留 200 条 |
+| 房间基本信息 | `room:{id}:info` String | JSON 快照 |
+| 并发锁 | `Cache::lock("key", 10)` | 使用 `->block(5, fn)` 实现 |
-| 原 ASP | Laravel 替代 |
-| ------------------------------- | --------------------------------------------- |
-| `Application("_user_list")` | `Redis::hgetall("room:{id}:users")` |
-| `Application("_says")` 环形缓冲 | `Redis::lrange("room:{id}:messages", 0, 199)` |
-| `Application("_room_list")` | `Redis::get("room:{id}:info")` + `rooms` 表 |
-| `Application.Lock/Unlock` | `Cache::lock("key", 10)->block(5, fn)` |
-
-### 7.5 Flash 游戏(暂不处理)
+### 7.4 Flash 游戏(暂不处理)
`game/`、`pig/`、`Gupiao/` 等目录内的 `.swf` Flash 文件现代浏览器已不支持,**本期不做转换**。
-### 7.6 AI 机器人多厂商支持
+### 7.5 AI 机器人多厂商支持
`AiChatService` 支持以下 Provider,通过 `ai_provider_configs` 后台配置切换:
@@ -514,7 +504,7 @@ routes/
| `deepseek` | `deepseek-chat` | 国产低成本,兼容 OpenAI 接口 |
| `gemini` | `gemini-1.5-flash` | Google Gemini |
-### 7.7 商店商品类型说明
+### 7.6 商店商品类型说明
| type | slug 示例 | 说明 |
| ---------- | ---------------- | ---------------------- |
@@ -524,7 +514,7 @@ routes/
---
-### 7.8 积分流水系统 — 开发者使用指南 ⭐
+### 7.7 积分流水系统 — 开发者使用指南 ⭐
> [!IMPORTANT]
> **铁律**:所有涉及修改用户 `exp_num`(经验)、`jjb`(金币)、`meili`(魅力)的操作,
@@ -675,8 +665,3 @@ php artisan horizon:terminate
# 清理所有缓存
php artisan optimize:clear
```
-
----
-
-> 原 ASP 源码参考路径:`/Users/pllx/Web/chat/hp0709/`
-> 数据库 SQL 参考:`/Users/pllx/Web/chat/hp0709_php/database.sql`