41 lines
2.7 KiB
Plaintext
41 lines
2.7 KiB
Plaintext
医生网页面诊配置化:后端验证
|
||
日期:2026-10-22
|
||
|
||
配置入口:server/config/doctor_web_consultation.php
|
||
- cutoff_at 默认 2026-10-24 00:00:00,严格按 Asia/Shanghai 解析到秒。
|
||
- approaching_hours 默认 48,urgent_hours 默认 24;必须为非负整数且前者 >= 后者。
|
||
- 提醒日期由截止时间自动计算。修改此文件即可在后续接口请求读取,无须前端重新构建。
|
||
- 使用固定路径 require,绕过 ThinkPHP 已加载/缓存的配置;不做日期静态缓存。
|
||
- PHP 提供 opcache_invalidate 时,读取前主动失效该文件的字节码缓存。
|
||
|
||
接口与行为:
|
||
- 免登录只读 /config/doctorWebConsultation:cutoff_at、approaching_at、urgent_at、server_time。
|
||
- 登录用户资料继续通过同一 publicPolicy() 返回策略。
|
||
- 中间件截止判定、截止时间字段和停用文案均来自配置。
|
||
- 保留医生角色、root、精确动作范围、浏览器头优先和新版/旧版桌面 UA 兼容行为。
|
||
- 非法日期(含不存在的日历日期/当地时间)、时区后缀、非整数/负数/逆序/溢出小时数抛出明确字段错误。
|
||
- 不相关动作、非医生、root 和无浏览器信号的已知桌面请求先行放行,不因无效迁移配置扩大影响。
|
||
|
||
运行环境:PHP 8.2.9 CLI,Windows。
|
||
通过:
|
||
1. php tests/DoctorWebConsultationPolicyTest.php
|
||
Doctor web consultation policy: 133 assertions passed
|
||
覆盖默认前一秒/截止秒/后一秒、自定义 2032 年中午截止与跨年提醒、小时数修改、秒级消息、
|
||
多进程时区、无效配置、真实中间件、原生客户端兼容、真实配置控制器动作及免登录名单。
|
||
临时目录中仅修改专用配置,验证同一 PHP 进程立即读取新日期;同时保留旧 ThinkPHP 缓存值验证绕过缓存。
|
||
2. php tests/CallSignatureIdentityContractTest.php
|
||
Call signature identity contract: OK
|
||
3. php tests/AppointmentCallPolicyTest.php
|
||
Appointment call policy: 34 assertions passed (in-memory model, no database)
|
||
4. php tests/AdminMultiRoleRegressionTest.php
|
||
AdminMultiRoleRegressionTest passed
|
||
5. php tests/DesktopWorkstationUpdateContractTest.php
|
||
Desktop workstation update contract: OK
|
||
6. php -l 检查全部 5 个新增/修改的后端 PHP 文件通过。
|
||
|
||
限制:
|
||
- 未连接业务数据库或线上服务,未进行线上 HTTP 冒烟测试;控制器和中间件使用内存请求/响应测试替身。
|
||
- 本地 PHP CLI 未加载 OPcache,主动失效 OPcache 分支未做真实扩展环境验证。
|
||
- 使用真实 Asia/Shanghai 时区规则;历史夏令时或早期时区偏移会依照时区数据库输出,现代/未来日期输出 +08:00。
|
||
- 本次仅修改后端,不修改前端代码、不清理现有未提交变更。
|