fix: 修复 episodes + yearly_targets 模型导入缺失,增 DELETE 接口,冒烟 6/6 全绿

This commit is contained in:
simonkoson
2026-05-15 13:05:58 +08:00
parent 773441bb87
commit b3667aa7b9
5 changed files with 244 additions and 65 deletions
+18 -2
View File
@@ -1,5 +1,5 @@
"""
节目期次 API — 增改查(责编和管理员可操作)
节目期次 API — 增改查(责编和管理员可操作)
"""
from fastapi import APIRouter, Depends, HTTPException, status
@@ -7,6 +7,7 @@ from sqlmodel import Session, select
from app.core.deps import get_current_user, require_role
from app.db.session import get_session
from app.models.episode import Episode
from app.models.user import User, UserRole
from app.schemas.episode import EpisodeCreate, EpisodeResponse, EpisodeUpdate
@@ -79,4 +80,19 @@ def update_episode(
session.add(episode)
session.commit()
session.refresh(episode)
return episode
return episode
@router.delete("/{episode_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_episode(
episode_id: int,
session: Session = Depends(get_session),
current_user: User = Depends(require_role(UserRole.zhipianren, UserRole.zebian)),
):
"""删除一期节目(仅管理员/责编)。"""
episode = session.get(Episode, episode_id)
if episode is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="期次不存在")
session.delete(episode)
session.commit()
return None
+1 -1
View File
@@ -6,7 +6,7 @@ from fastapi import APIRouter, Depends, HTTPException, status
from sqlmodel import Session, select
from app.core.deps import get_current_user, require_role
from app.core.security import hash_password, verify_password
from app.core.security import hash_password
from app.db.session import get_session
from app.models.user import User, UserRole
from app.schemas.user_admin import UserCreate, UserResponse, UserUpdate
+18 -2
View File
@@ -1,5 +1,5 @@
"""
年度收视目标 API — 增改查
年度收视目标 API — 增改查
业务规则(.clinerules 5.2 只增不改):
- yearly_targets.year 有 UNIQUE 约束
@@ -13,6 +13,7 @@ from sqlmodel import Session, select
from app.core.deps import get_current_user, require_role
from app.db.session import get_session
from app.models.user import User, UserRole
from app.models.yearly_target import YearlyTarget
from app.schemas.yearly_target import YearlyTargetCreate, YearlyTargetResponse, YearlyTargetUpdate
router = APIRouter(prefix="/api/yearly_targets", tags=["年度目标"])
@@ -93,4 +94,19 @@ def update_target(
session.add(target)
session.commit()
session.refresh(target)
return target
return target
@router.delete("/{target_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_target(
target_id: int,
session: Session = Depends(get_session),
current_user: User = Depends(require_role(UserRole.zhipianren, UserRole.zebian)),
):
"""删除年度目标(仅管理员/责编)。"""
target = session.get(YearlyTarget, target_id)
if target is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="目标不存在")
session.delete(target)
session.commit()
return None