Files
zyt/docs/plans/revisit-assignment-cohort-2026-10-16.md
T
2026-10-17 16:08:24 +08:00

4.0 KiB
Raw Blame History

复诊接诊率:保留原算法,新增统计使用独立入口

2026-10-17 更正:用户要求原来的算法保持不变。原页面、原接口及原计算逻辑已恢复至修改前版本。10 月 16 日曾将原 Controller 接入指派周期计算器,虽然旧计算器仍保留,但原页面的数据口径已改变;本次恢复覆盖了完整调用链。

三个独立入口

页面 路径 接口 口径
原复诊接诊率 /stats/revisit_rate stats.revisitRate/* 原按月算法、默认配置及 exclude/slot 切换保持原样
按指派周期复诊率 /stats/revisit_assign_rate stats.revisitAssignRate/* 按新指派日期范围及医助选患者,复诊累计至查询当天
继承复诊接诊率 /stats/revisit_inherit_rate stats.revisitInheritRate/* 按继承日期及医助选患者,继承首笔有效订单算二诊、次笔三诊

原四个 action(overview、deptOptions、assignLines、visitOrderLines)继续直接调用原 RevisitRateLogic。原月份筛选、参数 month / inherit_mode / kind、分母、分子、全局诊次、订单持有人及部门汇总规则全部恢复。原 API 函数原字节保留,新接口函数以 revisitCohort 前缀追加,避免旧页面误用。

RevisitCohortLogic 使用独立 RevisitCohortDataSource 读取数据,不再继承或要求修改原 RevisitRateLogic 的方法可见性。自动指派、个人业绩、全局诊次服务和项目统计配置均与修改前逐字节一致。

独立新增报表

日期范围包含起止日,订单累计到查询时刻。继承前全局诊次及偏移不影响继承重新起算。转派/释放终止旧持有段;释放后重新分回原医助正常统计。新报表的去重及继承规则只作用于新接口。

两个新报表分别接受 start_date / end_date、dept_ids、assistant_id;明细可附 scope_assistant_id / dept_id,与顶层筛选取交集。继承类型由服务端固定,不能通过参数切换。

发布

原页面恢复需要发布恢复后的 PHP 与管理端构建,原菜单无需修改;本次未执行正式 release,未连接业务库,不能据本地证据声称线上已恢复。

启用独立新增页面时,依次执行:

  1. server/sql/1.9.20261016/01_add_revisit_inherit_rate_menu.sql
  2. server/sql/1.9.20261017/01_add_revisit_assign_rate_menu.sql
  3. 按部署流程刷新 AdminAuthCache 并重新登录。

脚本幂等,按原各项权限逐项授权,原角色没有订单明细权限时不会额外获得。两个脚本均不改写原菜单、原权限记录或业务数据。

本轮验证

  • 10 个原链路文件(原页面、Controller、Logic、Calculator、诊次服务、配置、自动指派、个人业绩及 MCP 目录)与 HEAD=c67b3eff69d9a3ac2046861751f159692a0abcd7 字节一致;原 API 文件完整原字节作为前缀保留。证据:artifacts/revisit-legacy-source-proof.json。
  • 原统计、继承诊次及诊次服务测试 122 项通过;新增队列纯计算 34 项通过。
  • 本机隔离 MySQL 5.7 集成测试 37 项通过:实际 Controller 调用验证原 exclude/slot 的汇总及两类明细与原 Logic 完全一致;新增查询不改变原响应;独立新接口固定类型;两个菜单脚本幂等、逐权限授权且不改写原菜单。
  • 四份 Vue SFC 编译及 12 个真实 API wrapper 路径调用通过;浏览器 20 项检查通过,包含原月筛选、原口径切换、原明细参数及新增两页入口隔离。浏览器使用虚构接口响应,数据库测试使用独立本机临时库。
  • MCP 目录单元测试及 PHP 语法检查通过。
  • 最终 Vite 生产构建通过,输出到 .codex-tasks/revisit-legacy-restored-build,未执行 release。

集成测试须在本机独立临时 MySQL 上显式启用:

$env:REVISIT_COHORT_TEST_DISPOSABLE = '1'
$env:REVISIT_COHORT_TEST_MYSQL_PORT = '33817'
php server/tests/RevisitCohortDatabaseTest.php