fix: 完善个人中心卡片管理

This commit is contained in:
2026-08-03 16:49:31 +08:00
parent 8fb24f94ab
commit 3f8ff30bbc
8 changed files with 192 additions and 2 deletions

View File

@@ -136,6 +136,16 @@ def mark_help_card_copied(
return api_success(help_card_dict(HelpCardService.mark_copied(db, user=current_user, card_id=card_id)))
@router.delete("/help-card/{card_id}")
def delete_help_card(
card_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> dict:
HelpCardService.delete(db, user=current_user, card_id=card_id)
return api_success()
@router.post("/session/{session_id}/share-draft")
def generate_share_draft(
session_id: int,
@@ -165,6 +175,16 @@ def mark_share_draft_copied(
return api_success(share_draft_dict(ShareDraftService.mark_copied(db, user=current_user, draft_id=draft_id)))
@router.delete("/share-draft/{draft_id}")
def delete_share_draft(
draft_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> dict:
ShareDraftService.delete(db, user=current_user, draft_id=draft_id)
return api_success()
@router.post("/completions")
def completions(
payload: ChatCompletionRequest,

View File

@@ -62,6 +62,14 @@ class HelpCardService:
db.refresh(card)
return card
@staticmethod
def delete(db: Session, *, user: User, card_id: int) -> None:
card = db.scalar(select(TeacherHelpCard).where(TeacherHelpCard.id == card_id, TeacherHelpCard.user_id == user.id))
if card is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="求助卡不存在")
db.delete(card)
db.commit()
def help_card_dict(card: TeacherHelpCard) -> dict:
return {

View File

@@ -61,6 +61,14 @@ class ShareDraftService:
db.refresh(draft)
return draft
@staticmethod
def delete(db: Session, *, user: User, draft_id: int) -> None:
draft = db.scalar(select(ShareDraft).where(ShareDraft.id == draft_id, ShareDraft.user_id == user.id))
if draft is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="分享稿不存在")
db.delete(draft)
db.commit()
def share_draft_dict(draft: ShareDraft) -> dict:
return {

View File

@@ -2,6 +2,8 @@ from __future__ import annotations
from datetime import UTC, datetime
import pytest
from fastapi import HTTPException
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from sqlalchemy.pool import StaticPool
@@ -63,3 +65,14 @@ def test_generate_help_card_from_topic_summary_and_mark_copied():
assert copied.copied == 1
assert copied.copied_at is not None
other_user = User(id=2, phone="13800000002", name="其他学员", daily_chat_limit=100, daily_chat_used=0)
db.add(other_user)
db.commit()
with pytest.raises(HTTPException) as error:
HelpCardService.delete(db, user=other_user, card_id=card.id)
assert error.value.status_code == 404
assert db.get(TeacherHelpCard, card.id) is not None
HelpCardService.delete(db, user=user, card_id=card.id)
assert db.get(TeacherHelpCard, card.id) is None

View File

@@ -2,6 +2,8 @@ from __future__ import annotations
from datetime import UTC, datetime
import pytest
from fastapi import HTTPException
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from sqlalchemy.pool import StaticPool
@@ -65,3 +67,14 @@ def test_generate_share_draft_from_topic_summary_and_mark_copied():
assert copied.copied == 1
assert copied.copied_at is not None
other_user = User(id=2, phone="13800000002", name="其他学员", daily_chat_limit=100, daily_chat_used=0)
db.add(other_user)
db.commit()
with pytest.raises(HTTPException) as error:
ShareDraftService.delete(db, user=other_user, draft_id=draft.id)
assert error.value.status_code == 404
assert db.get(ShareDraft, draft.id) is not None
ShareDraftService.delete(db, user=user, draft_id=draft.id)
assert db.get(ShareDraft, draft.id) is None