Files
xianyan/docs/toolsapi/CHANGELOG.md
Developer 00ff5f152a feat: 添加清除结果功能到检查提供者
refactor: 更新URL哈希处理逻辑

feat: 添加聊天消息存储支持

docs: 更新API控制器基类文档

chore: 删除无用脚本文件

fix: 修复分类模型返回类型问题

feat: 添加回执登录功能

build: 更新依赖项配置

style: 统一HTML模板中的哈希ID引用格式

ci: 添加部署和检查脚本
2026-04-30 10:19:56 +08:00

25 KiB
Raw Blame History

CHANGELOG

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/receiptLoginapi/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 / apitest@example.com

修复 - 数据表适配(零新增表)

  • 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)
  • 轻量模式: getByIdslite=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 ⏸️ 暂不开发