From bfae92df51f851a5e1608315147d8b5345cbb7be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Tue, 2 Jun 2026 10:06:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20AGENTS.md=20=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E9=93=81=E5=BE=8B=E6=96=87=E4=BB=B6=20IRON?= =?UTF-8?q?=5FLAWS.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 0d211f4ba..99488e6b7 100755 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,6 +3,8 @@ > **模型决定上限,Harness 决定底线。** > 本文件是 OpenHIS 项目的 Harness Engineering 落地。整合了 OpenAI/Anthropic Harness Engineering 方法论与 walkinglabs 实战模式。 +> **🔴 铁律统一文件**: `/root/.codex/rules/IRON_LAWS.md` — 所有智能体必须遵守,运行时自动加载。 + --- ## 📋 项目信息 @@ -192,6 +194,22 @@ Harness: .harness/ (init.sh, PROGRESS.md, feature_list.json, ...) - 需要新功能 → 添加重载方法 - 需要改行为 → 修改方法内部实现 +### 状态变更影响面分析(来自 Bug #574→575 教训) +改任何状态枚举值前,**必须**执行影响面分析: +1. `rg "原状态枚举名" --type java` 列出所有引用文件 +2. 逐个检查:设置值?查询过滤?显示映射?统计聚合? +3. 检查逆向流程:退号、取消、停诊是否兼容新状态 +4. 检查 XML mapper 中所有查询过滤条件 +5. 检查前端 STATUS_CLASS_MAP 和所有 v-if/v-for 条件 +**禁止**:只改正向流程不验逆向流程 + +### 逆向流程验证(来自 Bug #575 教训) +涉及状态流转的 Bug,验证时**必须**覆盖: +- 正向:预约→签到→就诊→完成 +- 逆向:退号、取消预约、停诊、退费 +- 边界:并发操作、重复操作、异常中断 +**禁止**:只测正向流程就标记"修复完成" + ### 搜索所有相关代码路径 修复前必须用 `rg` 搜索: ``` From d1189786cf03741b2dc2d0dddaf09f179ec749bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Tue, 2 Jun 2026 10:15:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(#574):=20=E7=AD=BE=E5=88=B0=E6=97=B6=20?= =?UTF-8?q?booked=5Fnum=20=E6=9C=AA=E7=B4=AF=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:updatePoolStatsOnCheckIn 只做 locked_num-1, 没有同时做 booked_num+1,导致号源池已约数不准确。 修复:签到时原子递增 booked_num --- .../openhis/appointmentmanage/mapper/SchedulePoolMapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java index 27266bfe0..199f0bd05 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java @@ -42,7 +42,7 @@ public interface SchedulePoolMapper extends BaseMapper { @Param("lockedStatus") Integer lockedStatus); /** - * 签到时更新号源池统计:锁定数-1(签到后状态变为CHECKED_IN=3,由refreshPoolStats统一统计) + * 签到时更新号源池统计:锁定数-1,已约数+1 * * @param poolId 号源池ID * @return 结果 @@ -50,6 +50,7 @@ public interface SchedulePoolMapper extends BaseMapper { @Update(""" UPDATE adm_schedule_pool SET locked_num = locked_num - 1, + booked_num = booked_num + 1, update_time = NOW() WHERE id = #{poolId} AND locked_num > 0