feat(admin): 反馈二维码配置 + 媒体地址 + 后台提现上报数据/每日兑换

- 反馈二维码:admin feedback_qr 路由/schema/repo,feedback API 返回二维码媒体
- 媒体:core/media 与 config 调整
- 后台数据:queries 增补提现/上报查询,users/withdraw 路由与 schema 扩展
- 每日兑换:新增 daily_exchange_worker 并在 main 挂载
- 广告流奖励:ad_feed_reward 模型/仓储/schema 小改
- 脚本:seed_mock_price_reports / seed_mock_withdraws;新增 add_feed_scene 迁移

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
zzhyyyyy
2026-06-20 23:34:28 +08:00
parent fe32704898
commit 0db5384bfc
23 changed files with 1286 additions and 17 deletions
+8 -1
View File
@@ -14,7 +14,8 @@ from fastapi import APIRouter, File, Form, HTTPException, UploadFile
from app.api.deps import CurrentUser, DbSession
from app.core import media
from app.repositories import feedback as feedback_repo
from app.schemas.feedback import FeedbackOut
from app.repositories import feedback_qr as feedback_qr_repo
from app.schemas.feedback import FeedbackOut, FeedbackQrConfigOut
logger = logging.getLogger("shagua.feedback")
@@ -61,3 +62,9 @@ async def submit_feedback(
)
logger.info("feedback id=%d user_id=%d images=%d", fb.id, user.id, len(urls))
return FeedbackOut.model_validate(fb)
@router.get("/config", response_model=FeedbackQrConfigOut, summary="反馈页二维码卡配置")
def feedback_config(user: CurrentUser, db: DbSession) -> FeedbackQrConfigOut:
"""运营后台配的反馈页「加群二维码」卡(开关 + 二维码图 + 三行文案)。客户端进反馈页时拉取。"""
return FeedbackQrConfigOut(**feedback_qr_repo.get_config(db))