<?php

declare(strict_types=1);

namespace Kylin\RiskControl;

use Illuminate\Support\ServiceProvider;
use Kylin\RiskControl\Commands\ReclassifyCommand;

/**
 * 风控服务提供者
 *
 * 提供金融风控核心功能，包括：
 *  - 评分卡模型（A/B/C 卡）
 *  - 大额交易报告
 *  - 可疑交易报告
 *  - 定期重分类
 *  - 审计日志与权限控制
 *
 * 合规要求：
 *  - 依据《金融机构大额交易和可疑交易报告管理办法》
 *  - 依据《商业银行金融资产风险分类办法》
 *  - 依据等保 2.0 (GB/T 22239) 三级要求
 */
final class RiskControlServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        $this->mergeConfigFrom(
            __DIR__.'/../config/kylin-risk-control.php',
            'kylin-risk-control'
        );
    }

    public function boot(): void
    {
        if ($this->app->runningInConsole()) {
            $this->publishes([
                __DIR__.'/../config/kylin-risk-control.php' => config_path('kylin-risk-control.php'),
            ], 'kylin-risk-control-config');

            $this->commands([
                ReclassifyCommand::class,
            ]);
        }

        $this->loadRoutesFrom(__DIR__.'/../routes/api.php');
    }
}