<?php

namespace Kylin\Core\Traits;

/**
 * Trace ID 追踪 Trait
 *
 * 为 ApiResponse 等类提供请求追踪 ID 生成能力。
 * 优先从请求头 X-Trace-Id 获取，若不存在则自动生成 16 位 MD5 哈希。
 * 用于分布式链路追踪和日志关联。
 */
trait HasTraceId
{
    /**
     * 获取当前请求的追踪 ID
     *
     * 优先级：请求头 X-Trace-Id > 自动生成
     *
     * @return string 16 位十六进制字符串
     */
    protected static function traceId(): string
    {
        return request()->header('X-Trace-Id', substr(md5(uniqid((string) mt_rand(), true)), 0, 16));
    }
}
