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