# CHANGELOG ## v10.3.2 (2026-06-27) ### 🔐 隐私权管理增强 - 多方式登录/忘记密码注销/SMTP检测 **重要更新**:完善隐私权管理页面登录与注销流程,新增SMTP配置检测、4种登录方式、忘记密码注销回执码流程,前端UI全面重构。 #### 新增功能 | 功能 | 说明 | 优先级 | |------|------|--------| | 🔍 SMTP配置检测 | 公开API检测SMTP主机/端口/加密/密码是否配置完整+TCP端口可达性 | ⭐⭐⭐ | | 🔑 4种登录方式 | 密码/密保问题/邮箱验证码/回执号登录,iOS分段控制器切换 | ⭐⭐⭐⭐⭐ | | 📧 忘记密码注销 | 凭邮箱或密保答案验证身份→发送回执码→凭回执码提交注销(无需登录) | ⭐⭐⭐⭐⭐ | | 👤 状态查询显示昵称 | accountLookup返回nickname字段(脱敏处理,非账号) | ⭐⭐⭐⭐ | | 🌐 URL语言后缀 | 切换语言时URL同步更新`?lang=zh`/`?lang=en` | ⭐⭐⭐ | | 📋 注销事件查询 | 原"设备Tab"改为"注销事件查询",展示注销申请记录+删除进度 | ⭐⭐⭐ | | ✅ 注销协议勾选框 | 注销确认输入框下方增加协议勾选(可超链接),未勾选禁止提交 | ⭐⭐⭐⭐ | #### 新增API接口 | 接口 | 方法 | 路径 | 说明 | |------|------|------|------| | SMTP状态检测 | GET | `/api/user_security/checkSmtpStatus` | 返回配置完整度+端口可达性 | | 密保问题登录 | POST | `/api/user_security/secQuestionLogin` | account+sec_answer | | 邮箱验证码登录 | POST | `/api/user_security/emailCodeLogin` | email+captcha(未注册自动创建) | | 发送注销回执码 | POST | `/api/user_security/sendDeletionCode` | 验证身份后发送6位码到邮箱 | | 凭回执码注销 | POST | `/api/user_security/requestDeletionByReceipt` | 无需登录,凭回执码提交注销 | #### 前端变更 | 区域 | 变更 | |------|------| | Tab结构 | 移除"其他协议"Tab;"设备"Tab改为"📋 注销事件查询" | | 登录表单 | 重构为4种方式(iOS SegmentedControl):密码/密保/邮箱验证码/回执号 | | 忘记密码注销 | 新增可折叠区域:邮箱/密保两种验证→发送回执码→提交注销 | | 注销确认 | 增加协议勾选框(超链接《账号使用协议》和《隐私政策》) | | 状态查询 | 显示"👤 用户昵称: xxx" | | URL语言 | `?lang=zh`/`?lang=en` 后缀同步(history.replaceState) | | 多语言 | zh/en各新增约50个I18N key | | 文件行数 | 1942行 → 2687行 | #### 测试结果 ``` ✅ SMTP配置检测 配置完整+端口可达(host=free.mboxhosting.com:465/SSL) ✅ accountLookup昵称 返回nickname字段 ✅ 密保问题登录 API正常(测试账号未设密保→正确返回错误) ✅ 发送注销回执码 回执码已发送到 pt*****@test.local ✅ 错误回执码拦截 错误回执码被正确拦截 ✅ 前端5个URL HTTP 200 (中文/英文/注销Tab/事件Tab/偏好Tab) 通过率: 10/10 (100%) ``` --- ## v10.3.1 (2026-06-27) ### 🛡️ 隐私权管理增强 - GDPR/PIPL/COPPA合规升级 **重要更新**:完善隐私权管理功能,新增6大能力(隐私偏好/设备管理/注销进度/未成年保护/邮件通知/数据最小化),修复跨域BUG,达到GDPR/PIPL/COPPA合规要求。 #### 新增功能 | 功能 | 说明 | 合规依据 | |------|------|----------| | 🔧 隐私偏好管理 | 4类数据处理同意开关(analytics/marketing/personalization/third_party_share) | GDPR Art.7 | | 📱 登录设备管理 | 设备列表/位置/最后活跃时间,支持远程登出 | 用户体验+安全 | | 📊 数据删除进度可视化 | 注销后展示8类数据删除进度条(账号/Token/设备/收藏/笔记/签到/积分/文章) | 透明度要求 | | 👨‍👩‍👧 未成年保护 | 注册时校验出生日期,14岁以下禁止注册,14-17岁开启家长控制(每日120分钟/内容过滤/禁消费) | COPPA/GDPR-K | | 📧 注销邮件通知 | 用户提交注销后异步发送确认邮件到注册邮箱,防冒用 | 安全要求 | | 🗑️ 数据最小化保留 | 注销记录保留期从2年→6个月,username做SHA256哈希存储 | PIPL最小化原则 | #### BUG修复 | BUG | 原因 | 修复 | |-----|------|------| | ❌ 注销提交后后台查不到 | `API_BASE='https://tools.wktyl.com'`从s2ss.com发起跨域请求,`__token__`响应头不可读导致authToken=null | API_BASE改为相对路径`''`,优先从JSON body读取token | | ❌ 管理后台注销列表空 | admin/controller/Userdeletion.php中`$list`查询未带filter | 使用单一`$listQuery`统一过滤 | | ❌ 英文模式下输入框仍显示中文 | `switchLang()`未更新placeholder | 新增`phLookupAccount`/`phLoginAccount`/`phLoginPassword`翻译 | | ❌ SQL迁移ADD COLUMN IF NOT EXISTS失败 | 服务器MySQL版本不支持该语法 | 改用存储过程+INFORMATION_SCHEMA检查 | #### 新增API接口 | 接口 | 方法 | 路径 | 说明 | |------|------|------|------| | 隐私偏好查询 | GET | `/api/user_security/getConsents` | 返回4类同意状态 | | 隐私偏好更新 | POST | `/api/user_security/updateConsents` | 批量更新同意开关 | | 登录设备列表 | GET | `/api/user_security/listDevices` | 返回设备列表含位置/最后活跃 | | 远程登出设备 | POST | `/api/user_security/revokeDevice` | 通过id/device_id登出指定设备 | | 注销进度查询 | GET | `/api/user_security/deletionProgress` | 返回8类数据删除状态+百分比 | | 家长控制状态 | GET | `/api/user_security/parentalControlStatus` | 返回未成年状态+家长控制配置 | | 更新出生日期 | POST | `/api/user_security/updateBirthday` | 补充/修改出生日期,自动更新未成年状态 | | 清理旧注销记录 | GET | `/api/user_security/cleanupOldDeletionRecords` | 清理6个月以上已完成注销记录 | #### 数据库变更 | 表 | 变更 | 说明 | |----|------|------| | `tool_user_consents` | 新建表 | 用户数据处理同意记录(user_id+consent_type唯一) | | `tool_user_deletion` | 新增 `deletion_progress` text | 注销进度JSON | | `tool_user_deletion` | 新增 `deletion_summary` varchar(500) | 注销数据摘要 | | `tool_user` | 新增 `birthday` date | 出生日期 | | `tool_user` | 新增 `is_minor` tinyint(1) | 是否未成年(0/1) | #### 前端变更 | 文件 | 变更 | |------|------| | `privacy-rights.html` | 4→6 Tab(新增📱设备/⚙️偏好),注销进度条,浏览器语言自动检测,登录态联动 | | `account-agreement.html` | V6.6→V6.7:保留期2年→6个月+SHA256哈希 | #### 测试结果 ``` ✅ register(带birthday) code=1 注册成功,age=31 is_minor=0 ✅ parentalControlStatus code=1 返回家长控制配置 ✅ updateBirthday(未成年) code=1 改为2010年生,is_minor=1 ✅ getConsents code=1 返回4项同意配置 ✅ updateConsents code=1 成功更新4项 ✅ listDevices code=1 返回设备列表 ✅ deletionProgress code=1 返回进度 ✅ privacy-rights.html HTTP 200 (devices/preferences tab正常) 通过率: 8/8 (100%) ``` #### 部署清单 - 已上传7个文件到 `123.207.67.197:/www/wwwroot/tools.wktyl.com/` - 备份目录: `backup_privacy_rights_20260627_021954` - SQL迁移已执行(存储过程兼容MySQL 5.7) --- ## v10.3.0 (2026-06-27) ### 🛡️ 隐私权管理中心 + Google Play应用外账户管理 **重大更新**:新增独立的隐私权管理网页,满足Google Play数据安全合规要求,支持应用外账号状态查询与注销。 #### 新增功能 | 功能 | 说明 | |------|------| | 🛡️ 隐私权管理页面 | 4-Tab界面:状态查询/注销账号/隐私权利/其他协议,Apple风格设计,中英双语 | | 🔍 公开账号状态查询 | `accountLookup` API,无需登录即可查询5种状态(正常/封锁/注销中/已注销/无记录) | | 🔐 HMAC-SHA256防枚举 | 查询接口需回执签名,防止账号枚举攻击 | | 📋 账号协议V6.6 | 新增长期未登录账号回收政策(12/18/24个月三级)、服务器数据删除时限、Google Play合规说明 | | 🧪 全流程验证脚本 | `test_privacy_rights_flow.py`,覆盖注册→登录→查询→注销→查询状态→撤销6个接口 | #### 新增文件 | 文件 | 说明 | |------|------| | `public/agreements/privacy-rights.html` | 隐私权管理中心网页(1488行,含Web Crypto API回执生成) | | `Scripts/upload_privacy_rights.py` | 服务器文件上传脚本(含备份、SSH端口2026) | | `Scripts/test_privacy_rights_flow.py` | 全流程接口验证脚本(6/6通过) | #### 修改文件 | 文件 | 修改内容 | |------|----------| | `application/api/controller/UserSecurity.php` | 新增 `accountLookup()` 方法(1152行),加入 `$noNeedLogin` 和 `$rateLimits` | | `application/route.php` | 新增 `api/user_security/accountLookup` 路由(第73行) | | `public/agreements/account-agreement.html` | 升级V6.6:新增3.4长期未登录账号回收政策、4.5服务器数据删除时限、4.6应用外账户管理支持 | | `public/agreements/index.html` | 隐私与安全分区新增"隐私权管理"入口(中英文) | | `Scripts/upload_agreements.py` | 修复SSH端口从22改为2026 | #### API接口 | 接口 | 方法 | 路径 | 说明 | |------|------|------|------| | 账号状态查询 | POST | `/api/user_security/accountLookup` | 公开接口,需回执验证,限流20次/小时/IP | #### 状态查询返回值 | status | status_text | 说明 | |--------|-------------|------| | `normal` | 正常 | 账号正常使用 | | `blocked` | 封锁 | 账号被封禁 | | `deleting` | 注销中 | 注销申请审核中 | | `deleted` | 已注销 | 账号已注销 | | `no_record` | 无记录 | 查无此账号 | #### 测试结果 ``` ✅ register code=1 注册成功 ✅ login code=1 登录成功 ✅ accountLookup code=1 状态查询成功 ✅ requestDeletion code=1 注销申请提交成功 ✅ deletionStatus code=1 注销状态查询成功 ✅ cancelDeletion code=1 撤销注销成功 通过率: 6/6 (100%) ``` #### 部署URL - 隐私权管理页:https://tools.wktyl.com/agreements/privacy-rights.html - 协议列表页:https://tools.wktyl.com/agreements/index.html - 账号协议页:https://tools.wktyl.com/agreements/account-agreement.html --- ## v10.2.1 (2026-06-25) ### 🛡️ 限流排队系统优化 **安全更新**:新增首次访问免排队防遍历机制,防止恶意用户伪装IP遍历页面。 #### 新增功能 | 功能 | 说明 | |------|------| | 🛡️ 防遍历机制 | 同一页面在60秒内最多允许3次"首次访问",超过阈值自动取消免排队 | | 📊 访问追踪 | 记录每个页面的首次访问次数(runtime/rate_limit/first_visit_*.txt) | | 🚫 自动封禁 | 检测到遍历行为后,设置blocked标记cookie,60秒内不再提供免排队 | #### 修改文件 | 文件 | 修改内容 | |------|----------| | `application/common/behavior/RateLimitBehavior.php` | isFirstVisit()方法增加防遍历逻辑,记录页面访问次数 | #### 技术实现 - **追踪文件**:`runtime/rate_limit/first_visit_{md5(pagePath)}.txt` - **时间窗口**:与首次访问免排队有效期一致(默认60秒) - **阈值**:同一页面最多3次"首次访问" - **封禁策略**:超过阈值后设置cookie值为`blocked`,阻止继续尝试 #### 测试验证 - 防遍历机制正常工作 ✅ - 正常用户首次访问不受影响 ✅ --- ## v10.2.0 (2026-06-25) ### 🚦 新增全局限流排队系统 **重大更新**:实现全站网页端请求限流排队机制,保护服务器在高并发场景下的稳定性。 #### 核心功能 | 功能 | 说明 | |------|------| | 🚦 全局限流 | 限制全站每秒最多10次MySQL查询,超出后触发排队 | | 📊 排队页面 | iOS风格排队页面,显示队列人数、预计等待时间 | | 🔐 验证码插队 | 简单数学验证码,验证通过后30分钟内免排队 | | 🎯 客户端免排队 | 闲言APP客户端请求(带X-Client Header)不受限流影响 | | 👤 登录用户免排队 | 已登录的网页用户自动跳过排队 | | 🆕 首次访问免排队 | 用户分享的URL直接打开时免排队(60秒内有效) | | ⚙️ 白名单机制 | 静态资源、后台、API路径、特定工具页面免限流 | #### 新增文件 | 文件 | 说明 | |------|------| | `application/extra/rate_limit.php` | 限流配置文件(可调阈值、白名单、Cookie有效期) | | `application/common/behavior/RateLimitBehavior.php` | 限流行为类(核心逻辑:计数器、白名单、排队页面渲染) | | `application/index/controller/Queue.php` | 排队控制器(check/captcha/verify/status接口) | | `application/index/view/queue/index.html` | 排队页面模板(iOS风格,自动轮询,验证码输入) | | `Scripts/test_rate_limit.py` | Python测试脚本(8个测试场景) | | `Scripts/upload_rate_limit.py` | 代码上传脚本 | #### 修改文件 | 文件 | 修改内容 | |------|----------| | `application/tags.php` | 注册 RateLimitBehavior 到 module_init 钩子 | | `application/route.php` | 添加排队相关路由(/queue/check, /queue/captcha, /queue/verify, /queue/status) | #### 技术实现 - **计数器存储**:文件计数器(runtime/rate_limit/counter_*.txt) - **时间窗口**:固定1秒窗口 - **排队页面**:503状态码 + Retry-After头 + HTML页面 - **验证码**:数学题(如 3+5=?),验证通过后设置Cookie(30分钟有效) - **白名单**:静态资源扩展名、路径前缀、控制器、具体工具页面、IP #### 测试验证 - 单请求正常访问 ✅ - 并发请求触发排队 ✅ - API客户端跳过排队 ✅ - 验证码生成与验证 ✅ - 队列状态检查 ✅ - 白名单路径免限流 ✅ - 排队页面内容验证 ✅ #### 配置说明 配置文件:`application/extra/rate_limit.php` ```php return [ 'enabled' => true, // 是否启用 'max_queries_per_second' => 10, // 每秒最大查询次数 'time_window' => 1, // 时间窗口(秒) 'captcha_valid_duration' => 1800, // 验证码免排队有效期(30分钟) 'first_visit_duration' => 60, // 首次访问免排队有效期(60秒) 'queue_poll_interval' => 2000, // 排队页面轮询间隔(毫秒) 'queue_max_wait' => 300, // 最大等待时间(秒) ]; ``` #### 使用方式 1. **上传代码到服务器**: ```bash python Scripts/upload_rate_limit.py ``` 2. **运行测试脚本**: ```bash python Scripts/test_rate_limit.py ``` 3. **浏览器验证**: - 访问 https://tools.wktyl.com/ - 快速刷新页面触发排队 - 输入验证码插队 --- ## v10.0.0 (2026-06-01) ### 📚 新增稍后读/字体同步/插件更新 API接口文档 **重大更新**:新增稍后读同步+协作+AI摘要、字体同步、插件更新三个模块的API接口文档,以及对应的管理员端管理模块文档。 #### 新增功能 | 功能 | 说明 | |------|------| | 📖 稍后读同步 | upload/download/delete/fullSync 四个同步接口 | | 👥 稍后读协作 | createSharedList/inviteMember/shareMessage/listMessages/myLists/leaveList 六个协作接口 | | 🤖 AI摘要 | generateSummary/batchSummarize/dailySummary/suggestTags 四个AI接口 | | 🔤 字体同步 | list获取在线字体列表、install建表 | | 🔌 插件更新 | check/checkAll/syncState/loadState 四个接口、install建表 | #### 管理员端新增 | 模块 | 说明 | |------|------| | 27. 稍后读数据管理 | 消息列表查看、过期消息清理 | | 28. 共享列表管理 | 列表查看、删除 | | 29. 字体管理 | 字体CRUD、启用/禁用、排序 | | 30. 插件元信息管理 | 插件版本发布、启用/禁用 | | 31. 插件用户设置 | 用户插件设置只读列表 | #### 数据库变更 | 表 | 说明 | 管理操作 | |----|------|----------| | tool_readlater_messages | 稍后读消息 | CRUD | | tool_readlater_shared_lists | 共享列表 | CRUD | | tool_readlater_shared_members | 共享列表成员 | 只读 | | tool_readlater_shared_messages | 共享列表消息 | 只读 | | tool_fonts | 在线字体 | CRUD | | tool_plugin_meta | 插件元信息 | CRUD | | tool_plugin_user_settings | 插件用户设置 | 只读 | #### 文档更新 - `docs/API_READLATER_FONT_PLUGIN_DOC.md` v10.0.0 新建 - `docs/API_ADMIN_DOC.md` v9.3.0 → v10.0.0 新增第27-31章节 --- ## v10.1.0 (2026-05-14) ### 🛡️ 新增密保问题功能 & 多验证方式支持 **重大更新**:新增密保问题(Security Question)功能,注册时可选填密保问题;修改密码/修改密保/修改邮箱/修改手机号支持多种验证方式。 #### 新增功能 | 功能 | 说明 | |------|------| | 🛡️ 密保问题 | 8个预置密保问题,注册时可选填,用于身份验证 | | 📋 获取密保问题列表 | GET /api/user_security/secQuestions,无需登录 | | ✏️ 修改密保问题 | POST /api/user_security/changeSecQuestion,支持密码/密保/回执验证 | | 🔑 修改密码多验证 | changepwd支持password/sec_question/receipt三种验证方式 | | 📧 修改邮箱多验证 | changeemail支持receipt/sec_question两种验证方式 | | 📱 修改手机多验证 | changemobile支持receipt/sec_question两种验证方式 | #### 数据库变更 | 表 | 变更 | 说明 | |----|------|------| | tool_user | +sec_question | tinyint(2) unsigned, 密保问题编号(0=未设置,1-8) | | tool_user | +sec_answer | varchar(32), 密保答案MD5哈希 | | tool_user | +idx_sec_question | 索引 | #### 预置密保问题 | ID | 问题 | |----|------| | 1 | 您母亲的姓名是? | | 2 | 您的第一只宠物叫什么? | | 3 | 您就读的小学名称是? | | 4 | 您的出生地是? | | 5 | 您最喜欢的电影是? | | 6 | 您最好朋友的名字是? | | 7 | 您父亲的姓名是? | | 8 | 您的童年昵称是? | #### 修改文件 - `application/api/controller/UserSecurity.php` - 新增secQuestions/changeSecQuestion方法; register增加可选密保; changepwd/changeemail/changemobile支持多验证方式 - `application/api/controller/UserCenter.php` - extra字段新增sec_question密保信息 - `application/admin/command/Install/migrate_v10_1.sql` - 数据库迁移脚本 #### 文档更新 - `docs/API_USER_SECURITY_DOC.md` v9.2.0 → v10.1.0 - `docs/API_USER_CENTER_DOC.md` v1.7.0 → v1.8.0 #### 测试验证 - 全流程测试20/20通过:注册→密保验证→密码修改→邮箱修改→手机修改→密保修改→注销 ✅ - 测试账号已提交注销申请 ✅ --- ## v9.0.1 (2026-05-09) ### 🔧 修复管理员编辑页面 & 新增字段编辑支持 **修复**:管理员用户编辑页面(`user/user/edit`)返回HTTP 500错误,原因是ThinkPHP模板语法`|default`被解析为PHP关键字导致语法错误。 **新增**:管理员编辑页面支持编辑VIP会员时间、云空间、在线状态、自定义头像URL等新字段。 #### Bug修复 | 问题 | 原因 | 修复方案 | |------|------|----------| | 编辑页面HTTP 500 | `{$row.cloud_space_total\|default='819200'}` 中 `\|default` 被解析为PHP `default` 关键字 | 改用`{:...}`原生PHP语法三元运算符 | | userdeletion页面无法访问 | 模板引用`{include file="common/head"}`不存在 | 重写为自包含HTML | | userdeletion AJAX返回0条 | `buildparams()`返回不兼容的where条件 | 改用手动参数解析 | #### 新增功能 | 功能 | 说明 | |------|------| | 👑 VIP会员管理 | 编辑页面新增VIP开通/过期时间(datetimepicker),自动转时间戳 | | ☁️ 云空间管理 | 编辑页面新增云空间总量/已用字段(字节),显示当前值 | | 🔗 头像URL | 编辑页面新增avatar_url输入框,优先于上传头像 | | 🟢 在线状态 | 编辑页面新增is_online单选按钮(在线/离线) | #### 修改文件 - `application/admin/view/user/user/edit.html` - 新增VIP/云空间/头像URL/在线状态字段,修复`|default`语法 - `application/admin/controller/user/User.php` - edit()方法处理VIP时间戳转换、云空间验证 - `application/admin/controller/Userdeletion.php` - 修复index()查询,新增user_device/feed_interaction清理 - `application/admin/view/userdeletion/index.html` - 重写为自包含HTML,修复模板引用错误 #### 文档更新 - `docs/API_ADMIN_DOC.md` v9.0.0 → v9.0.1,3.3节新增编辑字段文档 - `docs/API_USER_CENTER_DOC.md` v1.5.0 → v1.5.1 - `docs/API_USER_SECURITY_DOC.md` v9.0.0 → v9.0.1 #### 测试验证 - E2E全流程测试通过:注册→登录→用户中心→申请注销→管理员批准→验证删除 ✅ - 管理员编辑页面所有新字段正常显示 ✅ - userdeletion页面正常访问和AJAX查询 ✅ --- ## v9.0.0 (2026-05-09) ### 🚀 用户中心重构 & 新增设备管理/二维码登录/会员/云空间 **重大更新**:用户中心接口重构,压缩不常用字段;新增设备管理、二维码登录、会员时间、云空间、自定义头像URL等6大功能。 #### 新增功能 | 功能 | 说明 | |------|------| | 🖥️ 设备管理 | 记录用户登录设备(IP/名称/型号/平台/应用),支持查看/下线/移除 | | 📱 二维码登录 | 跨设备扫码登录,Web端生成→APP端确认→Web端获取Token | | 🟢 在线状态 | is_online字段(5分钟内有活动=在线),登录/设备注册自动更新 | | 👑 会员时间 | vip_start_time/vip_end_time,管理员后台可配置 | | ☁️ 云空间 | 默认800KB,管理员后台可配置空间大小,记录已用/总量 | | 🔗 自定义头像URL | avatar_url字段,用户填写URL优先于上传头像 | #### 接口变更 | 接口 | 变更 | |------|------| | `GET /api/user_center/index` | 返回结构重构:新增is_online/vip/cloud_space/devices,不常用字段压缩到extra | | `POST /api/user_center/profile` | avatar参数改为avatar_url(用户填写的URL) | | `POST /api/user_center/devices` | 🆕 设备管理(list/remove/offline/offline_all) | | `POST /api/user_center/registerDevice` | 🆕 注册/更新设备信息 | | `GET /api/user_security/qrcodeGenerate` | 🆕 生成二维码登录标识 | | `POST /api/user_security/qrcodeConfirm` | 🆕 扫码确认登录(需登录) | | `GET /api/user_security/qrcodePoll` | 🆕 轮询二维码状态 | | `POST /api/user_security/qrcodeCancel` | 🆕 取消二维码 | | 所有登录接口 | 新增可选设备信息参数(device_name/device_model/platform/app_name/device_id) | #### 数据库变更 | 变更类型 | 表名 | 说明 | |----------|------|------| | 新增表 | tool_user_device | 用户设备记录(IP/名称/型号/平台/在线状态) | | 新增表 | tool_qrcode_login | 二维码登录记录(标识/状态/Token/过期时间) | | 新增字段 | tool_user | vip_start_time, vip_end_time, cloud_space_total, cloud_space_used, is_online, avatar_url | #### 修改文件 - `application/api/controller/UserCenter.php` - 重构index返回结构,新增devices/registerDevice - `application/api/controller/UserSecurity.php` - 新增二维码登录4个接口,登录记录设备信息 - `application/api/controller/User.php` - 转发层新增6个方法 - `application/common/model/User.php` - 新增6个字段类型转换 - `application/admin/command/Install/migrate_v9.sql` - 数据库迁移SQL #### 文档更新 - `docs/API_USER_CENTER_DOC.md` v1.4.0 → v1.5.0 - `docs/API_USER_SECURITY_DOC.md` v8.0.0 → v9.0.0 - `docs/API_ADMIN_DOC.md` 新增19-21节 - `docs/API_APP_FEATURE_GUIDE.md` v8.0.0 → v9.0.0,新增模块14 #### 测试验证 - `scripts/test_v9_full.py` - 全流程测试(注册→登录→设备→二维码→会员→云空间→注销→清理) - 所有11项核心功能测试通过 ✅ --- ## v8.0.2 (2026-05-01) ### 🍽️ 食物相生相克API接口 **新增**:独立的Shiwu API控制器,提供食物列表、详情、分类、搜索、热门、随机推荐功能。 #### 新增文件 - `application/api/controller/Shiwu.php` - 食物相生相克API控制器 #### 新增接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/shiwu/list` | GET | 食物列表(分页+分类筛选) | | `/api/shiwu/detail` | GET | 食物详情(含上下篇+相关推荐) | | `/api/shiwu/category` | GET | 分类列表(相生/相克) | | `/api/shiwu/search` | GET | 食物搜索 | | `/api/shiwu/hot` | GET | 热门食物排行 | | `/api/shiwu/random` | GET | 随机推荐 | #### 接口特性 - 所有接口免登录,公开访问 - 支持hash_id加密URL - 详情接口自动增加浏览量 - 列表支持分类筛选和排序 - 搜索支持关键词模糊匹配 #### 文档更新 - 新增 `docs/API_SHIWU_DOC.md` v1.0 - 食物相生相克API接口文档 #### 测试脚本 - `scripts/upload_shiwu_api.py` - 上传+测试脚本 - `scripts/test_shiwu_api_fields.py` - 字段验证测试脚本 --- ## v8.0.1 (2026-04-30) ### 🔧 接口返回值优化 & 安全修复 **优化**:所有新增操作返回记录ID,方便客户端后续操作。修复已删除笔记可被编辑的安全漏洞。 #### 优化 - `note add` 返回 `data.id`(新建笔记ID),客户端可直接编辑/删除 - `favorite add` 返回 `data.id`(收藏记录ID) - `interaction` 切换类操作(like/dislike/readlater/share/block/bookmark/collect)返回 `data.id` - `interaction comment` 返回 `data.id`(评论记录ID) #### 安全修复 - `note edit` 增加已删除笔记拦截,编辑已删除笔记返回"笔记不存在或已删除" #### 文档更新 - API_USER_CENTER_DOC 升级至 v1.4.0,补充返回ID说明 --- ## v8.0.0 (2026-04-30) ### 🔐 HMAC-SHA256回执验证机制 & 去除邮箱验证码依赖 **重大变更**:引入HMAC-SHA256端对端加密回执验证机制,替代邮箱验证码。客户端自行验证邮箱/手机/短信后发送回执,服务端验签放权。新增回执登录(receiptLogin),支持多种方式+回执登录。频率限制大幅放宽。 #### 新增 - 回执(Receipt)验证机制 - 新增 `application/common/library/Receipt.php` - HMAC-SHA256签名回执库 - `Receipt::generate()` - 生成回执+签名(action/payload摘要/ts/nonce) - `Receipt::verify()` - 严格验证(签名+TTL+nonce防重放+action+payload匹配) - `Receipt::verifyFlexible()` - 灵活验证(receiptLogin使用,payload可选匹配) - 配置项: `app_receipt_secret`(密钥) / `app_receipt_ttl`(有效期300秒) #### 新增 - 回执登录接口 - `POST /api/user_security/receiptLogin` - 🔑 回执登录(账号+回执/邮箱+回执/手机号+回执) - 自动识别account类型(邮箱/手机号/用户名) - 路由: `api/user_security/receiptLogin` → `api/UserSecurity/receiptLogin` - User.php转发层新增 `receiptLogin()` 方法 #### 变更 - 去除邮箱验证码依赖 - register: 去除 `email_code` 参数,改为 `receipt + sig` 回执验证 - changepwd: 去除 `email_code` 参数,改为 `receipt + sig` 回执验证(非测试用户) - resetpwd: 去除 `captcha` 参数,改为 `receipt + sig` 回执验证 - changeemail: 去除 `captcha` 参数,改为 `receipt + sig` 回执验证 - changemobile: 去除 `captcha` 参数,改为 `receipt + sig` 回执验证 #### 变更 - 频率限制放宽 | 接口 | 旧上限 | 新上限 | 旧窗口 | 新窗口 | |------|--------|--------|--------|--------| | login | 20 | 50 | 300 | 300 | | register | 10 | 30 | 3600 | 3600 | | resetpwd | 5 | 20 | 3600 | 3600 | | changepwd | 10 | 30 | 3600 | 3600 | | changeemail | 10 | 30 | 3600 | 3600 | | changemobile | 10 | 30 | 3600 | 3600 | | sendEms | 10 | 30 | 300 | 300 | | tokenLogin | 30 | 80 | 300 | 300 | | receiptLogin | - | 50 | - | 300 | #### 保留 - 兼容性 - sendEms/checkEms 接口保留,兼容旧客户端 - 旧路径 `/api/user/*` 继续可用(转发层) - 测试模式(test_mode)下验证码888888仍可用 - 测试用户(is_test=1)修改密码跳过回执验证 #### 回执加密说明 - 算法: HMAC-SHA256 - 密钥: `Xy7kP9mL2qR4wS8v`(配置文件可修改) - 有效期: 300秒(5分钟) - 防重放: nonce随机数,每个回执仅可使用一次 - 不影响脚本测试: 密钥固定,脚本可直接生成有效回执 #### 哪些接口不需要回执 - login(密码登录) | mobilelogin(短信登录) | tokenLogin(Token登录) - 无需回执 - Feed/Search/统计/浏览等非安全场景 - 无需回执 - 回执仅用于: register/changepwd/resetpwd/changeemail/changemobile/receiptLogin #### 文档变更 - 更新 `docs/API_USER_SECURITY_DOC.md` v8.0.0 - 回执验证机制完整文档 - 更新 `docs/API_USER_DOC.md` v8.0.0 - 新增receiptLogin - 更新 `docs/API_APP_DOC.md` v8.0.0 - 新增回执登录方式 - 更新 `docs/API_APP_FEATURE_GUIDE.md` v8.0.0 - 回执参数更新 *** ## v7.7.0 (2026-04-29) ### 🔐 用户安全+用户中心接口拆分 & 邮箱验证机制 **重大变更**:User控制器拆分为UserSecurity(用户安全)和UserCenter(用户中心)两个独立控制器,注册/改密/改邮箱引入邮箱验证码机制,点赞功能整合到feed\_interaction表(零新增表)。 #### 新增 - UserSecurity控制器(用户安全接口) - `POST /api/user_security/login` - 🔐 账号密码登录 - `POST /api/user_security/mobilelogin` - 📱 手机号登录(支持test\_mode免验证) - `POST /api/user_security/tokenLogin` - 🔑 Token令牌登录 - `POST /api/user_security/register` - 📝 用户注册(邮箱必填+邮箱验证码) - `POST /api/user_security/logout` - 🚪 退出登录 - `POST /api/user_security/changepwd` - 🔒 修改密码(旧密码+邮箱验证码双重验证) - `POST /api/user_security/resetpwd` - 🔑 重置密码(邮箱验证码) - `POST /api/user_security/changeemail` - 📧 修改邮箱(新邮箱验证码) - `POST /api/user_security/changemobile` - 📱 修改手机号(短信验证码) - `POST /api/user_security/sendEms` - 📨 发送邮箱验证码(register/changepwd/resetpwd/changeemail) - `POST /api/user_security/checkEms` - ✅ 校验邮箱验证码 - `POST /api/user_security/third` - 🔗 第三方登录 #### 新增 - UserCenter控制器(用户中心接口) - `GET /api/user_center/index` - 👤 获取用户信息 - `POST /api/user_center/profile` - ✏️ 修改个人信息 - `POST /api/user_center/signin` - ✅ 每日签到 - `GET /api/user_center/signin_calendar` - 📅 签到日历 - `POST /api/user_center/signin_makeup` - 🔄 补签 - `POST /api/user_center/favorite` - ⭐ 收藏操作(add/remove/check/list/count) - `POST /api/user_center/note` - 📝 笔记操作(add/edit/delete/list) - `POST /api/user_center/like` - 👍 点赞操作(add/remove/check) - `GET /api/user_center/public_profile` - 👁️ 用户公开主页(无需登录) - `GET /api/user_center/dashboard` - 📊 数据面板 - `GET /api/user_center/heatmap` - 🔥 活跃热力图 - `GET /api/user_center/coin` - 💰 金币记录 - `GET /api/user_center/debug` - 🐛 调试信息 #### 新增 - 邮箱验证机制 - 注册: email从可选变为必填,新增email\_code必填 - 修改密码: 新增email\_code必填(双重验证:旧密码+邮箱验证码) - 修改邮箱: 保持原有邮箱验证码验证 - 重置密码: type默认从mobile改为email - 注册成功后自动标记verification.email = 1 #### 新增 - 免验证测试用户 - config.php中test\_mode=true时,验证码888888直接通过 - tool\_user表新增is\_test字段(TINYINT DEFAULT 0) - is\_test=1的用户修改密码跳过邮箱验证 - 测试用户: apitest\_user / 123456 / #### 修复 - 数据表适配(零新增表) - like功能: 使用tool\_feed\_interaction表替代不存在的tool\_user\_like表 - like字段映射: feed\_id=target\_id, feed\_type=target\_type, action='like' - favorite功能: 移除group\_name/remark字段(tool\_user\_favorite表无此字段) - favorite新增count操作: 按类型统计收藏数 - dashboard: 使用feed\_interaction统计like\_count,移除user\_achievement依赖 - public\_profile: 使用feed\_interaction统计like\_count,移除user\_achievement依赖 - mobilelogin/changemobile: Sms不可用时优雅降级,test\_mode支持888888 #### 修复 - 配置问题 - test\_mode配置路径从Config::get('fastadmin.test\_mode')改为Config::get('test\_mode') - config.php中test\_mode配置位置修复(数组闭合语法) #### 兼容性 - 旧接口 `/api/user/*` 路由保持不变,继续可用 - 新接口路径 `/api/user_security/*` 和 `/api/user_center/*` - APP端可逐步迁移到新路径 #### 验证结果 - ✅ 28/30项通过(93.3%) - ✅ 用户安全: login/tokenLogin/checkEms/changepwd/changeemail/changemobile/resetpwd - ✅ 用户中心: index/profile/signin/favorite(CRUD+count)/note(CRUD)/like(CRUD)/dashboard/heatmap/coin/debug/public\_profile - ⚠️ 2项正常业务限制: sendEms发送频繁(60秒限制)、signin今日已签到 #### 文档变更 - 新增 `docs/API_USER_SECURITY_DOC.md` - 用户安全接口文档 - 新增 `docs/API_USER_CENTER_DOC.md` - 用户中心接口文档 - 新增 `docs/DEV_USER_SECURITY_NOTE.md` - 开发说明文档(开发完成后删除) #### 可扩展功能分析(基于现有数据表) **零新增表扩展** - 利用现有feed\_interaction表扩展更多互动类型: | 功能 | 实现方式 | 性能开销 | | --------- | ---------------------------------------------- | -------- | | 👎 踩/不喜欢 | feed\_interaction.action='dislike' | 极低 | | 🔖 稍后读 | feed\_interaction.action='readlater' | 极低 | | 📤 分享记录 | feed\_interaction.action='share' | 极低 | | 🚫 内容屏蔽 | feed\_interaction.action='block' | 极低 | | 📋 浏览历史 | feed\_interaction.action='view' | 低(需定期清理) | | ⭐ 评分(1-5) | feed\_interaction.action='rating', extra存评分值 | 低 | | 💬 评论 | feed\_interaction.action='comment', extra存评论内容 | 中 | | 🏷️ 用户标签 | user表verification字段扩展 | 极低 | | 📊 阅读统计 | feed\_interaction按日期聚合 | 低 | **tool\_user\_favorite表扩展** - 添加remark字段(1个字段): | 功能 | 实现方式 | 性能开销 | | ------- | --------------------------- | ---- | | 📝 收藏备注 | 添加remark字段(VARCHAR 100) | 极低 | | 📁 收藏分组 | 添加group\_name字段(VARCHAR 30) | 极低 | **tool\_user\_signin表扩展** - 添加字段: | 功能 | 实现方式 | 性能开销 | | ------ | ---------------- | ---- | | ⏰ 签到时间 | 添加signin\_time字段 | 极低 | *** ## v7.6.0 (2026-04-29) ### 🔄 Feed+Search全量字段统一 & 数据源扩展至44种 **重大变更**:Feed与Searchall两套API返回格式完全统一,所有类型extra字段全面补充,数据源从25种扩展至44种,确保数据库有值字段不丢失。 #### 修复 - Feed \_formatItem字段补充 - drug: extra补充 name/goods\_name/syz/gg/cf/yfyl/blfy/jj/zysx/pzwh/scqy (11项) - herbal: extra补充 effect/spell/english\_name/medicinal\_parts/plant\_morphology/origin\_distribution/harvest\_processing/drug\_properties/tropism\_taste/clinic/pharmacology/chemical\_component/usage\_taboo/prescription (14项) - wine: extra补充 name/effect/source/stock/make/usages/taboo (7项) - article: extra补充 tags/favorites/comments/rating\_sum/rating\_count (5项) - chengyu: extra补充 cy/cypy/cyzy/cycx/cynd/ywfy/cyjs/cycc/cylz + synonym/antonym/grammar/usage (16项) - hanzi: extra补充 smallimage/py/zm + image/fantizi/zy/wuxing/jg/unicode/bishunm/xiefa/ziyi (12项) - cidian: extra补充 zc/zcpy/zcpywu/zczy/zcjs + pinyin\_wu/zy/szm/cx/wljs (11项) - tisana: extra补充 effect/source/usages/taboo (4项) - word: extra补充 word/jbjs/cx/lz/wlsy (5项) - abbr: extra补充 abbr/meaning/category\_id + prc (4项) - surname: extra补充 image/initial (2项) - jieqi: extra补充 image/english/section/sanhou/origin/convention/poem/legend/health/note (10项) - nation: extra补充 capital/initial/image/subhead/vae/langue/acreage/currency/region (9项) - jiufang: extra补充 name/categories/components + usage/ingredients (5项) - illness: extra补充 jb/zz (2项) - poetry: extra补充 tag/ywjzsy/ywckzly/czbj/czckzl/jsy/jsckzly/sxy/jx/sxckzly/pj/sxe/sxckzle/ywjzse/ywckzle/jse/jsckzle/jj/wyzs/yj/xzsf/xzckzl/dj (24项) - couplet: extra补充 hp/sl/xl/yy (4项) - hitokoto: extra补充 hitokoto/from\_who/uuid (3项) - riddle: extra补充 riddle/interpret (2项) - efs: extra补充 facet/undertone (2项) - brainteaser: extra补充 topic/answer (2项) - saying: extra补充 saying (1项) - 古籍类(lunyu/hdnj/jgj/mz/zz/zuozhuan/sj/sgz/sbbf/warring/wlyh): extra补充 original/category\_id #### 修复 - Searchall \_formatItem字段补充 - 与Feed完全同步,所有类型extra字段保持一致 - saying类型title从content截取前30字 - 古籍类content统一使用original字段 - 所有类型title/content/summary字段统一使用strip\_tags #### 修复 - 字段映射统一 - 消除所有 `$row['title'] ?? ($row['xxx'] ?? '')` 双重映射,统一使用数据库原始字段名 - Feed detail与Search getById返回格式100%一致 #### 新增 - 20种数据源 - 🏥疾病(illness) | 🔤单词(word) | 📝缩写(abbr) | 👨姓氏(surname) - 🌾节气(jieqi) | 🌍国家(nation) | 🍷酒方(jiufang) - 📖论语(lunyu) | ⚕️黄帝内经(hdnj) | 📜金匮要略(jgj) - 📖墨子(mz) | 📖庄子(zz) | 📖左传(zuozhuan) - 📖史记(sj) | 📖三国志(sgz) | ⚔️孙子兵法(sbbf) - 📖战国策(warring) | 📖万历野获编(wlyh) | 🌱植物(bot) #### 验证结果 - ✅ 44种类型Feed与Searchall返回格式100%一致 - ✅ 44种类型连通性测试全部通过 - ✅ 220条详情数据(每类型5条)字段完整性验证 - ✅ 数据库有值字段全部正确映射到API输出 - ⚠️ 部分记录数据库字段值为NULL(poetry赏析/riddle答案/drug商品名等),属数据问题非代码缺失 #### 文档变更 - 更新 `docs/API_FEED_DOC.md` v7.6.0 - 频道表+extra详情表+新增20种数据源 - 更新 `docs/API_SEARCH_DOC.md` v1.2 - 数据源扩展至44种 *** ## v7.5.0 (2026-04-29) ### 📱 Feed+Search统一 & 7种数据源补充 & APP扩展功能 **重大变更**:Feed补充7种Search独有数据源,Searchall返回格式统一为Feed格式,新增fullDetail/relatedRecommend/highlight接口,补充APP扩展字段。 #### 修复 - Feed补充7种数据源 - 成语(chengyu) | 词典(cidian) | 汉字(hanzi) | 笑话(joke) | 偏方(prescription) | 药茶(tisana) | 周公解梦(zgjm) #### 修复 - Searchall返回格式统一 - getById/getByIds返回格式与Feed detail一致 - 统一字段: feed\_type/feed\_name/feed\_icon/id/title/author/content/summary/views/my\_actions/extra - 补充createtime/updatetime/互动计数/交互状态等APP扩展字段 #### 新增 - Searchall接口 - `GET /api/searchall/fullDetail` - 📄全量信息详情(含互动统计+用户交互状态) - `GET /api/searchall/relatedRecommend` - 🔗关联推荐(同类型相关内容) - `GET /api/searchall/highlight` - ✨搜索高亮(关键词标记) #### 新增 - Feed接口 - `GET /api/feed/relatedRecommend` - 🔗关联推荐(无需登录) #### 修复 - Feed relatedRecommend认证 - 添加到$noNeedLogin列表,允许匿名访问 #### 文档变更 - 更新 `docs/API_FEED_DOC.md` v7.5.0 - 更新 `docs/API_SEARCH_DOC.md` v1.1 *** ## v7.4.0 (2026-04-29) ### 🔍 全量搜索API系统上线 **重大变更**:新增全量搜索API(SearchAll控制器),支持25种数据源的精确/模糊/相关搜索、条件筛选、ID反查,全面接入APP。 #### 修复 - 搜索页面(search.html) - 修复 `search.html?type=why&word=苹果` 无法使用的问题 - 原因: `page()`方法未处理query参数,且模板变量未赋值导致"未定义变量:type"错误 - 修复: `page()`方法支持query参数自动转发到`index()`方法,空参数时赋默认值 - 修复: `index()`方法`fetch()`指定模板名`'index'`,避免从`page()`调用时模板路径错误 #### 新增 - 全量搜索API控制器(SearchAll.php) - `GET /api/searchall/search` - 🔍全量搜索(聚合25种数据源,支持精确/模糊/相关模式) - `GET /api/searchall/exact` - 🎯精确搜索(SQL `=`完全匹配) - `GET /api/searchall/fuzzy` - 🌀模糊搜索(SQL `LIKE`匹配) - `GET /api/searchall/related` - 🔗相关搜索(关键词分词扩展搜索) - `GET /api/searchall/condition` - 🎛️条件搜索(多条件组合筛选,支持11种操作符) - `GET /api/searchall/getById` - 📄ID查询(类型+ID获取详情,自动增加浏览量) - `GET /api/searchall/getByIds` - 📦ID反查(批量跨类型查询,支持轻量模式) - `GET /api/searchall/suggest` - 💡搜索建议(输入前缀自动补全) - `GET /api/searchall/hot` - 🔥热门搜索(支持1-7天统计) - `GET /api/searchall/history` - 📋搜索历史(获取/清除) - `GET /api/searchall/sources` - 📊数据源列表(25种数据源+字段信息+数据量) - `GET /api/searchall/fieldSearch` - 🎯多字段搜索(指定字段精确/模糊搜索) #### 新增 - 数据源支持(25种) - 📜古诗词(poetry) | 💡名言金句(wisdom) | 📚故事(story) | 💬一言(hitokoto) - 🧩谜语(riddle) | 🎭歇后语(efs) | 🧠脑筋急转弯(brainteaser) | 🗣️俗语(saying) - 🎵歌词(lyric) | ❓十万个为什么(why) | ✍️作文(composition) | 🏮对联(couplet) - 📖常识(cs) | 💊药品(drug) | 🌿中草药(herbal) | 🍽️食物(food) - 🍷酒方(wine) | 📰文章(article) | 🔤成语(chengyu) | 🈯汉字(hanzi) - 📚词典(cidian) | 🧪偏方(prescription) | 🍵药茶(tisana) | 😄笑话(joke) | 🌙周公解梦(zgjm) #### 新增 - APP扩展功能 - 统一返回格式: `feed_type`/`feed_name`/`feed_icon` 标识数据来源 - 相关性排序: 基于标题/内容/作者匹配度+浏览量加权 - 搜索记录: 自动记录搜索热词和用户搜索历史 - 用户交互: `getById`返回`my_actions`字段(like/favorite/bookmark) - 轻量模式: `getByIds`的`lite=1`不返回content字段,节省流量 - 条件搜索: 支持`=`/`!=`/`>`/`<`/`>=`/`<=`/`like`/`not like`/`in`/`not in`/`between` #### 新增 - 路由配置 - 12个`/api/searchall/*`路由规则(Route::rule) #### 文档变更 - 新增 `docs/API_SEARCH_DOC.md` - 全量搜索API接口文档(15个章节) #### 验证结果 - ✅ 12个API接口全部测试通过 - ✅ search.html搜索页面修复验证通过(HTTP 200) - ✅ APP模拟测试12项全部OK - ✅ 25种数据源全部可搜索 *** # 软件特性功能(已完成) | 功能 | 版本 | 状态 | 优先级 | | -------------------------------------------------------- | ------- | ----- | --- | | HMAC-SHA256回执验证机制(端对端加密/防重放/多方式登录) | v8.0.0 | ✅ 已完成 | 5 | | 回执登录(账号+回执/邮箱+回执/手机号+回执) | v8.0.0 | ✅ 已完成 | 5 | | 去除邮箱验证码依赖(改用回执验证) | v8.0.0 | ✅ 已完成 | 5 | | 频率限制放宽(安全接口上限提升2-4倍) | v8.0.0 | ✅ 已完成 | 4 | | APP端Feed+Search交互场景验证(10场景/88.9%通过) | v7.4.1 | ✅ 已完成 | 4 | | Feed+Search全量字段统一(44数据源/extra字段补充) | v7.6.0 | ✅ 已完成 | 5 | | Feed+Search返回格式统一(fullDetail/relatedRecommend/highlight) | v7.5.0 | ✅ 已完成 | 5 | | 全量搜索API系统(25数据源/12接口) | v7.4.0 | ✅ 已完成 | 5 | | APP端Feed+Search交互场景验证(10场景/88.9%通过) | v7.4.1 | ✅ 已完成 | 4 | | 推荐权重管理系统(权重/展示/推送上限/防重复) | v7.3.0 | ✅ 已完成 | 5 | | 查重系统(21数据源/4种模式/风险评级) | v7.2.0 | ✅ 已完成 | 5 | | 工具接口验证修复+文档完善(123接口/93.5%通过) | v7.1.0 | ✅ 已完成 | 4 | | Feed系统v7.0(缓存失效/N+1优化/6种互动/索引修复) | v7.0.0 | ✅ 已完成 | 5 | | Feed系统v6.1(评论/评分/稍后读/wine修复) | v3.1.0 | ✅ 已完成 | 5 | | 信息流Feed系统(15接口/18数据源) | v3.0.0 | ✅ 已完成 | 5 | | Feed互动操作(点赞/收藏/分享/评论/评分/稍后读) | v3.1.0 | ✅ 已完成 | 5 | | Feed随机内容+搜索+历史 | v3.0.0 | ✅ 已完成 | 4 | | Feed性能优化(lite/游标分页/缓存) | v3.0.0 | ✅ 已完成 | 4 | | Feed评论系统(comments接口) | v3.1.0 | ✅ 已完成 | 4 | | Feed评分系统(rating 1-5) | v3.1.0 | ✅ 已完成 | 3 | | Feed稍后读功能 | v3.1.0 | ✅ 已完成 | 3 | | 一言句子库(8812条) | v2.15.0 | ✅ 已完成 | 3 | | APP对接功能扩展(8大模块) | v2.14.0 | ✅ 已完成 | 3 | | 统计页面懒加载+实时跳数 | v2.10.0 | ✅ 已完成 | 3 | | 站内全文搜索 | v2.8.0 | ✅ 已完成 | 3 | | 系统工具管理页面 | v2.7.0 | ✅ 已完成 | 3 | | 接口文档管理页面 | v2.7.0 | ✅ 已完成 | 3 | | 酒方大全(733条) | v2.6.0 | ✅ 已完成 | 3 | | 签到/Admin修复 | v2.5.0 | ✅ 已完成 | 4 | | 数据库索引优化(21个) | v2.5.0 | ✅ 已完成 | 4 | | 管理后台API文档 | v2.4.0 | ✅ 已完成 | 3 | | 站点统计系统(7个API) | v2.9.0 | ✅ 已完成 | 3 | | 管理员端apidoc/toolgrid页面修复 | v2.12.0 | ✅ 已完成 | 3 | | 统计页面数据显示修复(6个表名映射) | v2.13.0 | ✅ 已完成 | 3 | | 每日推荐(诗词+成语+名言+故事) | v2.14.0 | ✅ 已完成 | 3 | | 搜索增强(建议/热门/历史) | v2.14.0 | ✅ 已完成 | 3 | | 签到日历+补签 | v2.14.0 | ✅ 已完成 | 3 | | 收藏分组 | v2.14.0 | ✅ 已完成 | 3 | | 成就系统(12个成就) | v2.14.0 | ✅ 已完成 | 3 | | 数据可视化(面板+热力图) | v2.14.0 | ✅ 已完成 | 3 | | 游戏模块(诗词填空+成语接龙) | v2.14.0 | ✅ 已完成 | 3 | | 文章API(投稿+展示) | v2.14.0 | ✅ 已完成 | 3 | | 点赞系统(轻量映射) | v2.14.0 | ✅ 已完成 | 3 | | 笔记空间管理(管理员端) | v2.14.0 | ✅ 已完成 | 3 | | 一言工具页面(iOS风格) | v2.15.0 | ✅ 已完成 | 3 | | 一言管理端(官方源更新) | v2.15.0 | ✅ 已完成 | 3 | # 开发进度 | 功能 | 优先级 | 状态 | | ---------------------------- | --- | ------- | | HMAC-SHA256回执验证机制 | 5 | ✅ 已完成 | | 回执登录(多方式+回执) | 5 | ✅ 已完成 | | 去除邮箱验证码依赖 | 5 | ✅ 已完成 | | 频率限制放宽 | 4 | ✅ 已完成 | | Feed+Search全量字段统一 | 5 | ✅ 已完成 | | Feed+Search返回格式统一 | 5 | ✅ 已完成 | | 全量搜索API系统 | 5 | ✅ 已完成 | | Feed信息流系统 | 5 | ✅ 已完成 | | Feed互动操作(点赞/收藏/分享/评论/评分/稍后读) | 5 | ✅ 已完成 | | 查重系统(21数据源/精确/模糊/相似度/报告) | 5 | ✅ 已完成 | | Feed随机内容+搜索+历史 | 4 | ✅ 已完成 | | Feed字段规范性优化 | 3 | ✅ 已完成 | | Feed评论功能(action=comment) | 4 | ✅ 已完成 | | Feed稍后读功能(action=readlater) | 3 | ✅ 已完成 | | Feed评分功能(action=rating) | 3 | ✅ 已完成 | | Feed内容屏蔽(action=block) | 2 | 📋 计划中 | | Feed个性化推荐算法优化 | 3 | 📋 计划中 | | Feed评论回复(二级评论) | 2 | 📋 计划中 | | Feed内容举报(action=report) | 2 | 📋 计划中 | | Feed热门评论排序 | 2 | 📋 计划中 | | 一言句子库工具 | 3 | ✅ 已完成 | | APP对接-每日推荐 | 5 | ✅ 已完成 | | APP对接-搜索增强 | 4 | ✅ 已完成 | | APP对接-签到日历 | 4 | ✅ 已完成 | | APP对接-收藏分组 | 4 | ✅ 已完成 | | APP对接-成就系统 | 4 | ✅ 已完成 | | APP对接-数据可视化 | 3 | ✅ 已完成 | | APP对接-诗词填空(含提示) | 4 | ✅ 已完成 | | APP对接-成语接龙(含提示) | 4 | ✅ 已完成 | | APP对接-文章投稿 | 3 | ✅ 已完成 | | APP对接-点赞系统 | 3 | ✅ 已完成 | | 管理员-笔记空间管理 | 5 | ✅ 已完成 | | 用户发表文章/评论/转发/关注 | 2 | ⏸️ 暂不开发 |