fix: v3.0.1 - 修复5个代码问题

修复内容:
1. Collection 模型唯一约束逻辑错误
   - 修改约束从 (user_id, site_id, folder_id) 到 (user_id, site_id)
   - 防止用户多次收藏同一网站

2. 用户注册重复提交数据库
   - 优化为只提交一次数据库操作
   - 提升注册性能

3. JavaScript 未使用的变量
   - 删除 updateCollectButton() 中未使用的 icon 变量

4. 文件夹计数逻辑缺失
   - 为每个文件夹添加收藏数量计算
   - 修复收藏列表页面显示

5. JavaScript 错误处理不完善
   - 所有 fetch 调用添加 HTTP 状态码检查
   - 改进网络错误提示

新增文件:
- fix_collection_constraint.py - 数据库约束修复脚本
- BUGFIX_v3.0.1.md - 详细修复记录

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Jowe
2026-02-06 19:27:12 +08:00
parent 423039ce68
commit 7a6fd0c388
5 changed files with 244 additions and 8 deletions

View File

@@ -0,0 +1,48 @@
"""
数据库修复脚本:修复 Collection 表的唯一约束
运行方式python fix_collection_constraint.py
"""
import os
from app import create_app
from models import db
def fix_collection_constraint():
"""修复 Collection 表的唯一约束"""
app = create_app(os.getenv('FLASK_ENV', 'development'))
with app.app_context():
print("开始修复 Collection 表的唯一约束...")
try:
# 删除旧的唯一约束
print("1. 删除旧的唯一约束 unique_user_site_folder...")
db.engine.execute(
"ALTER TABLE collections DROP INDEX unique_user_site_folder"
)
print(" ✓ 旧约束已删除")
# 添加新的唯一约束
print("2. 添加新的唯一约束 unique_user_site...")
db.engine.execute(
"ALTER TABLE collections ADD CONSTRAINT unique_user_site UNIQUE (user_id, site_id)"
)
print(" ✓ 新约束已添加")
print("\n✅ 修复完成!")
print("\n说明:")
print("- 旧约束:(user_id, site_id, folder_id) - 允许重复收藏到未分类")
print("- 新约束:(user_id, site_id) - 每个用户只能收藏一次同一个网站")
except Exception as e:
print(f"\n❌ 修复失败: {str(e)}")
print("\n可能的原因:")
print("1. 约束名称不匹配MySQL/SQLite 差异)")
print("2. 数据库中已存在重复数据")
print("3. 数据库权限不足")
import traceback
traceback.print_exc()
if __name__ == '__main__':
fix_collection_constraint()