做社区医院信息管理系统这几年前后经手过好几套方案从最早的单体JSP项目到后来的前后端分离架构踩过的坑确实不少。这次分享的这套基于SpringBootVue的社区医院信息平台是我个人觉得在技术选型、开发效率、后期维护之间平衡得比较好的一套。先说说这套系统解决的核心问题。社区医院和大型三甲医院的信息化需求差异很大三甲医院追求的是高并发、大数据量的支撑能力而社区医院更看重业务流程的完整覆盖和操作便捷性。这套系统覆盖了门诊挂号、医生问诊、处方管理、收费退费、药品库存、患者档案这几个核心环节基本上一个小型社区医院日常运转需要的功能都齐了。技术栈选型上后端用SpringBootMyBatisMySQL前端用VueElement UI这套组合在Java技术圈里属于非常成熟稳定的方案。SpringBoot负责业务逻辑和接口暴露MyBatis做数据持久化Vue处理页面交互各层职责清晰。对于社区医院这类业务量可控、但对稳定性要求高的场景这套组合完全够用而且后续找人维护也容易毕竟会这套技术栈的开发者一抓一大把。1. 核心业务模块设计与技术选型1.1 社区医院信息平台的业务场景拆解拿到需求后第一件事不是写代码而是把业务流程完整梳理一遍。社区医院的核心业务链条是患者建档 - 挂号分诊 - 医生接诊 - 开具处方 - 收费取药。这个过程涉及的角色有患者、前台挂号人员、医生、药房管理员、系统管理员每个角色的操作权限和关注点完全不同。患者侧关注的是挂号是否方便、候诊时间、历史记录查询医生侧关注的是患者历史病历、开处方是否顺手、检验检查结果查看药房侧关注的是库存是否充足、发药记录是否准确管理层关注的是每日营收、就诊量统计、药品消耗情况。这套系统的模块划分就是严格按照这些角色和业务流程来设计的。我在设计时把系统分成了六大模块系统管理用户、角色、权限菜单、患者管理建档、档案查询、门诊管理挂号、分诊、候诊队列、诊疗管理医生工作站、处方开具、药品管理库存、入库、出库、盘点、统计报表营收、就诊量、药品消耗。每个模块对应一个或多个业务角色权限通过RBAC模型控制避免越权操作。1.2 为什么选SpringBootMyBatis而不是其他组合我在技术选型上做过几次对比试验。最早的版本用过SpringCloud微服务架构结果发现对于社区医院这个业务规模微服务带来的服务拆分、注册发现、配置中心这些额外复杂度完全没有必要。也试过用JPA代替MyBatis但社区医院的数据查询场景大多是动态条件组合查询比如按时间范围、按科室、按医生状态查挂号记录这种场景下MyBatis的灵活性和SQL可控性优势就很明显了。SpringBoot选2.7.x版本很关键这个版本既支持JDK8也支持JDK11和MyBatis的兼容性最好。我用过3.x版本的SpringBoot有些配置项和行为有变化对于业务系统来说没必要追新。MyBatis使用3.5.x版本配合PageHelper做分页mybatis-generator生成基础CRUD代码效率提升非常明显。1.3 前后端分离架构的取舍这套系统采用了前后端完全分离的架构。后端只提供RESTful API前端通过Axios调用接口获取数据渲染页面。这么做最大的好处是前端开发和后端开发可以完全并行后端把接口文档定义清楚前端就可以开工了。我实际开发中的经验是前后端并行开发能把整个项目周期缩短大概30%左右。不过前后端分离也带来了一些额外工作比如跨域问题的处理、Token认证机制的设计、接口异常的统一处理。这些在单体架构里都不需要操心。我的做法是在后端加一个全局CORS配置类前端统一封装Axios实例在请求拦截器里自动携带Token在响应拦截器里统一处理错误码。这样前后端联调的时候能少踩很多坑。2. 数据库设计与核心表结构拆解2.1 数据库建模的核心思路数据库设计是整个项目的根基表结构设计不合理后面写业务代码会非常痛苦。我设计这套系统时遵循了几个原则业务表不冗余存储可计算的数据、状态字段用数字枚举表示而不是字符串、所有表必须有主键和创建时间。以挂号记录表为例有患者ID、科室ID、医生ID、挂号类型普通号、专家号、挂号费用、就诊状态待就诊、就诊中、已完成、已取消、挂号时间。为什么要存快照字段因为医生可能后续调整排班如果只存医生ID后面查历史挂号记录时医生信息对不上就很麻烦。药品表的设计需要注意有效期和批次管理。社区医院的药品流转量不大但过期药品的处理是刚需。我在药品表里增加了生产批号和有效期字段药房发药时会优先出库临期药品这是社区医院药品管理的实际需求。2.2 核心表结构详解用户表sys_user记录系统登录账号信息包括用户名、加密后的密码、真实姓名、手机号、角色ID、状态。密码不使用MD5直接存储而是用BCrypt算法加密每次校验时比对哈希值。用户表与角色表是多对多关系通过中间表关联。患者表patient_info记录患者基本信息包括姓名、性别、出生日期、身份证号、联系电话、家庭住址、过敏史、既往病史。身份证号做唯一索引防止重复建档。这里有一个细节患者基本信息建表时就要预留扩展字段比如医保类型、血型等避免后续业务扩展时频繁改表结构。医生表doctor_info记录医生执业信息包括所属科室、职称、擅长领域、简介、排班周期。医生表和用户表通过user_id字段关联医生登录系统后既能查看排班信息也能进入医生工作站处理接诊业务。科室表dept_info独立维护支持启用和停用状态。2.3 挂号与处方流程的表设计门诊挂号表registration是核心业务表字段包括患者ID、科室ID、医生ID、挂号日期、挂号时段、挂号费用、支付方式、状态。这里我做了唯一约束医生ID挂号日期时段防止同一时段重复挂号。社区医院通常不采用精确到分钟的预约制半天为一个时段比较实际。处方表prescription和处方明细表prescription_detail是主从表结构。处方主表记录开方医生、患者、开方时间、总金额、诊断结果明细表记录每种药品的单价、数量、用法用量。为什么拆成两张表因为一张处方可能包含多种药品如果全塞一张表里要么冗余存储处方公共信息要么用逗号拼接药品信息这两种方案都有缺陷。主从表是最清晰的建模方式。3. 后端核心模块的实现思路3.1 项目初始化与依赖配置创建SpringBoot项目核心依赖包括spring-boot-starter-webWeb支持、mybatis-spring-boot-starter持久层、mysql-connector-java数据库驱动、lombok简化实体代码、spring-boot-starter-validation参数校验、jjwtToken生成和解析、spring-boot-starter-test单元测试。在application.yml里配置数据源和MyBatis相关参数。数据源配置需要注意连接池的选择我用的HikariCP这是SpringBoot默认的性能非常稳定。MyBatis配置里开启驼峰命名映射这样数据库的snake_case字段能自动映射到Java的camelCase属性省掉大量ResultMap配置。项目结构采用标准的分层架构controller接口层、service业务层、mapper数据访问层、entity实体类、dto数据传输对象、vo视图对象。controller只负责参数接收和结果封装不写业务逻辑service层处理核心业务逻辑事务注解加在service层方法上。3.2 基于JWT的登录认证设计社区医院的用户角色不同登录后的操作权限差异很大。我用JWT实现无状态认证用户登录成功后后端生成一个Token返回给前端前端存储Token并在每次请求时通过Authorization请求头携带。后端通过拦截器统一校验Token的合法性和有效期。Token生成时我把用户ID、角色ID、用户名放入Claims中过期时间设为2小时。为什么不放太多信息Token体积越大每次请求的传输开销就越大。如果后续需要获取用户详细信息可以用用户ID去查数据库。关于Token过期处理我的方案是前端Axios响应拦截器判断返回码为401时自动跳转到登录页并清除本地存储的用户信息。这个逻辑放在前端做比在后端做更合理后端只负责返回401状态码即可。3.3 门诊挂号流程的完整实现挂号是整个系统的高频操作流程上需要保证数据一致性。患者先建档如果已经建档则直接挂号。挂号操作需要校验医生当天该时段是否有号源号源数量在排班表维护。挂号成功后挂号记录状态变为待就诊医生工作站的待诊列表自动刷新。这个流程涉及多张表的写操作我在service层方法上加了Transactional注解。这里有个小细节转账支付功能的实现要区分线上支付和线下支付两种场景。线上支付对接微信或支付宝需要额外开发工作我的版本里预留了支付接口默认走线下收银流程挂号记录里的支付状态由结算模块统一处理。3.4 医生工作站的处方管理实现医生接诊时可以看到患者的就诊历史和过敏史这是社区医院与大型医院相比更需要关注的功能。因为社区医院患者群体相对固定大多是附近居民慢性病患者比例高医生熟悉患者情况是常态。但系统不能依赖医生的记忆过敏史和既往病史必须在接诊页面突出展示。开处方时医生选择药品、输入数量、填写用法用量系统自动计算单张处方总金额。药品库存充足才能开单库存不足时前端给出提示医生可以和患者协商更换药品。处方保存后药房端能实时看到新处方发药后处方状态更新为已完成。这里有一个防止重复提交的处理处方提交按钮做了防抖处理后端也做了幂等校验。前端防抖很简单就是提交后禁用按钮后端幂等校验用了一个请求流水号字段前端提交时生成UUID后端判断该流水号是否已处理过处理过则直接返回上次结果。4. 前端Vue实现与交互细节4.1 Vue项目初始化和路由设计前端使用Vue3 Vue Router 4 Pinia Element Plus这套组合。Vue3的组合式API相比Vue2的选项式API逻辑复用性大幅提升特别是自定义Hooks的模式非常适合把可复用的逻辑抽取出来。Element Plus组件库覆盖后台管理系统的绝大部分UI需求不必重复造轮子。路由设计上分了静态路由和动态路由两层。静态路由只包含登录页和404页面动态路由根据用户角色权限动态添加。用户登录成功后后端返回该用户有权限访问的菜单树前端将菜单树转为路由配置并动态添加。这样设计的好处是前端路由层面天然防止了越权访问即使有人手动输入URL也无法访问无权限的页面。4.2 挂号页面的关键交互挂号页面的用户是前台工作人员操作效率直接决定排队时长。我把患者姓名和身份证号做成支持模糊查询的输入框患者建档后可以一键带入历史挂号信息减少重复输入。挂号类型切换时联动费用展示挂号成功后直接进入打印小票页面。为了提升操作效率挂号成功后弹窗提示是否继续挂号默认为3秒后自动关闭并重置表单。这个设计也是从实际操作中总结出来的社区医院高峰期挂号窗口经常排长队前台操作少一步效率就能提升不少。4.3 基于ECharts的就诊数据可视化统计模块是管理层最常看的页面主要展示门诊量趋势、科室就诊占比、医生工作量排名、药品消耗排行等。我用ECharts实现这些图表数据由后端聚合查询返回。比如门诊量趋势图后端按天分组统计挂号数据前端用折线图展示。ECharts组件的封装也有一点经验不要把ECharts初始化逻辑散落在各个页面组件里最好封装成一个通用Chart组件通过props传入option配置项组件负责初始化、更新和销毁。这样切换页面时不会有图表实例泄漏问题。5. 环境搭建与数据库初始化5.1 开发环境版本选型开发环境的版本选择直接决定项目的稳定性。JDK使用1.8版本这是目前Java生态兼容性最好、问题最少的版本。Maven使用3.6.xNode.js使用16.x以上版本MySQL使用5.7或8.0版本。这些版本都经过大量项目验证如果环境版本不一致容易出现各种莫名奇妙的问题。MySQL数据库的字符集设置非常关键必须在创建数据库时指定UTF-8字符集否则后续插入中文数据会乱码。建库语句可以指定默认字符集同时连接字符串中也要配置characterEncodingutf8参数双保险防止编码问题。5.2 数据库初始化脚本编写数据库脚本包含建库、建表、初始数据三部分。初始数据包括管理员账号BCrypt加密后的密码、科室数据、药品分类数据。脚本设计上用sql文件存储通过SpringBoot的schema.sql和data.sql自动执行也可以手动在Navicat中执行。编写脚本时我踩过最大的坑是编码问题所以每个sql文件头部都要加SET NAMES utf8mb4同时确保文件本身以UTF-8编码保存这两步缺一不可否则导入时中文全部变成乱码。5.3 项目启动和调试技巧后端启动时SpringBoot的启动日志里能看到端口占用情况、数据源连接状态、接口映射列表。如果接口没有正常注册优先检查controller层的注解是否配置正确。前端启动时npm install命令耗时较长建议使用国内镜像源加速能节省大量时间。联调过程中最常用的调试方式是Chrome浏览器的开发者工具Network面板里能清晰看到每个接口的请求参数、响应结果、状态码和耗时。如果接口返回500错误优先看后端控制台的异常堆栈信息500错误大多是业务逻辑或数据库操作问题不一定是接口代码本身的问题。6. 安全性与异常处理机制6.1 接口级别的权限控制方案后端接口的权限控制不能只依赖前端隐藏按钮接口层面必须做校验。我的做法是定义一个自定义注解RequirePermission标注在需要权限控制的controller方法上。在拦截器里读取注解中的权限标识与当前登录用户的权限列表比对没有权限则返回403状态码。系统管理员的权限列表由角色表、菜单表、角色菜单关联表三张表共同维护。角色可以拥有多个菜单权限用户可以赋予多个角色这样形成完整的RBAC权限模型。实际分配权限时只需要给角色勾选菜单树用户关联角色后就能自动继承相关权限。6.2 全局异常处理与统一返回格式前后端分离架构下接口返回格式必须统一。我的返回格式是状态码、消息、数据三要素。业务异常、参数校验异常、系统异常都通过RestControllerAdvice统一捕获处理转换为对应的状态码和消息返回给前端。前端在处理响应时只需要判断状态码。状态码为200是正常返回为401是未登录或Token失效为403是无权限其他状态码则是业务异常。把错误提示统一放在响应拦截器中处理页面组件里只需要关注成功场景的数据处理。6.3 SQL注入与XSS攻击防护SQL注入防护主要依赖MyBatis的预编译机制使用#{}占位符而不是${}拼接字符串。${}的使用场景仅限于动态表名或排序字段并且需要人工校验参数白名单。MyBatis的预编译本质上是使用PreparedStatement能有效防止SQL注入。XSS攻击防护通过过滤器拦截所有请求过滤请求参数中的危险标签和脚本内容。药品名称、症状描述这类文本输入字段最容易成为XSS攻击载体前端输入时限制长度和字符类型后端在接口入口处做统一过滤双端配合把风险降到最低。7. 完整源码部署与上线指南7.1 Linux服务器环境搭建服务器使用CentOS 7系统部署前需要安装JDK 1.8、MySQL 5.7、Nginx 1.20。JDK安装后必须配置环境变量否则java命令无法执行。MySQL安装完成后需要初始化密码并创建专用数据库账号不建议直接使用root账号连接应用数据库安全风险太大。Nginx的主要职责是托管前端静态文件并反向代理后端接口。前端项目构建后是一堆静态文件Nginx直接指向dist目录即可。接口请求通过Nginx的proxy_pass转发到后端服务端口同时配置跨域相关的响应头这样前端访问时不会出现跨域问题。7.2 后端打包部署全流程后端项目在本地执行mvn clean package命令打包生成可执行的jar文件。上传到服务器后使用java -jar命令启动为了确保后台运行我用nohup命令配合日志重定向。服务器重启后进程不会自动拉起可以把启动命令写入systemd服务配置实现开机自启。初次启动时重点关注日志中是否包含启动成功和数据库连接池初始化完成的标记。启动失败一般有三种原因端口被占用、数据库连接失败、内存不足。端口占用可以用netstat命令排查数据库连接失败检查连接串和账号权限内存不足调整JVM启动参数。7.3 前端构建与Nginx配置前端项目执行npm run build命令生成dist目录将dist目录整体上传到服务器指定路径。Nginx的配置关键是location规则定义静态文件请求直接返回dist目录下的对应文件带/api前缀的请求转发到后端服务。配置完成后执行nginx -s reload重载配置。部署完成后需要用浏览器完整走一遍业务流程重点关注登录跳转是否正常、挂号流程是否报错、处方开立和药房发药是否闭环。实测中我用测试患者走通了建档到发药的完整链路确认数据正确落库后系统才算正式上线。8. 常见问题排查与优化建议8.1 MyBatis使用中的典型问题解析数据库字段与实体属性映射不上是最常遇到的问题。如果数据库字段是下划线风格而实体属性是驼峰风格需要在yml配置中开启map-underscore-to-camel-case。如果没有开启MyBatis查询结果会有一堆null字段。另一个常见问题是Mapper接口和XML文件绑定失败。Mapper接口和XML文件必须在同一个包路径下XML文件的namespace必须和接口全限定名一致这两个条件缺一个都会报绑定异常。值得注意的是MyBatis的XML文件默认不会被打包进jar文件需要在pom.xml中配置resources标签包含XML文件。8.2 前后端联调中的跨域与Token问题本地开发时前端端口和后端端口不一致跨域问题就会显现。我在后端配置了CorsFilter过滤器允许指定前端的地址跨域访问。生产环境不需要这个过滤器因为Nginx代理让前端和后端处于同一域名下不存在跨域问题。Token失效的排查思路要分别从前端和后端两个角度入手。前端查看请求头是否携带了Authorization参数后端查看拦截器中Token解析是否有异常。我用浏览器开发者工具看请求头再用Postman模拟接口请求能快速定位是前端没带Token还是后端解析失败。8.3 数据库连接池与查询性能优化社区医院系统的并发量不高但慢查询仍然需要关注。我使用MySQL的慢查询日志定位执行时间超过1秒的SQL语句逐一分析执行计划为where条件中的常用字段添加索引。挂号记录表的时间字段、患者表的身份证号字段、药品表的名称字段都是重点索引对象。数据库连接池需要根据实际并发量设置最大连接数。HikariCP的默认最大连接数是10对于社区医院系统来说完全够用。连接池调参时不能盲目增大每个连接都会占用数据库的内存资源过度配置反而可能引起数据库性能下降。9. 系统扩展方向探讨9.1 电子病历与检验检查对接社区医院近年对电子病历的要求不断提高解决门诊处方和病历联动的问题是下一步的扩展重点。通过增加电子病历模块实现病历模板管理、病历书写质控、历史病历按时间线展示。这块功能一旦上线医生接诊时可以更完整地了解患者的疾病发展过程。检验检查系统的对接主要涉及LIS检验信息系统的接口开发。社区医院的检验设备大多支持标准的接口协议开发时只要注意接口字段的映射关系和结果回传机制就能打通检验申请、标本采集、结果回传、医生端查看的完整链路。9.2 互联网社区医疗服务场景社区医院未来最有想象力的方向是互联网医疗服务。比如患者通过小程序在线预约挂号、查看检查报告、在线问诊、慢病复诊开方、药品配送到家。这些场景都是基于当前的系统框架做的业务延伸后端接口基本可以复用主要是增加小程序端或App端。我在设计这套系统时特意将接口按业务场景拆分成细粒度接口目的就是为将来做互联网服务预留扩展能力。比如查询医生排班和查询号源余量拆分成两个接口小程序端可以直接调用不需要单独为小程序重写一套接口。10. 个人开发心得与项目复盘这套系统从零到一开发完成花了大概两个月时间中间经历了需求确认、数据库设计、前后端开发、联调测试、部署上线的完整流程。如果回头让我重新做一遍我会更早开始写接口文档前后端联调阶段的沟通成本能大幅降低。接口文档不需要多复杂只要把接口地址、请求参数、返回数据结构几个关键信息写清楚就行。另外在框架选择上我始终坚持一个原则能用成熟方案解决的就不要自己造轮子。社区医院信息管理系统不是一个技术复杂度很高的项目难点更多在业务流程的理解和数据模型的设计上。把业务抽象清楚代码实现是水到渠成的事。最后再分享一个实际开发中的小技巧在开发阶段就把日志打完整每个接口的开始和结束都打印日志包含请求参数和响应结果。遇到问题时通过日志能快速还原现场不用瞎猜问题原因。等项目稳定运行后再把日志级别调高减少无用的日志输出。这个小习惯帮我节省了大量排查bug的时间也希望对你后续开发有帮助。
企业数字化 ERP 产品动态
相关推荐
FDE企业项目实战训练营全拆解:从能力模型到交付实战 1. 从零吃透FDE企业项目实战训练营:一个老兵的完整拆解第一次听到“FDE企业项目实战训练营”这个名字,很多人脑子里冒出来的第一个问题就是:FDE到底是什么?是某个新出的技术框架,还是某家厂商的认证体系?我… · 2026/9/24 21:30:48
WorkBuddy AI智能体实战:从安装配置到多智能体协作的完整指南 1. 为什么值得花时间折腾 WorkBuddy第一次听到 WorkBuddy 这个名字,很多人会下意识把它归类成"又一个套壳聊天工具"。我一开始也是这么想的,直到真正把它跑起来、接上自己的第一个 Skill、看着它自动完成一串原本要手动点十几分钟的操作&#… · 2026/9/24 21:30:41
Windows下CC Switch安装配置教程:Codex CLI模型切换与报错排查 1. 先搞懂 CC Switch 是干嘛的,再决定装不装最近我在 Windows 上折腾 Codex CLI,发现“切换模型”这个最基本的需求比想象中麻烦得多。官方 Codex 默认绑定 OpenAI 的服务,想临时换到 DeepSeek、智谱 GLM 这类模型,要么手动改conf… · 2026/9/24 21:30:41
Vibe Coding与LangGraph:AI原生开发的双轨范式 1. 什么是“Vibe Coding”?它真在改变程序员的日常吗? “Vibe Coding”这个词最近半年在技术社区里像野火一样烧起来,不是因为某个新框架发布了v1.0,而是因为它精准戳中了大量开发者在LLM时代的真实工作状态——那种靠直觉、靠上下… · 2026/9/24 22:04:45
多微网结构设计的二进制矩阵优化与进化算法实现 最近在推进一个多微网网络结构设计的项目,时间紧、规模大,核心卡在一个看上去不太起眼的问题上:几十个微网节点之间,到底哪些该建联络线,哪些开关合上、哪些断开,才能让总成本最低、供电可靠性还过得去。这… · 2026/9/24 22:04:45
JMeter组件全解析:从线程组到监听器,理清作用域与常用搭配 这阵子手头压测任务告一段落,帮几个项目搭完JMeter压测环境,踩了不少坑,也把组件之间的逻辑重新捋了一遍。决定写个系列,第一篇先把JMeter的组件家底盘清楚。性能测试工具里JMeter可能是国内用得最广的了,免费、开源、… · 2026/9/24 22:04:45
EDI连接困局与中间库架构:制造出海企业B2B集成的务实解法 出海做制造业,订单不少,麻烦更多。尤其跟海外大客户做B2B业务,几乎绕不开电子数据交换(EDI,Electronic Data Interchange)。你可能听过这个缩写,知道它是供应链上下游之间,用标准化电… · 2026/9/24 22:04:45
AI智能工作台WorkBuddy实战:从订单抓取到流程编排的自动化指南 最近几个月,我在好几个技术社区和效率工具的群里潜水,WorkBuddy 是被提到最频繁的工具之一。大家聊的很少是“这软件怎么装”,更多是“我用它做了什么”——有人拿它自动对账跨境店铺的订单,有人拿它定闹钟式地逛平台签到… · 2026/9/24 22:04:45
WorkBuddy 实战指南:从自动签到到跨境电商订单巡检与内容采集 最近后台和社群里被问得最多的一个问题就是:大家都在用 WorkBuddy 做什么?说实话,这类问题单靠官方文档很难回答清楚,因为 WorkBuddy 本身是一款偏"个人工作流编排"的 AI 自动化工具,它的用法几乎取决于你想… · 2026/9/24 22:04:38
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44