Files
zyt/artifacts/doctor-web-migration/config-backend-verification.txt
T
2026-10-22 11:02:57 +08:00

41 lines
2.7 KiB
Plaintext
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.
医生网页面诊配置化:后端验证
日期: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。
- 本次仅修改后端,不修改前端代码、不清理现有未提交变更。