 lianlonggangandClaude Code
|
51b050bd4c
|
feat: 全面对齐原 hospitalmiddle 出参契约
- Result 对齐旧结构 {"success","msg","data"}(移除 code 体系,异常统一 error(msg))
- nullAsWriteable=true:VO 序列化保留 null 字段(对齐 Jackson 默认)
- getPeStatus/getExamListByDate 强类型化(PeStatusPhyVo/ExamListVo,契约不变)
- getResultByPeId/getResultByIdcardAndYearAll 补报告组装(hospitalId/结论/建议/item子表)
- bsm SQL 换回旧视图(V_PHYEXAM_PE_STATUS/V_PHYEXAM_PE_PERSONAL_ITEM),修复
PE_TRANSFER_HOSPITAL 列缺失与 peItemList 字段差异
- OkHttp → JDK HttpClient;shade 过滤重叠资源;排除重复 mybatis-plus-core 3.5.5
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-04 18:54:11 +08:00 |
|
 lianlonggangandClaude
|
754448e370
|
feat: 接口测试工具 - @ApiMeta 注解扫描生成接口清单
- 新增 @ApiMeta/@ApiParam 注解,OrderApi 每个方法标注 desc+参数描述
- 新增 ApiScanner 反射扫描器:从 @Mapping+方法签名自动提取 method/path/params
- AdminApi /apis 改为 ApiScanner.scan(OrderApi.class),替代手写清单
- 新增接口自动同步:OrderApi 加 @ApiMeta 即可,无需维护写死列表
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-02 13:49:39 +08:00 |
|
 lianlonggangandClaude
|
8b32335eee
|
fix: 启动/激活日志改走 logback 落盘(System.out 服务运行时不可见)
- HospitalFrontApp:启动完成日志带 PID/激活医院/端口,改 SLF4J;停机钩子同步改
- HospitalRouter:构造器激活医院日志改 SLF4J
- 移除上轮联调遗留的异常因果链诊断代码
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 17:16:14 +08:00 |
|
 lianlonggangandClaude
|
b01d5d1d7a
|
chore: 清理死代码与开发环境遗留(DevAdapter/AppConfig/app-dev.yml)
- 删除 DevAdapter:本机联调 Mock 适配器,生产无用
- 删除 AppConfig:hospital.active/adapters 无任何注入点(active 由 HospitalRouter
直读 Solon 配置,adapters 从未被消费)
- 删除 app-dev.yml:H2 内存库 Mock 配置,h2 依赖已随上轮精简移除
- app.yml 移除 hospital.adapters 死配置(医院注册由各 Adapter 的 @Component 决定)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 16:00:33 +08:00 |
|
 lianlonggangandClaude
|
f333c87aa5
|
perf: 精简 fat jar 体积(34MB→18MB)+ Basic 认证增加 authFlag 总开关
- pom 移除未使用依赖:sqlite-jdbc(Agent 已拆 Python)、h2(dev Mock)、
sa-token-solon-plugin(鉴权已改手写 Basic),并清理对应版本属性
- OrderApi.checkBasic 增加 order.authFlag 总开关(默认 true,对齐原程序
sa-token.authFlag 语义,false 时 /order/** 全放行)
- app.yml 增加 order.authFlag 配置项
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 15:52:29 +08:00 |
|
 lianlonggangandClaude
|
695a7f84f3
|
feat: /order 接口启用 HTTP Basic 认证 + VO/DTO 全面 Lombok 化
- OrderApi 全部 21 个接口增加 checkBasic(对齐原 hospitalmiddle Sa-Token SaBasicUtil.check),
401 + WWW-Authenticate 质询,恒定时间比较防时序攻击;配置 order.basic(空=放行)
- app.yml 新增 order.basic / admin.token 配置位
- VO/DTO 改用 @Data/@NoArgsConstructor/@AllArgsConstructor,删除约 450 行手写样板
(OrderVo/OrderV2Vo/OrderItemVo/UnitVo/ProcResult,业务方法 toPeInfoStr 等全部保留)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 15:33:13 +08:00 |
|
 lianlonggangandClaude
|
d659c4c030
|
refactor: Kotlin→Java 迁移 + Agent 拆分为独立 Python 项目
- 业务代码全部迁移至 src/main/java(Lombok 替代 Kotlin 数据类),pom 移除 Kotlin 依赖
- Agent(WS客户端/看门狗/日志流/升级)拆出至 hospital-front-agent 独立 Python 仓库,本仓库删除 agent 包
- pac/ 部署目录移除:app-jinghe.yml 迁入 resources,部署脚本与配置由 agent 仓库及部署文档承接
- BsmOrderMapper.xml SQL 调整、app.yml 更新
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 15:22:01 +08:00 |
|
 lianlonggangandClaude
|
15ab717317
|
perf: 三方言 Mapper XML SQL 优化(SARG/JOIN/死代码)+ Solon 可空参数修复
SQL 优化(结果契约不变,三方言真实测试库回归通过):
- 删除 bsm getTotalConclusion/getTotalSuggest 死代码(依赖 Oracle 18c
已移除的 wm_concat,接口未引用,汇总逻辑在应用层)
- SARG 优化 13 处:日期列函数包裹(to_char/CONVERT = 年份)改为
范围查询,使医院库日期索引可命中(体检结果表逐年增长,
按身份证查历史接口为主要受益者)
- bsm getResultByIdcardAndYearAll/getItemByPeIdAll:每行标量子查询
改 LEFT JOIN pe_unit_dict;逗号 join 改 ANSI 写法
- ya getPhyexamStatus/getPeStatusByIdnoAndYear:巨型 CASE 状态位
表达式从重复计算 6 次提为子查询 status_sum + ISNULL 防 NULL
改写过程修复:
- Oracle TO_DATE('2026','YYYY') 默认当前月首日陷阱(实测复现),
改拼接 '-01-01' 完整日期
- getResultByIdNoOrPeId 的可空参数在 Solon 下被当必填,
加 required=false
回归:bsm/nx/ya 三方言年份/日期查询族接口全部通过
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-21 14:12:28 +08:00 |
|
 lianlonggangandClaude
|
545fa38789
|
fix: 修复 GET 接口返回 toString 而非 JSON 的关键缺陷 + 测试库联调修复 + 日志实时推送
关键修复:
- 引入 solon-serialization-snack3 渲染插件:无 Accept 头的 GET 请求
之前返回对象 toString(非法响应),现统一输出标准 JSON
- saveOrder/addUnit:Solon @Body Map 泛型反序列化为空,改收原始
String + snack3 手动解析
- Oracle CLOB 直接进 Map 显示为对象句柄:bsm XML 包 DBMS_LOB.SUBSTR
- SqlServer 中文丢失:去掉 cast(NVARCHAR as varchar(8000)) 有损转换;
XML 中文字面量加 N 前缀(状态字典/完成标记)
- /api/admin/log/tail 解码异常:历史日志混 GBK 内容,改容错解码
新增:
- LogStreamManager:日志实时推送(LOG_TAIL_CTRL 控制 + LOG_BATCH
增量上报,多文件并行、游标推进、滚动重置检测)
- mock_b_server.py:最小 WS 模拟 B 端(联调工具)
实测(真实 Oracle/SqlServer 测试库):
- 三方言(bsm/nx/ya)20 个业务接口全部通过
- saveOrder 存储过程:PE00100008 / NX00000003 / YA00000002
- 中文入库/查询/汇总全链路正常
- 日志流端到端:B 下发命令 → Agent 增量推送 → B 收到 LOG_BATCH
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-21 13:59:54 +08:00 |
|
 lianlonggangandClaude
|
535162e63a
|
feat: Kotlin+Solon 重构医院前置机(业务+被控端+Agent+升级流程)
主程序(com.hospital.front):
- Kotlin 2.0.21 + Solon 3.10.7 + MyBatis-Plus + HikariCP + Logback
- HospitalAdapter 策略模式:5 家医院(xinglongyuan/qingyang/ningxia/yanan/jinghe)+ dev Mock
- 三方言 Mapper:bsm(Oracle)/ nx / ya(SqlServer),存储过程参数原样迁移
- 20 个业务接口(/order/*)+ 11 个被控端接口(/api/admin/*,Token 鉴权+脱敏+防穿越)
- 全局异常处理、Result 统一响应、业务开关热更新
Agent(com.hospital.agent,独立进程,单 jar 双 main):
- WebSocket 主动出站连 B 端(指数退避重连),心跳转发主程序健康
- ProcessGuard 看门狗:3 次探测失败自动拉起主程序
- UpgradeCommand:下载→SHA256 校验→备份→替换→拉起→健康检查→失败自动回滚
- 命令分发:PING/日志/配置/重启等 10 类命令
部署(pac/):
- Windows Server 脚本(start.bat/agent.bat/WinSW 服务),纯 ASCII 注释防 GBK 错乱
- 5 家医院配置模板 + agent.properties
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-21 12:35:05 +08:00 |
|
lianlonggang
|
b6c6b436c3
|
Initial commit
|
2026-08-21 01:29:37 +00:00 |
|