'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, ];