# OpenHIS - AI Agent Development Guide ## 项目概览 OpenHIS 是一个医院管理系统,采用 Java 17 + Spring Boot 后端和 Vue 3 + Vite 前端架构。 ## 构建和运行命令 ### 后端(Java/Spring Boot) ```bash # 构建整个项目 cd openhis-server-new mvn clean package -DskipTests # 运行后端(开发模式) cd openhis-server-new/openhis-application mvn spring-boot:run # 运行特定模块 cd openhis-server-new/[module-name] mvn spring-boot:run ``` ### 前端(Vue 3 + Vite) ```bash # 安装依赖 cd openhis-ui-vue3 npm install # 开发服务器 npm run dev # 生产构建 npm run build:prod # 测试环境构建 npm run build:test # 预览构建结果 npm run preview ``` ### 测试 项目当前没有配置正式的测试框架。如需添加测试: - 后端:考虑使用 JUnit 5 + Mockito - 前端:考虑使用 Vitest + Vue Test Utils ## 代码风格规范 ### Java 后端规范 - **Java 版本**: 17 - **框架**: Spring Boot 2.5.15 - **ORM**: MyBatis Plus 3.5.5 - **数据库**: PostgreSQL - **包结构**: - `com.openhis` - 业务逻辑 - `com.core` - 核心框架 - **命名约定**: - 类名:PascalCase(如 `UserController`) - 方法名:camelCase(如 `getUserList`) - 常量:SCREAMING_SNAKE_CASE - 配置文件:kebab-case - **注解使用**: - 使用 `@Slf4j` 替代手动声明 logger - 使用 `@Data` 在实体类中 - 使用 `@Service/@Controller/@Repository` 等 Spring 注解 - **异常处理**: - 使用统一的异常处理机制 - 自定义业务异常继承 `RuntimeException` ### Vue 前端规范 - **框架**: Vue 3 + Composition API - **UI 库**: Element Plus - **状态管理**: Pinia - **路由**: Vue Router 4 - **构建工具**: Vite 5 - **组件命名**: PascalCase - **文件命名**: kebab-case - **变量命名**: camelCase - **常量命名**: SCREAMING_SNAKE_CASE - **函数命名**: - 事件处理:`handle` 前缀 - 数据获取:`get`/`load` 前缀 - 提交操作:`submit` 前缀 ### 导入顺序 #### Java 1. `java.*` 2. `javax.*` 3. 第三方库 4. `com.core.*` 5. `com.openhis.*` 6. `*.*`(其他包) #### JavaScript/Vue 1. `vue` 相关 2. 第三方库 3. `@/` 别名导入 4. 相对路径导入 ### 代码格式 #### Java - 缩进:4个空格 - 行长度:120字符 - 左大括号不换行 #### Vue/JavaScript - 缩进:2个空格 - 字符串:优先使用单引号 - 行长度:100字符 ## 关键配置文件 ### 后端配置 - 主配置:`openhis-server-new/openhis-application/src/main/resources/application.yml` - 环境配置:`application-{profile}.yml` - Maven 父 POM:`openhis-server-new/pom.xml` ### 前端配置 - Vite 配置:`openhis-ui-vue3/vite.config.js` - 环境变量:`.env.*` 文件 - 路由配置:`openhis-ui-vue3/src/router/index.js` ## 开发约定 ### API 设计 - RESTful API 风格 - 统一响应格式 - 使用 Swagger 文档 - 错误码统一管理 ### 数据库 - 表名:snake_case - 字段名:snake_case - 主键:使用 `id` - 软删除:使用 `valid_flag` 字段 ### 前端组件 - 单一职责原则 - Props 使用 camelCase - Events 使用 kebab-case - 使用 Composition API - 组件文档使用 JSDoc ### 状态管理 - 模块化设计 - 异步操作使用 actions - 避免在组件中直接修改状态 ## 环境变量 ### 前端 - `VITE_APP_BASE_API`: API 基础路径 - `VITE_APP_ENV`: 环境标识 ### 后端 - `spring.profiles.active`: 激活的配置文件 - `core.name`: 应用名称 - `core.version`: 应用版本 ## 安全规范 - 所有 API 接口需要权限验证 - 敏感信息使用环境变量 - SQL 注入防护 - XSS 攻击防护 ## 性能优化 - 后端使用连接池(Druid) - 前端使用路由懒加载 - 图片使用 WebP 格式 - 大列表使用虚拟滚动 ## 常用工具类 - 后端:`com.core.common.utils.*` - 前端:`@/utils/*` ## 注意事项 1. 修改数据库结构需要同步 SQL 脚本 2. 新增功能需要添加权限配置 3. 前端路由需要在权限系统中注册 4. 接口变更需要更新 Swagger 文档 5. 遵循现有代码风格,避免不必要的变化 ## 故障排除 - 后端端口:18080 - 前端端口:81 - API 前缀:`/openhis` - Swagger UI:`/openhis/swagger-ui/index.html` - Druid 监控:`/openhis/druid/login.html`