From 1392830e57f3ea0b9e71a3604f220e7232af37ab Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Wed, 8 Jul 2026 12:35:09 +0200 Subject: [PATCH] =?UTF-8?q?refactor(backend):=20jobs=20=E8=AF=BB=E7=AB=AF?= =?UTF-8?q?=E7=82=B9=E8=B5=B0=20JobRepo=20=E8=80=8C=E9=9D=9E=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=86=85=E8=A3=B8=20ORM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GET /jobs/{id} 原在路由里直接 select(Job) 裸 ORM 查询;改为经 get_job_repo 注入 JobRepo 调 .get(job_id),与项目其它端点的 Repository 分层一致, 测试可经 dependency_overrides 注 fake。行为不变(同一 session 同一查询)。 --- apps/api/ww_api/routers/jobs.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/api/ww_api/routers/jobs.py b/apps/api/ww_api/routers/jobs.py index 515a481..e2f99a8 100644 --- a/apps/api/ww_api/routers/jobs.py +++ b/apps/api/ww_api/routers/jobs.py @@ -6,13 +6,11 @@ import uuid from typing import Annotated from fastapi import APIRouter, Depends -from sqlalchemy import select -from sqlalchemy.ext.asyncio import AsyncSession -from ww_db import get_session -from ww_db.models import Job +from ww_core.domain import JobRepo from ww_shared import AppError, ErrorCode, ErrorEnvelope from ww_api.schemas.jobs import JobResponse +from ww_api.services.project_deps import get_job_repo router = APIRouter(prefix="/jobs", tags=["jobs"]) @@ -23,9 +21,9 @@ router = APIRouter(prefix="/jobs", tags=["jobs"]) ) async def get_job( job_id: uuid.UUID, - session: Annotated[AsyncSession, Depends(get_session)], + job_repo: Annotated[JobRepo, Depends(get_job_repo)], ) -> JobResponse: - job = (await session.execute(select(Job).where(Job.id == job_id))).scalar_one_or_none() + job = await job_repo.get(job_id) if job is None: raise AppError(ErrorCode.NOT_FOUND, f"job {job_id} not found") return JobResponse(