修改了一些bug
修复了多项bug,包括RLS策略、空实现、速率限制、外键索引、N+1查询等,并改进了登录错误、标签丢失、UI显示和权限控制。
修复及说明:
第4. articles_archive 启用了 RLS 但零策略:该表为仅限管理员身份读取。
第5. server.ts 的 setAll 为空实现:我没看懂,setAll里只有个注释:// Not used in Server Actions; handled by middleware
第 6. 已认证用户缺少速率限制:给已登录用户限制1分钟最多20条评论、留言、点赞
第 7. 缺失多个外键索引:为每个外键列添加索引会影响现有功能逻辑吗?
第8.getPostsByAuthor 列表查询使用 SELECT * :按你说的修复:像 getPublishedPosts 一样显式列出需要的列。
第9. Admin 客户端创建代码重复 4 处: 统一改为 import { createAdminClient } from '@/lib/supabase/admin'。
第10. 查询性能索引缺失:如何修复?
第11:11. savePostTags 数组类型校验缺失:加 filter以限制只能字符串
第12:getClientIp 类型签名错误:修复改为 async function getClientIp(): Promise。
第13. getAllUsers 存在 N+1 查询: 批量调用 admin.listUsers() 一次性获取或改为单条 SQL。
修复和改进):
1、退出登录后,该账户再登陆时候偶尔报错:An unexpected response was received from the server. 控制台没有打印相关错误,报错后也没有触发登陆成功的路由跳转。虽然报错了但状态栏显示为登陆成功。可能是因为之前logout有问题修改为只清除本地cookie导致的?
2、文章归档再恢复后,以前文章关联的标签丢失了,文章显示为无标签
其他改进:
3、文章查看界面的点赞评论分享、编辑归档按钮,移动到摘要上面去。
4、设置界面API密钥,设置为点击小眼睛”查看“的时候只显示前6位和后4位,其他部分按照数量变成*号显示。模型名称改成下拉框,可以设置多个,但一次只能激活1个。模型名称框不属于密码框,不要激活账号密码弹窗。
5、其他用户访问某个作者详情页面,底部留言板下面的“x条留言”和最底部“暂无留言”两个显示冲突,请修复。要求是其他用户访问作者页面只能留言,不能看到别人给他的留言。可以设置为:显示x条留言,同时显示只能作者查看。底部“暂无留言”应该是暂无可查看留言
新的修复:
1、生产环境首页点赞的时候会显示日志,需要去掉吗?
[SiteStats] handleLike called, isLiking: false
VM493 0c02mu1t0-6v2.js:1 [SiteStats] checkRateLimit: {allowed: true}allowed: true[[Prototype]]:
Object
VM493 0c02mu1t0-6v2.js:1 [SiteStats] liked, new count: 36
VM493 0c02mu1t0-6v2.js:1 [SiteStats] API response: 200
2、fix:作者列表优先显示用户名称首字的替代头像,等图片加载成功再显示图片,而不是加载不出图片才显示
替代头像
3、用户登录的时候又出现“An unexpected response was received from the
server.”报错了,但实际上已经登录上了
4、AI生成标签的时候,可以把已有标签也喂给AI让它做参考。
5、文章编辑、新建页面,输入的标签如果没有按回车就不会被保存,修改为:暂存、创建文章和保存文章的时
候,会自动把没按回车的标签保存。
6、首页文章列表底部“剩余x条未展示,点击加载更多”修改为可点击文字,而不是按钮。这个位置必须随时显
示,如果已经展示全部文章就显示:已展示全部x条文章,如果没有文章就显示没有文章,如果文章还有折叠的
就显示正在显示x篇文章,共x篇,点击加载更多
7、归档文章管理页面 /admin/archive
没有对移动端进行适配,文章卡片很多文字被换行了,移动端可以隐藏一部分信息,只展示标题、作者、归档
日期,可以只用图标。不要以卡片形式展示,src\components\admin\archive-list.tsx
列表不要用卡片形式,用表格形式,紧凑型。