feat: add reviewPhase filter for storage release review list

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-07-16 11:18:05 +08:00
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