status.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """热点内容流程状态码。"""
  2. from __future__ import annotations
  3. class ExecutionStatus:
  4. HOT_SAVED = 10
  5. # 搜不到文章、缺标题/正文:未到 LLM 分类,不写 category_filter_* 字段
  6. NO_VALID_CONTENT = 15
  7. CONTENT_OK = 20
  8. # LLM 分类通过
  9. CATEGORY_FILTER_PASSED = 21
  10. # LLM 分类不通过(与 NO_VALID_CONTENT 互斥)
  11. CATEGORY_FILTER_REJECTED = 22
  12. CONTENT_REQUEST_FAILED = 25
  13. DECODE_SUBMITTED = 30
  14. DECODE_SUCCESS = 40
  15. DECODE_PENDING = 41
  16. DECODE_FAILED = 42
  17. DECODE_REQUEST_FAILED = 45
  18. DECODE_RESULT_FAILED = 50
  19. CONTRIBUTION_EXTRACTED = 60
  20. class PostprocessStatus:
  21. PENDING = 0
  22. DEMAND_MATCHED = 10
  23. WXINDEX_DONE = 20
  24. QUALITY_DONE = 30
  25. SKIPPED = 90
  26. FAILED = 99
  27. DECODE_API_STATUS_MAP = {
  28. "SUCCESS": ExecutionStatus.DECODE_SUCCESS,
  29. "PENDING": ExecutionStatus.DECODE_PENDING,
  30. "FAILED": ExecutionStatus.DECODE_FAILED,
  31. }
  32. def decode_api_status_to_code(status: str | None, *, has_success_response: bool) -> int:
  33. if status:
  34. mapped = DECODE_API_STATUS_MAP.get(status.strip().upper())
  35. if mapped is not None:
  36. return mapped
  37. if has_success_response:
  38. return ExecutionStatus.DECODE_SUBMITTED
  39. return ExecutionStatus.DECODE_REQUEST_FAILED