<?php

declare(strict_types=1);

/**
 * 本文件属于 DBErp 进销存系统。
 *
 * 版权所有 © 2026 北京珑大钜商科技有限公司。保留所有权利。
 *
 * 未经官方授权，不得删除、篡改或隐藏本文件中的版权声明、产品标识与来源信息。
 * 商业授权、官方更新与技术支持服务，请以珑大官方支持中心记录为准。
 *
 * @link https://support.loongdom.cn
 * @see  https://www.dberp.com.cn
 */

return [

    /*
    |--------------------------------------------------------------------------
    | 安装状态（Web 安装器 / 生产锁定）
    |--------------------------------------------------------------------------
    |
    | 与 storage/app/dberp/installed.lock 任一满足即视为已安装。
    | 锁文件位于 storage（非 public），不可被 Web 直接访问。
    |
    */

    'installed' => filter_var(env('DBERP_INSTALLED', false), FILTER_VALIDATE_BOOLEAN),

    /*
    |--------------------------------------------------------------------------
    | Web 安装向导
    |--------------------------------------------------------------------------
    */

    'install' => [
        /** 进度流中每步 run-step 执行的迁移文件数量上限 */
        'migration_batch_size' => max(1, (int) env('DBERP_INSTALL_MIGRATION_BATCH_SIZE', 10)),
    ],

    /*
    |--------------------------------------------------------------------------
    | 官方问题反馈（外链，不在此提交任何自动采集数据）
    |--------------------------------------------------------------------------
    */

    'feedback' => [
        'url' => env('DBERP_OFFICIAL_FEEDBACK_URL', 'https://support.loongdom.cn/feedback'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 官方资讯（公开静态 JSON，不依赖 Support Center 凭证）
    |--------------------------------------------------------------------------
    |
    | 文件由官方全量覆盖写入，客户端只读本平台；拉取失败时不影响后台可用性。
    |
    */

    'official_news' => [
        'enabled' => filter_var(env('DBERP_OFFICIAL_NEWS_ENABLED', true), FILTER_VALIDATE_BOOLEAN),
        'url' => env(
            'DBERP_OFFICIAL_NEWS_URL',
            'https://download-loongdom.oss-accelerate.aliyuncs.com/news/dberp.json',
        ),
        'expected_platform' => env('DBERP_OFFICIAL_NEWS_PLATFORM', 'dberp'),
        'cache_ttl' => max(60, (int) env('DBERP_OFFICIAL_NEWS_CACHE_TTL', 300)),
        'last_good_ttl' => max(300, (int) env('DBERP_OFFICIAL_NEWS_LAST_GOOD_TTL', 86400)),
        'timeout' => max(1, (int) env('DBERP_OFFICIAL_NEWS_TIMEOUT', 5)),
        'connect_timeout' => max(1, (int) env('DBERP_OFFICIAL_NEWS_CONNECT_TIMEOUT', 3)),
        'dropdown_limit' => max(1, (int) env('DBERP_OFFICIAL_NEWS_DROPDOWN_LIMIT', 8)),
        'slide_over_per_page' => max(1, (int) env('DBERP_OFFICIAL_NEWS_SLIDE_OVER_PER_PAGE', 10)),
    ],

    /*
    |--------------------------------------------------------------------------
    | 系统更新中心（在线更新执行）
    |--------------------------------------------------------------------------
    */

    'system_update' => [
        /** Web 分步更新：每步 run-next-step 执行的迁移文件数量上限（与 Web 安装向导一致思路） */
        /** Web 更新每次仅执行一个迁移，避免反向代理等待整个批次时超时中断 */
        'migration_batch_size' => max(1, (int) env('DBERP_SYSTEM_UPDATE_MIGRATION_BATCH_SIZE', 1)),
        /** 为 false 时迁移阶段单次调用 artisan migrate（便于测试桩）；生产 Web 分步应为 true */
        'use_migrator_batches' => filter_var(env('DBERP_SYSTEM_UPDATE_USE_MIGRATOR_BATCHES', true), FILTER_VALIDATE_BOOLEAN),
        /** 白名单 Artisan 命令超时（秒） */
        'artisan_timeout_seconds' => max(30, (int) env('DBERP_SYSTEM_UPDATE_ARTISAN_TIMEOUT', 300)),
        /** 解压 staging：每步（Web 单次 Livewire / CLI 单次循环）处理的压缩包条目数 */
        'extract_batch_size' => max(1, (int) env('DBERP_SYSTEM_UPDATE_EXTRACT_BATCH_SIZE', 100)),
        /** 备份与程序文件替换：每步至少 100 个，保证更新器互相依赖的过渡文件在同一请求内落盘 */
        'file_batch_size' => max(100, (int) env('DBERP_SYSTEM_UPDATE_FILE_BATCH_SIZE', 100)),
        /** vendor 文件替换：每步处理的文件数 */
        'vendor_batch_size' => max(1, (int) env('DBERP_SYSTEM_UPDATE_VENDOR_BATCH_SIZE', 100)),
        /** composer install 超时（秒，composer_required 策略） */
        'composer_timeout_seconds' => max(60, (int) env('DBERP_SYSTEM_UPDATE_COMPOSER_TIMEOUT_SECONDS', 900)),
        /** 维护模式：默认使用全新 PHP 子进程，避免在线替换后当前 FPM 请求继续运行旧类 */
        'maintenance_handler' => env('DBERP_SYSTEM_UPDATE_MAINTENANCE_HANDLER', 'process'),
        /** 进入维护模式时预渲染的友好页面（系统更新等场景，避免用户误以为故障） */
        'maintenance_page' => [
            'render_view' => 'errors.maintenance',
            'retry_seconds' => max(30, (int) env('DBERP_MAINTENANCE_RETRY_SECONDS', 60)),
            'refresh_seconds' => max(15, (int) env('DBERP_MAINTENANCE_REFRESH_SECONDS', 30)),
        ],
        /** 缓存清理同样使用全新 PHP 子进程，确保加载磁盘上的目标版本 */
        'cache_clear_handler' => env('DBERP_SYSTEM_UPDATE_CACHE_CLEAR_HANDLER', 'process'),
        /** composer dump-autoload 默认关闭；须 manifest 显式声明且开启此项才考虑后续扩展 */
        'allow_composer_dump_autoload' => filter_var(env('DBERP_SYSTEM_UPDATE_ALLOW_COMPOSER_DUMP_AUTOLOAD', false), FILTER_VALIDATE_BOOLEAN),
        /** 回滚时是否恢复完整 .env 快照（默认仅恢复版本键） */
        'restore_env_snapshot_on_rollback' => filter_var(env('DBERP_SYSTEM_UPDATE_RESTORE_ENV_SNAPSHOT', false), FILTER_VALIDATE_BOOLEAN),
        /** 完整版本目录 + current 软链接切换（基础能力；完成服务器目录改造前保持关闭） */
        'atomic_release' => [
            'enabled' => filter_var(env('DBERP_SYSTEM_UPDATE_ATOMIC_RELEASE_ENABLED', false), FILTER_VALIDATE_BOOLEAN),
            'releases_root' => env('DBERP_SYSTEM_UPDATE_RELEASES_ROOT'),
            'current_link' => env('DBERP_SYSTEM_UPDATE_CURRENT_LINK'),
        ],
        /** stable → production；rc → rc（Open Host release_channel） */
        'release_channel' => env('DBERP_UPDATE_RELEASE_CHANNEL', 'stable'),
        /** 预检：所需空闲磁盘 ≈ max(最小值, 包大小 × 倍数) */
        'disk_space_multiplier' => max(2, (int) env('DBERP_SYSTEM_UPDATE_DISK_SPACE_MULTIPLIER', 3)),
        'minimum_free_disk_bytes' => max(1, (int) env('DBERP_SYSTEM_UPDATE_MINIMUM_FREE_DISK_BYTES', 512 * 1024 * 1024)),
        /** 是否向 Support Center 回传安装成功/失败（Stub 或未启用时不发送） */
        'report_results' => filter_var(env('DBERP_SYSTEM_UPDATE_REPORT_RESULTS', true), FILTER_VALIDATE_BOOLEAN),
        /** 可选：开启后对包体执行 OpenSSL 签名校验（须配置公钥） */
        'verify_package_signature' => filter_var(env('DBERP_SYSTEM_UPDATE_VERIFY_SIGNATURE', false), FILTER_VALIDATE_BOOLEAN),
        /** 可选：要求官方包必须带 signature 字段 */
        'require_package_signature' => filter_var(env('DBERP_SYSTEM_UPDATE_REQUIRE_SIGNATURE', false), FILTER_VALIDATE_BOOLEAN),
        'signature_public_key' => env('DBERP_SYSTEM_UPDATE_SIGNATURE_PUBLIC_KEY'),
        'signature_public_key_path' => env('DBERP_SYSTEM_UPDATE_SIGNATURE_PUBLIC_KEY_PATH'),
        'signature_algorithm' => env('DBERP_SYSTEM_UPDATE_SIGNATURE_ALGORITHM', 'sha256'),
        /** 零配置自动检查：后台页面加载后 opportunistic ping，不依赖用户配置 cron */
        'auto_check' => [
            'enabled' => filter_var(env('DBERP_SYSTEM_UPDATE_AUTO_CHECK_ENABLED', true), FILTER_VALIDATE_BOOLEAN),
            'interval_hours' => max(1, (int) env('DBERP_SYSTEM_UPDATE_AUTO_CHECK_INTERVAL_HOURS', 24)),
            'timeout_seconds' => max(1, (int) env('DBERP_SYSTEM_UPDATE_AUTO_CHECK_TIMEOUT_SECONDS', 2)),
            'lock_seconds' => max(60, (int) env('DBERP_SYSTEM_UPDATE_AUTO_CHECK_LOCK_SECONDS', 300)),
        ],
        /**
         * 更新步骤明细（host_system_update_execution_logs）保留天数。
         * 不依赖 cron：打开更新中心或更新结束后 opportunistic 清理；也可手动执行 dberp:system-update-execution-logs-prune。
         * 执行主记录 host_system_update_executions 长期保留。
         */
        'execution_log_retention_days' => max(1, (int) env('DBERP_SYSTEM_UPDATE_EXECUTION_LOG_RETENTION_DAYS', 10)),
        /** opportunistic 清理最小间隔（小时），避免每次打开更新中心都扫库 */
        'execution_log_prune_interval_hours' => max(1, (int) env('DBERP_SYSTEM_UPDATE_EXECUTION_LOG_PRUNE_INTERVAL_HOURS', 24)),
    ],

    /*
    |--------------------------------------------------------------------------
    | 产品线与系统展示名（面向业务人员）
    |--------------------------------------------------------------------------
    */

    'product' => [
        'line' => env('DBERP_PRODUCT_LINE', 'dberp'),
        /** 未授权或安装时写入的默认可展示产品名（与安装向导、installer_title_base 对齐） */
        'default_brand_name' => env('DBERP_DEFAULT_BRAND_NAME', 'DBErp 进销存系统'),
        'name' => env('DBERP_SYSTEM_NAME', env('DBERP_DEFAULT_BRAND_NAME', 'DBErp 进销存系统')),
    ],

    /*
    |--------------------------------------------------------------------------
    | 对外产品展示（登录页脚、后台全局页脚、系统信息页）
    |--------------------------------------------------------------------------
    |
    | 与 product / version 默认同源，便于单独覆盖发布物料；勿将内部 update_version 用于此处。
    | 展示层由 App\Support\DberpProductVersion 统一拼装「产品名 + 语义化版本」。
    |
    */

    'public_product' => [
        /** 显式覆盖：留空时已授权系统优先读后台「系统基础设置」的 system_display_name */
        'name' => env('DBERP_PUBLIC_PRODUCT_NAME'),
        'version' => env('DBERP_PUBLIC_PRODUCT_VERSION', env('DBERP_DISPLAY_VERSION', '3.0.0-rc.1')),
        'edition' => env('DBERP_PUBLIC_PRODUCT_EDITION', env('DBERP_EDITION_NAME', 'RC 版')),
        /** 可选：系统信息页「发布日期」展示（如 2026-05-20） */
        'release_date' => env('DBERP_PUBLIC_PRODUCT_RELEASE_DATE'),
        /** 可选：版本说明外链 */
        'version_notes_url' => env('DBERP_VERSION_NOTES_URL'),
        /** 可选：官方支持入口外链 */
        'official_support_url' => env('DBERP_OFFICIAL_SUPPORT_URL'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 版权商用许可展示（本机兜底；已同步官方授权时以 host_system_authorizations 为准）
    |--------------------------------------------------------------------------
    */

    'license' => [
        /** 为 true 时系统信息页按商用版展示；已获官方授权快照时无需再配此项 */
        'commercial_authorized' => filter_var(env('DBERP_LICENSE_COMMERCIAL_AUTHORIZED', false), FILTER_VALIDATE_BOOLEAN),
        /** 仅在本机标记已授权且尚未从支撑中心同步主体时使用 */
        'holder' => env('DBERP_LICENSE_HOLDER'),
        /** 仅在本机标记已授权且尚未从支撑中心同步到期时间时使用 */
        'valid_until' => env('DBERP_LICENSE_VALID_UNTIL'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 宿主产品版本（安装向导 / 关于命令 / 诊断）
    |--------------------------------------------------------------------------
    |
    | 首个基于 Laravel 的 DBErp 公开发行：3.0.0-rc.1（展示语义）；首个稳定发行目标：3.0.0。
    | - display_version：面向业务人员与安装向导 UI 的语义化版本，不参与更新比对。
    | - update_version：内部数值型更新标识，供后续更新检查或比对使用。
    | - edition_name：发行线/版本类型展示名（如 RC 版、正式版）。
    | - build：可选构建号或包标识（留空则不展示）。
    | - installer_title_base：安装向导首页「产品 · 版本」行左侧展示名。
    |
    */

    'version' => [
        'display_version' => env('DBERP_DISPLAY_VERSION', '3.0.0-rc.1'),
        'update_version' => (int) env('DBERP_UPDATE_VERSION', 299981),
        'edition_name' => env('DBERP_EDITION_NAME', 'RC 版'),
        'build' => env('DBERP_BUILD'),
        'installer_title_base' => env('DBERP_INSTALLER_TITLE_BASE', 'DBErp 进销存系统'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 管理后台布局（Filament 宿主）
    |--------------------------------------------------------------------------
    */

    'admin' => [
        /**
         * 后台界面可切换的语言列表。
         * 每项 key 为 Laravel locale 字符串，value 为顶栏展示标签。
         * 新增语言：① 此处追加一行；② 在 lang/<locale>/ 下放置翻译文件即可。
         */
        'locales' => [
            'zh_CN' => '中文',
            'en' => 'English',
        ],
        /**
         * 中文界面（html lang 以 zh 开头）下左侧栏 CSS 变量 `--sidebar-width`。
         * 英文等其它语言使用 Filament 默认宽度（20rem），不在此覆盖。
         */
        'sidebar_width' => '256px',
        /** 主导航不展示图标：Page/Resource 侧勿设置 navigationIcon */
        'sidebar_navigation_icons' => false,
        /** 后台认证守卫，当前沿用宿主默认 web guard */
        'guard' => env('DBERP_ADMIN_GUARD', 'web'),
        /**
         * Filament 面板 URL 前缀（不含首尾斜杠）。留空表示整站即后台：「/」为登录首页，「/workbench」为工作台。
         * 若需部署在子目录（如 /dberp），设置 DBERP_ADMIN_PANEL_PATH=dberp。
         */
        'panel_path' => trim((string) env('DBERP_ADMIN_PANEL_PATH', ''), '/'),
        /** 系统初始化超级管理员 */
        'super_admin' => [
            'role_name' => env('DBERP_SUPER_ADMIN_ROLE', 'super_admin'),
            'role_display_name' => env('DBERP_SUPER_ADMIN_ROLE_DISPLAY_NAME', '系统管理员'),
            'name' => env('DBERP_SUPER_ADMIN_NAME', '系统管理员'),
            'nickname' => env('DBERP_SUPER_ADMIN_NICKNAME', '超管'),
            /** 后台登录账号（与邮箱脱钩；第二步登录改造前仍可与历史数据并存） */
            'login_account' => env('DBERP_SUPER_ADMIN_LOGIN_ACCOUNT', 'admin'),
            'email' => env('DBERP_SUPER_ADMIN_EMAIL', 'admin@dberp.local'),
            'password' => env('DBERP_SUPER_ADMIN_PASSWORD', 'Admin@123456'),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 排序语义：数字越小越靠前（列表/分组/字典项等）
    |--------------------------------------------------------------------------
    */

    'sort' => [
        'direction' => 'asc',
        'smaller_first' => true,
    ],

    /*
    |--------------------------------------------------------------------------
    | 数字显示精度（仅 UI 展示；不改库内精度与业务计算）
    |--------------------------------------------------------------------------
    |
    | 说明：金额与单价在界面上的小数位优先读取系统档案 amount_decimal_places；
    | 数量优先读取 quantity_decimal_places。
    | 此处 amount / price / quantity / weight 等为档案或数据表不可用时的回退值；重量仅走配置 weight。成本价、比率仍以此为准。
    | 具体页面与导出通过 App\Support\DberpNumberFormatter 接入。
    |
    */

    'number_precision' => [
        'amount' => 2,
        'price' => 2,
        'cost_price' => 4,
        'quantity' => 2,
        'weight' => 3,
        'rate' => 2,
    ],

    /*
    |--------------------------------------------------------------------------
    | 主数据承载策略（本步先做长期可扩展结构，不提前拆深业务子域）
    |--------------------------------------------------------------------------
    */

    'master_data' => [
        'product_brand_strategy' => 'inline_text',
        'product_spec_model_strategy' => 'inline_text',
    ],

    'regions' => [
        'table' => 'dberp_regions',
        'default_country_code' => env('DBERP_DEFAULT_REGION_COUNTRY_CODE', 'CN'),
        'country_labels' => [
            'CN' => '中国',
        ],
        'china_import' => [
            'country_code' => env('DBERP_CN_REGION_COUNTRY_CODE', 'CN'),
            'source' => env('DBERP_CN_REGION_SOURCE', 'china_bundled'),
            'data_file' => env('DBERP_CN_REGION_DATA_FILE', database_path('data/china_divisions.json')),
            // 仅 dberp:regions:export-china-data 维护内置 JSON 时使用
            'source_url' => env('DBERP_CN_REGION_SOURCE_URL', 'https://www.mca.gov.cn/mzsj/xzqh/2023/202301xzqh.html'),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 编号规则（宿主承载位；具体生成逻辑后续在 SystemRule 域实现）
    |--------------------------------------------------------------------------
    */

    'numbering' => [
        'table' => 'dberp_number_sequences',
    ],

    /*
    |--------------------------------------------------------------------------
    | 业务字典（宿主承载位）
    |--------------------------------------------------------------------------
    */

    'dictionary' => [
        'types_table' => 'dberp_dictionary_types',
        'items_table' => 'dberp_dictionary_items',
        /*
        | 字典项维护策略（按字典类型编码 code 区分）
        |
        | - system_fixed_type_codes：系统固定项，禁止前台增删改编码，仅允许维护名称、启用、排序、说明等展示字段。
        | - business_maintainable_type_codes：业务可维护，允许在受控范围内新增字典项；编码创建后不可改；删除统一拦截，建议停用。
        |
        | 未出现在 business_maintainable 列表中的类型，默认视为系统固定（安全默认）。
        */
        'type_item_maintenance' => [
            'system_fixed_type_codes' => [
                'warehouse_type',
                'stock_in_reason',
                'stock_out_reason',
            ],
            'business_maintainable_type_codes' => [
                'source_type',
                'settlement_method',
                'payment_method',
                'receipt_method',
                'price_level',
            ],
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 库存规则（占位；业务域独立建模，不在此写死商城库存语义）
    |--------------------------------------------------------------------------
    */

    'inventory' => [
        'reserved' => true,
    ],

    /*
    |--------------------------------------------------------------------------
    | 官方支撑中心（Open Host）
    |--------------------------------------------------------------------------
    |
    | product_code 固定为 dberp（见 App\Support\DberpProductCode）。
    | DBErp 官方插件目录/安装/更新/下载请求均携带 product_code=dberp；
    | 不得使用 dbshop 或其它产品线作为回退。DBShop 渠道集成见 integration.dbshop。
    |
    | 官方插件 Support Center 契约见：
    | docs/development/dberp-official-plugin-support-center.md
    |
    */

    'support_center' => [
        'enabled' => env('DBERP_SUPPORT_CENTER_ENABLED', true),
        'use_stub' => filter_var(env('DBERP_SUPPORT_CENTER_USE_STUB', false), FILTER_VALIDATE_BOOLEAN),
        'allow_env_credential_fallback' => filter_var(
            env('DBERP_SUPPORT_CENTER_ALLOW_ENV_CREDENTIAL_FALLBACK', true),
            FILTER_VALIDATE_BOOLEAN,
        ),
        'release_credentials_path' => env(
            'DBERP_SUPPORT_CENTER_RELEASE_CREDENTIALS_PATH',
            storage_path('app/dberp/support-center-open-host.json'),
        ),
        'base_url' => env('DBERP_SUPPORT_CENTER_BASE_URL'),
        'host_token' => env('DBERP_SUPPORT_CENTER_HOST_TOKEN'),
        'host_key' => env('DBERP_SUPPORT_CENTER_HOST_KEY'),
        'timeout' => (int) env('DBERP_SUPPORT_CENTER_TIMEOUT', 10),
        'connect_timeout' => (int) env('DBERP_SUPPORT_CENTER_CONNECT_TIMEOUT', 5),
        'product_code' => env('DBERP_SUPPORT_CENTER_PRODUCT_CODE', 'dberp'),
        'site_no' => env('DBERP_SUPPORT_CENTER_SITE_NO'),
        'license_no' => env('DBERP_SUPPORT_CENTER_LICENSE_NO'),
        'validation_base_url' => env('DBERP_SUPPORT_CENTER_VALIDATION_BASE_URL'),
        'debug_open_host_meta' => filter_var(env('DBERP_SUPPORT_CENTER_DEBUG_OPEN_HOST_META', false), FILTER_VALIDATE_BOOLEAN),
        /*
         * 显式 PHP CLI 可执行文件路径（用于系统更新子进程 / 终端建议命令）。
         * Web（PHP-FPM）环境下 PHP_BINARY 可能指向 php-fpm，不可直接用作 CLI。
         */
        'php_cli_binary' => env('DBERP_PHP_CLI_BINARY'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 外部联通（增强项；DBErp 独立闭环优先）
    |--------------------------------------------------------------------------
    */

    'integration' => [
        'nav_enabled' => env('DBERP_INTEGRATION_NAV_ENABLED', false),
        'dbshop' => [
            'enabled' => env('DBERP_INTEGRATION_DBSHOP_ENABLED', false),
            'base_url' => env('DBERP_INTEGRATION_DBSHOP_BASE_URL'),
            'app_id' => env('DBERP_INTEGRATION_DBSHOP_APP_ID'),
            'secret' => env('DBERP_INTEGRATION_DBSHOP_SECRET'),
        ],
        'future_channels' => [
            // 预留：后续渠道（如开放平台、线下设备等）统一在此扩展键位
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 插件 / 扩展中心（与 DBCore 插件体系对齐）
    |--------------------------------------------------------------------------
    |
    | center_enabled  为 false 时跳过官方插件运行时扫描与加载（后续亦控制插件中心导航）。
    | path            官方插件根目录，约定 plugins/{alias}/plugin.json。
    | official_only   V1 仅加载该目录下与 alias 匹配的官方插件，不加载上传包。
    |
    | plugin.json 字段约定见 docs/development/dberp-official-plugin-manifest.md
    |
    | 最小目录约定（子目录均可选）：
    |   plugins/{alias}/plugin.json
    |   plugins/{alias}/src/
    |   plugins/{alias}/routes/web.php | routes/api.php
    |   plugins/{alias}/database/migrations/
    |   plugins/{alias}/lang/
    |   plugins/{alias}/config/*.php  → 合并为 dberp.plugin.extensions.{alias}[.{file}]
    |
    */

    'plugin' => [
        'center_enabled' => filter_var(env('DBERP_PLUGIN_CENTER_ENABLED', true), FILTER_VALIDATE_BOOLEAN),
        'path' => env('DBERP_PLUGIN_PATH', env('DBCORE_PLUGIN_PATH', 'plugins')),
        /** 随产品内置、需注册至 core_plugins 的官方插件 identifier 列表 */
        'bundled_identifiers' => [
            'dberp-barcode-label',
            'dberp-advanced-import-export',
            'dberp-invoice-assistant',
            'dberp-light-approval',
            'dberp-notification-channel',
            'dberp-ai',
            'dberp-mcp',
        ],
        'official_only' => filter_var(env('DBERP_PLUGIN_OFFICIAL_ONLY', true), FILTER_VALIDATE_BOOLEAN),
        'signature_required' => filter_var(env('DBERP_PLUGIN_SIGNATURE_REQUIRED', false), FILTER_VALIDATE_BOOLEAN),
        'signature_verification_enabled' => filter_var(env('DBERP_PLUGIN_SIGNATURE_VERIFICATION_ENABLED', true), FILTER_VALIDATE_BOOLEAN),
        'signature_public_key' => env('DBERP_PLUGIN_SIGNATURE_PUBLIC_KEY'),
        'signature_private_key' => env('DBERP_PLUGIN_SIGNATURE_PRIVATE_KEY'),
        'signature_algorithm' => env('DBERP_PLUGIN_SIGNATURE_ALGORITHM', 'sha256'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 队列 / Redis / Horizon（Horizon 未安装时仅作环境位占位）
    |--------------------------------------------------------------------------
    */

    'queue' => [
        'default_connection' => env('QUEUE_CONNECTION', 'database'),
    ],

    'redis' => [
        'enabled' => env('DBERP_REDIS_ENABLED', false),
        'connection' => env('DBERP_REDIS_CONNECTION', 'default'),
    ],

    'horizon' => [
        'installed' => false,
        'path' => env('HORIZON_PATH', 'horizon'),
    ],

    /*
    |--------------------------------------------------------------------------
    | 审计与操作留痕（优先复用 DBCore 审计能力；此处仅宿主入口开关）
    |--------------------------------------------------------------------------
    */

    'audit' => [
        'use_dbcore' => env('DBERP_AUDIT_USE_DBCORE', true),
        /** 审计表按「创建时间」保留天数；早于该天数的记录可被清理命令 / 计划任务删除 */
        'retention_days' => (int) env('DBERP_AUDIT_RETENTION_DAYS', 7),
    ],

    /*
    |--------------------------------------------------------------------------
    | 插件与扩展中心
    |--------------------------------------------------------------------------
    */

    'plugin_center' => [
        /** 操作记录表按 created_at 保留天数；快照类记录在过期删除后会在下次打开页面时重建 */
        'operation_log_retention_days' => (int) env('DBERP_PLUGIN_OPERATION_LOG_RETENTION_DAYS', 90),
    ],

    /*
    |--------------------------------------------------------------------------
    | 往来结算提醒、结算侧权限兼容键与宿主级权限策略
    |--------------------------------------------------------------------------
    |
    | 生产环境默认：未授予任何权限码的管理员不得访问业务功能；不得依赖「未配置即放行」。
    | 兼容读取：仍同步写入 settlement.permissions.default_allow_when_unconfigured（与历史配置键对齐）。
    |
    */

    'permissions' => [
        'default_allow_when_unconfigured' => (bool) env('DBERP_PERMISSION_DEFAULT_ALLOW', false),
    ],

    'settlement' => [
        'reminders' => [
            'due_soon_days' => (int) env('DBERP_SETTLEMENT_DUE_SOON_DAYS', 7),
            'long_unwritten_days' => (int) env('DBERP_SETTLEMENT_LONG_UNWRITTEN_DAYS', 30),
            'large_unwritten_amount' => (float) env('DBERP_SETTLEMENT_LARGE_UNWRITTEN_AMOUNT', 10000),
            'follow_up_days' => (int) env('DBERP_SETTLEMENT_FOLLOW_UP_DAYS', 7),
        ],
        'permissions' => [
            'default_allow_when_unconfigured' => (bool) env('DBERP_PERMISSION_DEFAULT_ALLOW', false),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 销售经营控制提醒与工作台承接
    |--------------------------------------------------------------------------
    */

    'sales' => [
        'reminders' => [
            'quote_expiry_soon_days' => (int) env('DBERP_SALES_QUOTE_EXPIRY_SOON_DAYS', 7),
            'long_unconverted_days' => (int) env('DBERP_SALES_LONG_UNCONVERTED_DAYS', 15),
            'price_rule_expiry_soon_days' => (int) env('DBERP_SALES_PRICE_RULE_EXPIRY_SOON_DAYS', 7),
            'credit_near_limit_ratio' => (float) env('DBERP_SALES_CREDIT_NEAR_LIMIT_RATIO', 0.8),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 经营工作台性能
    |--------------------------------------------------------------------------
    |
    | metrics_cache_seconds：KPI / 提醒指标短 TTL 缓存，减轻首页聚合 SQL 压力。
    | inventory_exception_sync_interval_minutes：库存异常快照计划任务间隔（HTTP 请求不再同步）。
    |
    */

    'workbench' => [
        'metrics_cache_seconds' => (int) env('DBERP_WORKBENCH_METRICS_CACHE_SECONDS', 120),
        'inventory_exception_sync_interval_minutes' => (int) env('DBERP_INVENTORY_EXCEPTION_SYNC_INTERVAL_MINUTES', 5),
    ],

    'report' => [
        'analysis_cache_seconds' => (int) env('DBERP_REPORT_ANALYSIS_CACHE_SECONDS', 60),
    ],

    /*
    |--------------------------------------------------------------------------
    | 系统档案（单例表 dberp_system_profile）
    |--------------------------------------------------------------------------
    |
    | default_currency_code / currency_select_options：用于后台「基本信息与显示设置」
    | 等界面下拉；库内仍存标准货币代码，不涉及多币种账务、汇率或外币折算。
    |
    */

    'system_profile' => [
        'table' => 'dberp_system_profile',
        'default_currency_code' => strtoupper(trim((string) env('DBERP_DEFAULT_CURRENCY_CODE', 'CNY'))) ?: 'CNY',
        'currency_select_options' => [
            'CNY' => '人民币（CNY）',
            'USD' => '美元（USD）',
            'EUR' => '欧元（EUR）',
            'HKD' => '港币（HKD）',
            'TWD' => '新台币（TWD）',
            'JPY' => '日元（JPY）',
            'KRW' => '韩元（KRW）',
            'GBP' => '英镑（GBP）',
            'AUD' => '澳大利亚元（AUD）',
            'CAD' => '加拿大元（CAD）',
            'SGD' => '新加坡元（SGD）',
            'MYR' => '马来西亚林吉特（MYR）',
            'THB' => '泰铢（THB）',
            'VND' => '越南盾（VND）',
            'IDR' => '印尼盾（IDR）',
            'PHP' => '菲律宾比索（PHP）',
        ],
        /**
         * 金额展示前缀（与默认货币代码对应）；未配置时代码后缀展示。
         */
        'currency_display_prefixes' => [
            'CNY' => '¥',
            'USD' => '$',
            'EUR' => '€',
            'HKD' => 'HK$',
            'TWD' => 'NT$',
            'JPY' => '¥',
            'KRW' => '₩',
            'GBP' => '£',
            'AUD' => 'A$',
            'CAD' => 'C$',
            'SGD' => 'S$',
            'MYR' => 'RM',
            'THB' => '฿',
            'VND' => '₫',
            'IDR' => 'Rp',
            'PHP' => '₱',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 数据初始化导入（模板与预检限制）
    |--------------------------------------------------------------------------
    */

    'data_import' => [
        /** 上传文件大小上限（KB）；Filament FileUpload 与此保持一致 */
        'max_upload_kilobytes' => max(512, (int) env('DBERP_DATA_IMPORT_MAX_UPLOAD_KB', 10_240)),
        /** 单次导入有效数据行数上限（不含表头） */
        'max_rows' => max(1, (int) env('DBERP_DATA_IMPORT_MAX_ROWS', 5000)),
        /** @var list<string> */
        'allowed_extensions' => ['xlsx', 'csv'],
        /** 预检上传临时目录（local 私有盘相对路径） */
        'precheck_upload_directory' => 'dberp/import-precheck/temp',
        /** 预检通过后保留源文件的批次目录（local 私有盘，按 batch_no 分目录） */
        'batch_upload_directory' => 'dberp/imports',
    ],

];
