""" 验证码仓储接口 """ from abc import ABC, abstractmethod from typing import Optional from packages.domain.verification_code import VerificationCode class VerificationCodeRepository(ABC): """验证码仓储接口""" @abstractmethod def save(self, code: VerificationCode) -> None: """保存验证码""" pass @abstractmethod def find_latest(self, recipient: str, code_type: str) -> Optional[VerificationCode]: """查找最新的有效验证码""" pass @abstractmethod def find_by_id(self, code_id: str) -> Optional[VerificationCode]: """根据 ID 查找验证码""" pass @abstractmethod def count_today(self, recipient: str, code_type: str) -> int: """统计当日发送次数(频控用)""" pass