CaiWuXiTong/config/dingtalk.php
苏木 770ddea8a9 feat(供应商对账): 增加免登录送货确认链接 (#1180)
Co-authored-by: 苏木 <594326199@qq.com>
Co-committed-by: 苏木 <594326199@qq.com>
2026-11-15 11:36:27 +08:00

118 lines
6.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
return [
'enabled' => (bool) env('DINGTALK_LOGIN_ENABLED', false),
'client_id' => env('DINGTALK_CLIENT_ID'),
'client_secret' => env('DINGTALK_CLIENT_SECRET'),
'redirect_uri' => env(
'DINGTALK_REDIRECT_URI',
rtrim(env('APP_URL', 'https://caiwu.jiansuntuzhi.cn:8442'), '/').'/auth/dingtalk/callback'
),
// Verified HR roots: 简尚财务中心 and 龙晨品牌中心/财务中心.
'finance_department_ids' => array_values(array_filter(array_map('trim', explode(',', env('DINGTALK_FINANCE_DEPARTMENT_IDS', '22848291,994080505'))))),
'finance_roster_cache_minutes' => max((int) env('DINGTALK_FINANCE_ROSTER_CACHE_MINUTES', 720), 1),
// Individually approved, current enterprise members; never names or whole departments.
// This grants ordinary login only, with the exact courier page scope below.
'limited_login_user_ids' => array_values(array_filter(array_map('trim', explode(',', env('DINGTALK_LIMITED_LOGIN_USER_IDS', ''))))),
'limited_login_page_keys' => [
'courier-payables/courier-onboarding',
'courier-payables/courier-information',
'courier-payables/quote-management',
],
// 非财务中心员工:可以登录,但只能访问财务经营风险管控下的这两个页面。
'restricted_page_keys' => [
'financial-risk-control/store-violation-alert',
'financial-risk-control/process-statistics',
],
// When omitted, automatic provisioning requires exactly one enabled company.
'company_id' => env('DINGTALK_COMPANY_ID'),
// Explicitly approved enterprise user IDs only; never names or departments.
// Applies the highest role on first provisioning, not on subsequent logins.
'super_admin_user_ids' => array_values(array_filter(array_map('trim', explode(',', env('DINGTALK_SUPER_ADMIN_USER_IDS', ''))))),
'authorize_url' => env('DINGTALK_AUTHORIZE_URL', 'https://login.dingtalk.com/oauth2/auth'),
'token_url' => env('DINGTALK_TOKEN_URL', 'https://api.dingtalk.com/v1.0/oauth2/userAccessToken'),
'user_url' => env('DINGTALK_USER_URL', 'https://api.dingtalk.com/v1.0/contact/users/me'),
'app_token_url' => env('DINGTALK_APP_TOKEN_URL', 'https://oapi.dingtalk.com/gettoken'),
'user_by_union_id_url' => env('DINGTALK_USER_BY_UNION_ID_URL', 'https://oapi.dingtalk.com/topapi/user/getbyunionid'),
'user_detail_url' => env('DINGTALK_USER_DETAIL_URL', 'https://oapi.dingtalk.com/topapi/v2/user/get'),
'timeout' => (int) env('DINGTALK_HTTP_TIMEOUT', 10),
'process_concurrency' => (int) env('DINGTALK_PROCESS_CONCURRENCY', 5),
'state_ttl_minutes' => (int) env('DINGTALK_STATE_TTL_MINUTES', 5),
'card' => [
// 对账汇总使用互动卡片,厂家可直接在钉钉内确认,不需要打开网页。
'enabled' => filter_var(env('DINGTALK_CARD_ENABLED', true), FILTER_VALIDATE_BOOL),
'callback_url' => env(
'DINGTALK_CARD_CALLBACK_URL',
rtrim(env('APP_URL', 'https://caiwu.jiansuntuzhi.cn:8442'), '/')
. '/webhooks/dingtalk/card/supplier-confirmation'
),
// 留空时从 APP_KEY 派生稳定密钥;也可以通过环境变量显式配置。
'callback_secret' => env('DINGTALK_CARD_CALLBACK_SECRET'),
'callback_route_key' => env('DINGTALK_CARD_CALLBACK_ROUTE_KEY', 'caiwu-supplier-summary-v1'),
// 可选:群内有多个企业内部应用机器人时,用名称或编码指定推送机器人。
'robot_name' => env('DINGTALK_CARD_ROBOT_NAME'),
'robot_code' => env('DINGTALK_CARD_ROBOT_CODE'),
],
// card:钉钉互动卡片内直接确认;link:厂家打开签名确认页后点击确认。
'summary_confirmation_mode' => env('DINGTALK_SUMMARY_CONFIRMATION_MODE', 'link'),
'worklog' => [
'enabled' => filter_var(env('DINGTALK_WORKLOG_ENABLED', true), FILTER_VALIDATE_BOOL),
'template_name' => env('DINGTALK_WORKLOG_TEMPLATE_NAME', '财务日报'),
'template_names' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env('DINGTALK_WORKLOG_TEMPLATE_NAMES', '财务日报,空白日志')),
))),
'finance_only_templates' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env('DINGTALK_WORKLOG_FINANCE_ONLY_TEMPLATES', '空白日志')),
))),
'display_name' => env('DINGTALK_WORKLOG_DISPLAY_NAME', '财务日报 / 日志'),
'timezone' => env('DINGTALK_WORKLOG_TIMEZONE', env('APP_TIMEZONE', 'Asia/Shanghai')),
'penalty_start_date' => env('DINGTALK_WORKLOG_PENALTY_START_DATE', '2026-11-04'),
// 江陵不参与扣分;周生辰待离职,按负责人要求从扣分明细移除。
'penalty_excluded_user_ids' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env(
'DINGTALK_WORKLOG_PENALTY_EXCLUDED_USER_IDS',
'02591267217229,17097754648162977',
)),
))),
'userid' => env('DINGTALK_WORKLOG_USERID'),
'lookback_days' => (int) env('DINGTALK_WORKLOG_LOOKBACK_DAYS', 35),
'page_size' => min(max((int) env('DINGTALK_WORKLOG_PAGE_SIZE', 20), 1), 20),
'max_pages' => max((int) env('DINGTALK_WORKLOG_MAX_PAGES', 100), 1),
'request_attempts' => min(max((int) env('DINGTALK_WORKLOG_REQUEST_ATTEMPTS', 4), 1), 6),
'retry_delay_ms' => min(max((int) env('DINGTALK_WORKLOG_RETRY_DELAY_MS', 500), 0), 5000),
'permission_scope' => 'qyapi_report_query',
],
'attendance' => [
'enabled' => filter_var(env('DINGTALK_ATTENDANCE_ENABLED', true), FILTER_VALIDATE_BOOL),
'lookback_days' => (int) env('DINGTALK_ATTENDANCE_LOOKBACK_DAYS', 35),
'page_size' => 50,
'max_pages' => max((int) env('DINGTALK_ATTENDANCE_MAX_PAGES', 200), 1),
'exempt_approval_tags' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env(
'DINGTALK_ATTENDANCE_EXEMPT_APPROVAL_TAGS',
'请假,休息,调休,年假,事假,病假,婚假,产假,陪产假,丧假',
)),
))),
'exempt_time_results' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env(
'DINGTALK_ATTENDANCE_EXEMPT_TIME_RESULTS',
'休息,Rest,Holiday,法定节假日',
)),
))),
],
];