f868414966
- 新增反馈审核字段和迁移,支持 pending/adopted/rejected、未采纳原因和采纳金币 - 增加用户端反馈历史 records 接口和 admin 采纳/拒绝接口 - 采纳时同事务写状态、金币流水和审计日志,拦截重复审核 - 验证:pytest tests/test_feedback.py tests/test_admin_write.py tests/test_admin_read.py --------- Co-authored-by: lowmaster-chen <1119780489@qq.com> Reviewed-on: #66 Co-authored-by: chenshuobo <chenshuobo@wonderable.ai> Co-committed-by: chenshuobo <chenshuobo@wonderable.ai>
42 lines
938 B
Python
42 lines
938 B
Python
"""feedback 表读写。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.rewards import CN_TZ
|
|
from app.models.feedback import Feedback
|
|
|
|
|
|
def create_feedback(
|
|
db: Session,
|
|
*,
|
|
user_id: int,
|
|
content: str,
|
|
contact: str,
|
|
images: list[str] | None,
|
|
) -> Feedback:
|
|
fb = Feedback(
|
|
user_id=user_id,
|
|
content=content,
|
|
contact=contact,
|
|
images=images or None,
|
|
status="pending",
|
|
created_at=datetime.now(CN_TZ).replace(tzinfo=None),
|
|
)
|
|
db.add(fb)
|
|
db.commit()
|
|
db.refresh(fb)
|
|
return fb
|
|
|
|
|
|
def list_feedback(db: Session, *, user_id: int) -> list[Feedback]:
|
|
stmt = (
|
|
select(Feedback)
|
|
.where(Feedback.user_id == user_id)
|
|
.order_by(Feedback.created_at.desc(), Feedback.id.desc())
|
|
)
|
|
return list(db.execute(stmt).scalars().all())
|