storage_release_review.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from typing import List, Optional
  2. from pydantic import BaseModel, ConfigDict, Field
  3. class StorageReleaseReviewListQuery(BaseModel):
  4. model_config = ConfigDict(populate_by_name=True)
  5. page: int = Field(1, ge=1)
  6. pageSize: int = Field(10, ge=1, le=100)
  7. keyword: Optional[str] = None
  8. receptionSource: Optional[str] = None
  9. reviewConclusion: Optional[str] = None
  10. reviewSide: Optional[str] = None
  11. prodReviewConclusion: Optional[str] = None
  12. qcReviewConclusion: Optional[str] = None
  13. storageStatus: Optional[str] = None
  14. class ReviewSubmitBody(BaseModel):
  15. model_config = ConfigDict(populate_by_name=True)
  16. reviewSide: str = Field(..., description="production/qc")
  17. reviewConclusion: str = Field(..., description="tg/btg")
  18. reviewRemark: Optional[str] = None
  19. reviewAttachments: Optional[str] = None
  20. class BatchReviewBody(BaseModel):
  21. model_config = ConfigDict(populate_by_name=True)
  22. ids: List[str] = Field(..., min_length=1)
  23. reviewSide: str = Field(..., description="production/qc")
  24. reviewConclusion: str = Field(..., description="tg/btg")
  25. reviewRemark: Optional[str] = None
  26. reviewAttachments: Optional[str] = None
  27. class BatchStoreBody(BaseModel):
  28. model_config = ConfigDict(populate_by_name=True)
  29. ids: List[str] = Field(..., min_length=1)
  30. class StorageReleaseReviewListItem(BaseModel):
  31. model_config = ConfigDict(populate_by_name=True)
  32. id: str
  33. sampleCode: str
  34. receptionSource: str
  35. protocolId: Optional[str] = None
  36. receptionId: Optional[str] = None
  37. protocolNo: Optional[str] = None
  38. sampleName: Optional[str] = None
  39. reviewConclusion: Optional[str] = None
  40. reviewRemark: Optional[str] = None
  41. reviewAttachments: Optional[str] = None
  42. reviewBy: Optional[str] = None
  43. reviewByName: Optional[str] = None
  44. reviewTime: Optional[str] = None
  45. qcReviewConclusion: Optional[str] = None
  46. qcReviewConclusionLabel: Optional[str] = None
  47. qcReviewRemark: Optional[str] = None
  48. qcReviewAttachments: Optional[str] = None
  49. qcReviewBy: Optional[str] = None
  50. qcReviewByName: Optional[str] = None
  51. qcReviewTime: Optional[str] = None
  52. prodReviewConclusion: Optional[str] = None
  53. prodReviewConclusionLabel: Optional[str] = None
  54. prodReviewRemark: Optional[str] = None
  55. prodReviewAttachments: Optional[str] = None
  56. prodReviewBy: Optional[str] = None
  57. prodReviewByName: Optional[str] = None
  58. prodReviewTime: Optional[str] = None
  59. storageStatus: str
  60. storageBy: Optional[str] = None
  61. storageByName: Optional[str] = None
  62. storageTime: Optional[str] = None
  63. createTime: Optional[str] = None
  64. class StorageReleaseReviewDetail(BaseModel):
  65. model_config = ConfigDict(populate_by_name=True, extra="allow")
  66. review: Optional[dict] = None
  67. protocolInfo: Optional[dict] = None
  68. transportInfo: Optional[dict] = None
  69. receptionInfo: Optional[dict] = None
  70. qcInfo: Optional[dict] = None
  71. processQcInfoList: Optional[List[dict]] = None
  72. productionInfo: Optional[dict] = None