from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class OutsourceNotifySchema(BaseModel): """外部消费额度同步请求 (alipay.ebpp.invoice.expensecomsue.outsource.notify) 外部和企业码进行额度共管的场景下,外部以交易形式(支付、退款)将额度变更同步给支付宝 """ # 必填字段 enterprise_id: str = Field(description="企业ID") employee_id: str = Field(description="员工ID") standard_id: str = Field(description="使用规则ID(标准ID)") amount: float = Field(description="消费金额(元),正数为消费/支付,负数为退款") out_source_id: str = Field(description="外部业务号(幂等ID)") deal_time: str = Field(description="交易时间,格式:yyyy-MM-dd HH:mm:ss") # 可选字段 account_id: Optional[str] = Field(default=None, description="企业余额账户ID") agreement_no: Optional[str] = Field(default=None, description="授权签约协议号") employee_id_type: Optional[str] = Field(default=None, description="员工ID类型: EMPLOYEE/PHONE/ENTERPRISE_PAY_UID") employee_open_id: Optional[str] = Field(default=None, description="员工open_id") extend: Optional[str] = Field(default=None, description="扩展参数,JSON格式") is_off_set: Optional[str] = Field(default=None, description="是否冲抵: Y/N") platform: Optional[str] = Field(default=None, description="平台类型") relate_no: Optional[str] = Field(default=None, description="关联单号") # 本地补充字段 institution_id: Optional[str] = Field(default=None, description="制度ID(本地补充,用于写pay_expense_quota)") class OutsourceNotifyOutSchema(BaseModel): """外部消费额度同步响应""" success: bool = Field(description="是否成功") out_source_id: str = Field(description="外部业务号") message: str = Field(default="", description="响应消息")