"""测试数据生成与清理辅助工具。

提供常用方法：生成唯一标识、构建测试数据字典、API 层面清理数据。

Usage:
    from tests.utils.data_helper import generate_order_no, generate_phone

    order_no = generate_order_no()
    phone = generate_phone()
"""

import random
import string
from datetime import datetime


def generate_order_no(prefix: str = "TEST") -> str:
    """生成唯一订单号。"""
    ts = datetime.now().strftime("%Y%m%d%H%M%S")
    rand = "".join(random.choices(string.digits, k=4))
    return f"{prefix}{ts}{rand}"


def generate_phone() -> str:
    """生成合法格式的测试手机号（138 开头）。"""
    suffix = "".join(random.choices(string.digits, k=8))
    return f"138{suffix}"


def generate_shipment_no(prefix: str = "YB") -> str:
    """生成运单号（格式: YB + 日期 + 随机数）。"""
    ts = datetime.now().strftime("%Y%m%d")
    rand = "".join(random.choices(string.digits, k=6))
    return f"{prefix}{ts}{rand}"


def generate_unique_id(prefix: str = "id") -> str:
    """生成通用唯一 ID。"""
    ts = datetime.now().strftime("%Y%m%d%H%M%S%f")
    rand = "".join(random.choices(string.ascii_lowercase + string.digits, k=4))
    return f"{prefix}_{ts}_{rand}"
