feat: 新增点踩功能,列表卡片和详情页支持 👍/👎 投票

- 后端: 新增 dislike_count 字段(模型/Schema/数据库迁移)
- 后端: 新增 POST /api/jokes/{id}/dislike 端点
- 后端: 管理后台统计新增 total_dislikes
- 前端: 新增 useVote 组合函数(localStorage 持久化防重复)
- 前端: JokeCard 列表卡片新增 👍/👎 可点击投票按钮
- 前端: 详情页 ❤️ 改为 👍 赞一下 / 👎 踩一脚 双按钮
This commit is contained in:
bwstudio
2026-06-11 19:17:12 +08:00
parent b5194c4965
commit fde86b90d2
9 changed files with 191 additions and 45 deletions
+12
View File
@@ -12,6 +12,18 @@ from app.models.feedback import Feedback # 注册模型,确保 create_all 能
# 创建新表(如果不存在)
Base.metadata.create_all(bind=engine)
# 对已有表新增字段的兼容迁移(SQLite 不支持 ALTER TABLE ADD COLUMN IF NOT EXISTS
def _migrate_db():
from sqlalchemy import inspect, text
inspector = inspect(engine)
columns = [c["name"] for c in inspector.get_columns("jokes")]
if "dislike_count" not in columns:
with engine.connect() as conn:
conn.execute(text("ALTER TABLE jokes ADD COLUMN dislike_count INTEGER DEFAULT 0"))
conn.commit()
_migrate_db()
# Create FastAPI application
app = FastAPI(title=API_TITLE, version=API_VERSION)