<?php

declare(strict_types=1);

namespace Kylin\Settings\Events;

use Illuminate\Foundation\Events\Dispatchable;

/**
 * 配置变更事件
 *
 * 当敏感配置发生变更时触发，用于通知相关人员。
 *
 * 依据《数据安全法》第二十七条：
 * 数据处理活动应加强风险监测。
 */
class SettingChanged
{
    use Dispatchable;

    /**
     * @param string $group 配置分组
     * @param string $key   配置键名
     * @param mixed  $newValue 新值（脱敏后）
     * @param mixed  $oldValue 旧值（脱敏后）
     * @param int|null $userId 操作人 ID
     */
    public function __construct(
        public readonly string $group,
        public readonly string $key,
        public readonly mixed $newValue,
        public readonly mixed $oldValue,
        public readonly ?int $userId,
    ) {}
}