Files
zyt/server/config/project.php
T
2026-10-15 11:03:54 +08:00

234 lines
13 KiB
PHP
Executable File
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 [
// 系统版本号
'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,
];