234 lines
13 KiB
PHP
Executable File
234 lines
13 KiB
PHP
Executable File
<?php
|
||
return [
|
||
// 系统版本号
|
||
'version' => '1.9.4',
|
||
|
||
// 官网
|
||
'website' => [
|
||
'name' => env('project.web_name', 'likeadmin'), // 网站名称
|
||
'url' => env('project.web_url', 'www.likeadmin.cn/'), // 网站地址
|
||
'login_image' => 'resource/image/adminapi/default/login_image.png',
|
||
'web_logo' => 'resource/image/adminapi/default/web_logo.jpg', // 网站logo
|
||
'web_favicon' => 'resource/image/adminapi/default/web_favicon.ico', // 网站图标
|
||
'shop_name' => 'likeadmin', // 商城名称
|
||
'shop_logo' => 'resource/image/adminapi/default/shop_logo.png', // 商城图标
|
||
'pc_logo' => 'resource/image/adminapi/default/pc_logo.png', // pc_logo
|
||
'pc_ico' => 'resource/image/adminapi/default/web_favicon.ico', // pc_ico
|
||
'pc_title' => 'likeadmin', // PC网站标题
|
||
'h5_favicon' => 'resource/image/adminapi/default/web_favicon.ico', // 网站图标
|
||
],
|
||
|
||
// 后台登录
|
||
'admin_login' => [
|
||
// 管理后台登录限制 0-不限制 1-需要限制
|
||
'login_restrictions' => 1,
|
||
// 限制密码错误次数
|
||
'password_error_times' => 5,
|
||
// 限制禁止多少分钟不能登录
|
||
'limit_login_time' => 30,
|
||
],
|
||
|
||
// 唯一标识,密码盐、路径加密等
|
||
'unique_identification' => env('project.unique_identification', 'likeadmin'),
|
||
|
||
// 后台管理员token(登录令牌)配置
|
||
'admin_token' => [
|
||
'expire_duration' => 3600 * 8,//管理后台token过期时长(单位秒)
|
||
'be_expire_duration' => 3600,//管理后台token临时过期前时长,自动续期
|
||
],
|
||
|
||
// 商城用户token(登录令牌)配置
|
||
'user_token' => [
|
||
'expire_duration' => 3600 * 8,//用户token过期时长(单位秒)
|
||
'be_expire_duration' => 3600,//用户token临时过期前时长,自动续期
|
||
],
|
||
|
||
// 列表页
|
||
'lists' => [
|
||
'page_size_max' => 25000,//列表页查询数量限制(列表页每页数量、导出每页数量)
|
||
'page_size' => 25, //默认每页数量
|
||
/** Excel 导出:接口内放宽 PHP 限制(JsonService::relaxLimitsForExcelExport) */
|
||
'export_max_execution_time' => 600,
|
||
'export_memory_limit' => '512M',
|
||
],
|
||
|
||
// 各种默认图片
|
||
'default_image' => [
|
||
'admin_avatar' => 'resource/image/adminapi/default/avatar.png',
|
||
'user_avatar' => 'resource/image/adminapi/default/default_avatar.png',
|
||
'qq_group' => 'resource/image/adminapi/default/qq_group.png', // qq群
|
||
'customer_service' => 'resource/image/adminapi/default/customer_service.jpg', // 客服
|
||
'menu_admin' => 'resource/image/adminapi/default/menu_admin.png',// 首页快捷菜单-管理员
|
||
'menu_role' => 'resource/image/adminapi/default/menu_role.png', // 首页快捷菜单-角色
|
||
'menu_dept' => 'resource/image/adminapi/default/menu_dept.png',// 首页快捷菜单-部门
|
||
'menu_dict' => 'resource/image/adminapi/default/menu_dict.png',// 首页快捷菜单-字典
|
||
'menu_generator' => 'resource/image/adminapi/default/menu_generator.png',// 首页快捷菜单-代码生成器
|
||
'menu_auth' => 'resource/image/adminapi/default/menu_auth.png',// 首页快捷菜单-菜单权限
|
||
'menu_web' => 'resource/image/adminapi/default/menu_web.png',// 首页快捷菜单-网站信息
|
||
'menu_file' => 'resource/image/adminapi/default/menu_file.png',// 首页快捷菜单-素材中心
|
||
],
|
||
|
||
// 文件上传限制 (图片)
|
||
'file_image' => [
|
||
'jpg', 'png', 'gif', 'jpeg', 'webp', 'ico'
|
||
],
|
||
|
||
// 文件上传限制 (视频)
|
||
'file_video' => [
|
||
'wmv', 'avi', 'mpg', 'mpeg', '3gp', 'mov', 'mp4', 'flv', 'f4v', 'rmvb', 'mkv', 'webm'
|
||
],
|
||
|
||
//上传文件的格式 (文件)
|
||
'file_file' => [
|
||
'zip','rar','txt','pdf','doc','docx','xls','xlsx','ppt','pptx','csv','txt','ftr','7z','gz',
|
||
'mp3', 'wav', 'm4a', 'aac', 'amr', 'wma', // 音频
|
||
],
|
||
|
||
// 登录设置
|
||
'login' => [
|
||
// 登录方式:1-账号密码登录;2-手机短信验证码登录
|
||
'login_way' => ['1', '2'],
|
||
// 注册强制绑定手机 0-关闭 1-开启
|
||
'coerce_mobile' => 1,
|
||
// 第三方授权登录 0-关闭 1-开启
|
||
'third_auth' => 1,
|
||
// 微信授权登录 0-关闭 1-开启
|
||
'wechat_auth' => 1,
|
||
// qq授权登录 0-关闭 1-开启
|
||
'qq_auth' => 0,
|
||
// 登录政策协议 0-关闭 1-开启
|
||
'login_agreement' => 1,
|
||
],
|
||
|
||
// 后台装修
|
||
'decorate' => [
|
||
// 底部导航栏样式设置
|
||
'tabbar_style' => ['default_color' => '#999999', 'selected_color' => '#c455ff'],
|
||
],
|
||
|
||
// 医助创建订单权限:拥有以下角色ID的用户可修改任意订单,其他用户只能修改自己创建的订单
|
||
'order_edit_all_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 处方库:以下角色ID + 超级管理员(root) 可查看/编辑/删除全部;他人仅可管理自己创建的,公开处方对他人只读
|
||
'prescription_library_manage_all_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 消费者处方单:以下角色 + root 可对「待审核」处方进行通过/驳回(驳回即作废处方)
|
||
'prescription_audit_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 处方业务订单 internal_cost 等财务字段:以下角色 ID + root 可见
|
||
'prescription_order_finance_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 业务订单「关联支付单」审核:以下角色 ID + root 可操作(可与财务角色一致)
|
||
'prescription_order_payment_audit_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 订单管理列表(order/index):以下角色 ID + root 可查看全部订单,其余仅本人创建
|
||
'order_list_view_all_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 自录转化统计(stats.self_input / personal_yeji / personal_account_cost):
|
||
// 以下角色 ID + root 在列表与总览中可见全部录入人的业绩/账户消耗(不受角色 data_scope 收窄)。
|
||
// 编辑/删除由菜单按钮权限(stats.personal_yeji/edit 等)控制,不在此配置。
|
||
'self_input_stats_view_all_roles' => [0, 3, 4, 9, 6],
|
||
|
||
// 业务订单列表金额统计:医助角色 ID;非支付审核白名单的医助仅统计其诊单 assistant_id=本人 的业绩
|
||
'prescription_order_stats_assistant_role_id' => 2,
|
||
|
||
// 业务订单列表:「下单」角色(id=6)可按审核人姓名筛选本人审核过的订单
|
||
'prescription_order_placer_role_ids' => [6],
|
||
// 同时拥有以下角色时可按任意审核人筛选(如经理、管理员)
|
||
'prescription_order_placer_exempt_role_ids' => [3, 8],
|
||
|
||
/*
|
||
* 数据隔离(按部门):全局可用,角色上的 data_scope 控制范围
|
||
* 1=全部 2=本部门及下级 3=仅本部门 4=仅本人
|
||
* root/管理员/豁免角色永远视为「全部」;多角色的有限范围取授权并集(数值最小)。
|
||
* 历史默认 scope=1 的普通功能角色与有限范围角色组合时不参与放大,避免意外越权。
|
||
*/
|
||
'data_scope' => [
|
||
// 顶层总开关:false 时所有列表不应用按部门的数据隔离(仍保留老的白名单规则)
|
||
'enabled' => true,
|
||
// 兜底:当用户未挂任何部门、且角色非「全部」时,只能看到自己(true=只看自己;false=返回空)
|
||
'no_dept_fallback_self' => true,
|
||
// 跳过 DataScope 的豁免角色 ID(冗余开关;一般优先用角色 data_scope=1 表达)
|
||
'exempt_roles' => [],
|
||
],
|
||
|
||
/*
|
||
* 复诊接诊率 stats.revisitRate(RevisitRateLogic)口径开关
|
||
* default_inherit_mode:页面默认口径,slot=继承按继承时诊次计入每列分母(新)| exclude=继承不计分母(旧,与线上现状一致)
|
||
* auto_assign_tier_field:tcm:auto-assign-pending 分档所用字段;过渡期沿用旧口径 visit2_rate_new_assign,产品确认后改 visit2_rate
|
||
* inherit_min_next_slot:继承起算诊次下限(k<=1 的继承等同新指派,从二诊列起算)
|
||
*/
|
||
'revisit_rate' => [
|
||
'default_inherit_mode' => 'exclude', // 用户要求复诊接诊率保持原口径;新口径仅在页面手动切换时启用
|
||
'auto_assign_tier_field' => 'visit2_rate_new_assign',
|
||
'inherit_min_next_slot' => 2,
|
||
],
|
||
|
||
/*
|
||
* 复诊到期提醒(tcm_diagnosis_revisit_due 快照 / 列表标红 / 弹窗延迟升级),代码统一 config('project.revisit_reach.xxx') 读取
|
||
* limit_er_center:全量扫描候选诊单限「二中心」子树医助(DeptLogic::getErCenterSubtreeDeptIdSet + admin_dept)
|
||
* anchor_chain:用药起算锚点回退链,sign=物流签收 ship=人工发货日志 create=下单时间;可收窄为 ['create'] 跳过物流/日志查询
|
||
* days_fallback_rx:订单 medication_days 缺失时回落处方 usage_days(剔除系统代开/作废/软删处方)
|
||
* days_default:订单与处方都缺天数时的兜底天数;0=不兜底、不计算 due_date、列表显示「缺开药天数」
|
||
* day_buckets:常见疗程档位,仅用于筛选/展示(到期按实际天数计算,15 天不归 14 档)
|
||
* grace_days / warn_days / severe_overdue_days:到期宽限天数 / 到期前预警天数(橙) / 超期深红阈值天数
|
||
* row_highlight_priority:列表行高亮优先级 overdue_first=复诊超期>未确认>未挂号 | unconfirmed_first
|
||
* toast_enabled / toast_limit:右下角到期弹窗总开关(上线先 false,主管用 chip 清存量)/ 单次最多条数
|
||
* snooze_intervals:第 n 次延迟的间隔秒数(4h→2h→1h→30min),default 为超出档位后的间隔
|
||
* work_hours:延迟提醒钳入的工作时段,落到结束时间之后顺延至次日开始时间
|
||
* contact_max_per_cycle / promise_max_days:每周期「已联系」免计延迟次数上限 / 承诺复诊日最远天数
|
||
* wecom_enabled / wecom_daily_cap / supervisor_admin_ids:企微推送(P2)开关 / 每条每日推送上限 / 抄送主管名单(dept 表无 leader 字段,配置过渡)
|
||
* wecom_daily_list_max:每日汇总文案最多列出的患者数(其余以「等 N 人」收尾)
|
||
* wecom_supervisor_snooze_min:延迟次数达到该值的行,tick 每日抄送一次主管名单(命令 tcm:revisit-due-notify --mode=tick)
|
||
*/
|
||
'revisit_reach' => [
|
||
'limit_er_center' => true,
|
||
'anchor_chain' => ['sign', 'ship', 'create'],
|
||
'days_fallback_rx' => true,
|
||
'days_default' => 0,
|
||
'day_buckets' => [14, 21, 28, 30],
|
||
'grace_days' => 0,
|
||
'warn_days' => 3,
|
||
'severe_overdue_days' => 7,
|
||
// 挂号与下单日至少相隔的天数才算「这笔药之后的复诊」(默认 1 = 次日起);同一天的面诊是开药前的那次面诊,不关闭周期
|
||
'appointment_min_gap_days' => 1,
|
||
'row_highlight_priority' => 'overdue_first',
|
||
'toast_enabled' => true,
|
||
'toast_limit' => 20,
|
||
'snooze_intervals' => [1 => 14400, 2 => 7200, 3 => 3600, 'default' => 1800],
|
||
'work_hours' => ['09:00', '20:00'],
|
||
'contact_max_per_cycle' => 2,
|
||
'promise_max_days' => 14,
|
||
'wecom_enabled' => false,
|
||
'wecom_daily_cap' => 2,
|
||
'supervisor_admin_ids' => [],
|
||
'wecom_daily_list_max' => 5,
|
||
'wecom_supervisor_snooze_min' => 5,
|
||
],
|
||
|
||
/*
|
||
* 提成结算 stats.commissionSettlement(YejiStatsLogic)
|
||
* require_system_auto_prescription:true(默认)仅系统代开口径(is_system_auto=1),常与订单列表「全部已完成」条数不一致。
|
||
* false 时与列表一致纳入手动开方单(仍需履约完成、业绩归因等其它条件)。
|
||
* .env 可选:commission_settlement.require_system_auto = 1|0 ,未配置时读本项。
|
||
*/
|
||
'commission_settlement' => [
|
||
'require_system_auto_prescription' => (int) env('commission_settlement.require_system_auto', 1) === 1,
|
||
],
|
||
|
||
// 腾讯云实时音视频(TRTC)配置
|
||
'trtc' => [
|
||
'sdkAppId' => (int)env('trtc.sdk_app_id', 1600127710),
|
||
'secretKey' => env('trtc.secret_key', '8a6b3ce533b0e46b9d6e17d5c77bac240bc0ccdce4e3db93a0d6a1e55160c73d'),
|
||
'expireTime' => 86400,
|
||
'enable' => env('trtc.enable', false),
|
||
],
|
||
|
||
// 企业微信客户同步配置
|
||
// 从哪个部门开始同步(1=根部门,会递归获取所有子部门成员)
|
||
'qywx_sync_department_id' => 1,
|
||
// 使用「批量获取客户详情」batch/get_by_user,大幅减少 HTTP 次数(失败时自动回退逐条 get)
|
||
'qywx_sync_use_batch_detail' => true,
|
||
|
||
];
|