schema.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict, Field
  4. class StandardConditionInfoSchema(BaseModel):
  5. """使用规则因子"""
  6. rule_factor: str = Field(description="条件类型")
  7. rule_value: str = Field(description="条件值")
  8. rule_operator: Optional[str] = Field(
  9. default=None, description="操作符: LT(<)/LE(<=)/EQ(=)/NE(!=)/GE(>=)/GT(>)"
  10. )
  11. rule_name: Optional[str] = Field(default=None, description="条件名称")
  12. class AssetShareSourceInfoSchema(BaseModel):
  13. """资产共享源信息"""
  14. share_mode: str = Field(description="共享模式")
  15. source_id_list: list[str] = Field(description="源ID列表")
  16. class ExpenseRuleCreateSchema(BaseModel):
  17. """创建费控使用规则请求 (alipay.ebpp.invoice.institution.expenserule.create)"""
  18. institution_id: str = Field(description="制度ID (必填)")
  19. standard_name: str = Field(max_length=20, description="费控规则名称 (必填)")
  20. standard_desc: Optional[str] = Field(default=None, description="规则描述")
  21. expense_type_sub_category: str = Field(
  22. description="费用类型子类 (必填): TAKE_AWAY(外卖)/REACH_SHOP(到店)/METRO(地铁)"
  23. )
  24. standard_condition_info_list: list[StandardConditionInfoSchema] = Field(
  25. description="使用规则因子列表 (必填)"
  26. )
  27. enterprise_id: Optional[str] = Field(default=None, description="企业码ID")
  28. account_id: Optional[str] = Field(default=None, description="企业共同账户ID (已废弃)")
  29. agreement_no: Optional[str] = Field(default=None, description="授权签约协议号 (已废弃)")
  30. outer_source_id: Optional[str] = Field(default=None, description="外部唯一标识(幂等)")
  31. open_rule_id: Optional[str] = Field(default=None, description="开票规则ID")
  32. payment_policy: Optional[str] = Field(
  33. default=None, description="支付策略: PERSONAL(全部个人账户)/COMBINATION(组合支付)"
  34. )
  35. consume_mode: Optional[str] = Field(
  36. default=None, description="消费模式: COUPON_ONLY/COUPON_AND_CAP/DEFAULT"
  37. )
  38. expense_cert_type: Optional[str] = Field(default=None, description="费用凭证类型")
  39. personal_qrcode_mode: Optional[int] = Field(default=None, description="个人二维码模式")
  40. asset_share_source_info: Optional[AssetShareSourceInfoSchema] = Field(default=None, description="资产共享源信息")