feat: add reviewPhase filter for storage release review list
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
6eea13370c
commit
473f345a46
3 files changed
+39
No files matched your search
@@ -42,6 +42,7 @@ async def list_storage_release_reviews(
|
||||
receptionSource: Optional[str] = None,
|
||||
reviewConclusion: Optional[str] = None,
|
||||
storageStatus: Optional[str] = None,
|
||||
reviewPhase: Optional[str] = None,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:storageReleaseReview:list")),
|
||||
):
|
||||
@@ -56,6 +57,7 @@ async def list_storage_release_reviews(
|
||||
review_conclusion=reviewConclusion,
|
||||
storage_status=storageStatus,
|
||||
keyword=keyword,
|
||||
review_phase=reviewPhase,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(result)
|
||||
|
||||
@@ -125,6 +125,14 @@ def create_review_from_reception(
|
||||
return obj
|
||||
|
||||
|
||||
def normalize_review_phase(review_phase: Optional[str]) -> Optional[str]:
|
||||
"""Return 'pending' | 'reviewed' or None when absent/invalid."""
|
||||
p = (review_phase or "").strip().lower()
|
||||
if p in ("pending", "reviewed"):
|
||||
return p
|
||||
return None
|
||||
|
||||
|
||||
def list_reviews(
|
||||
db: Session,
|
||||
*,
|
||||
@@ -135,6 +143,7 @@ def list_reviews(
|
||||
review_conclusion: Optional[str] = None,
|
||||
storage_status: Optional[str] = None,
|
||||
keyword: Optional[str] = None,
|
||||
review_phase: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Dict[str, Any]:
|
||||
q0 = db.query(BizStorageReleaseReview).filter(
|
||||
@@ -144,6 +153,19 @@ def list_reviews(
|
||||
rs = (reception_source or "").strip()
|
||||
if rs:
|
||||
q0 = q0.filter(BizStorageReleaseReview.reception_source == rs)
|
||||
phase = normalize_review_phase(review_phase)
|
||||
if phase == "pending":
|
||||
q0 = q0.filter(
|
||||
or_(
|
||||
BizStorageReleaseReview.review_conclusion.is_(None),
|
||||
BizStorageReleaseReview.review_conclusion == "",
|
||||
)
|
||||
)
|
||||
elif phase == "reviewed":
|
||||
q0 = q0.filter(
|
||||
BizStorageReleaseReview.review_conclusion.isnot(None),
|
||||
BizStorageReleaseReview.review_conclusion != "",
|
||||
)
|
||||
rc = (review_conclusion or "").strip()
|
||||
if rc:
|
||||
q0 = q0.filter(BizStorageReleaseReview.review_conclusion == rc)
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
from app.crud.storage_release_review import normalize_review_phase
|
||||
|
||||
|
||||
def test_normalize_review_phase_accepts_pending_and_reviewed():
|
||||
assert normalize_review_phase("pending") == "pending"
|
||||
assert normalize_review_phase("reviewed") == "reviewed"
|
||||
assert normalize_review_phase(" PENDING ") == "pending"
|
||||
assert normalize_review_phase("Reviewed") == "reviewed"
|
||||
|
||||
|
||||
def test_normalize_review_phase_rejects_unknown():
|
||||
assert normalize_review_phase(None) is None
|
||||
assert normalize_review_phase("") is None
|
||||
assert normalize_review_phase("all") is None
|
||||
assert normalize_review_phase("tg") is None
|
||||
Reference in new issue
Block a user