# gateBuddy **Repository Path**: robert41526/gate-buddy ## Basic Information - **Project Name**: gateBuddy - **Description**: GateBuddy 是面向医疗多机构场景的 API-first 集成与接口发布平台。它把厂商系统的接口经过原生发布、标准模型转换或流程编排,统一为内部系统可安全调用的 API;重点解决机构差异、接口契约和调用治理问题,而不是替代完整 ESB。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-19 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GateBuddy GateBuddy 是面向医疗多机构场景的 API-first 集成与接口发布平台。它把厂商系统的接口经过原生发布、标准模型转换或流程编排,统一为内部系统可安全调用的 API;重点解决机构差异、接口契约和调用治理问题,而不是替代完整 ESB。 ```text 内部调用方 │ /open/v1 + 消费者凭证 ▼ 发布接口 │ ├── 标准契约(可选)── 机构适配器 │ └── 来源接口 / 流程 │ ▼ 厂商系统 ``` ## 已具备的能力 - **来源接口与模板**:维护厂商、机构、数据源和可复用的来源接口模板,集中配置上游连接信息。 - **机构路由与标准数据模型**:用标准输入/输出 Schema 定义内部契约,为同一标准接口配置各机构的来源接口适配与转换;普通原生接口仍沿用同一发布与执行流程。 - **JSON/XML 转换**:维护请求、响应转换规则,支持转换测试和执行步骤查看。 - **流程编排**:以可视化流程串联接口调用、转换、JDBC 与脚本节点;脚本节点由独立脚本服务执行,目前支持 Groovy。 - **接口发布与调用治理**:按原生发布、标准接口发布或流程发布 API;消费者通过 `X-Consumer-Key`、`X-Consumer-Secret` 鉴权,可按接口授权、启停,并配置单机限流和熔断策略。 - **执行追踪与重放**:保留执行、节点和访问记录,支持调试链路;只读接口可基于加密保存的原始请求重放并生成新的执行记录。 ## 当前接入边界 已实现的上游接入协议为: - HTTP - WebService / SOAP - JDBC(包括数据库视图或查询场景) HL7、FHIR、消息队列、医疗编码映射中心,以及集群 Worker / 高可用部署均不在当前已实现范围内。GateBuddy 也不宣称提供完整 ESB 或异步消息能力。 ## 项目组成与入口 | 模块 | 作用 | 本地入口 | | --- | --- | --- | | `gatebuddy-console` | Spring Boot 管理 API 与 Apache Camel 集成运行时 | `http://localhost:8080` | | `gatebuddy-script-engine` | 独立 Groovy 脚本执行服务 | `http://127.0.0.1:8081` | | `gatebuddy-frontend` | Vue 3 + Vite 管理端 | `http://localhost:5173` | - 管理 API 前缀:`/api/**`(管理员登录保护) - 开放调用前缀:`/open/v1/**`;例如 `POST /open/v1/org/{orgCode}/api/{apiKey}/trigger` - 接口文档:`http://localhost:8080/doc.html`(Knife4j;也可访问 `/v3/api-docs`) 核心技术栈:Java 21、Spring Boot、Apache Camel、MyBatis-Plus、Flyway、MySQL、Sa-Token、Groovy,以及 Vue 3、Vite、Pinia、Element Plus。 ## 最小本地启动 前置条件:Java 21、Node.js(建议使用与锁文件兼容的当前 LTS 版本)和 MySQL 8。创建可访问的 `gatebuddy` 数据库;默认连接为本机 `root` 用户,密码 `123456`,可通过环境变量覆盖。 在仓库根目录启动两个后端服务: ```bash mvn spring-boot:run -pl gatebuddy-script-engine mvn spring-boot:run -pl gatebuddy-console ``` 另开一个终端启动管理端: ```bash cd gatebuddy-frontend npm ci npm run dev ``` 控制台启动时会由 Flyway 自动执行数据库迁移。需要调整数据库连接时,设置 `SPRING_DATASOURCE_URL`、`SPRING_DATASOURCE_USERNAME` 与 `SPRING_DATASOURCE_PASSWORD`;脚本服务地址通过 `GATEBUDDY_SCRIPT_ENGINE_URL` 配置。 > 注意:当前 `docker-compose.yml` 使用 `eclipse-temurin:17-jre-alpine`,但项目的编译目标是 Java 21。请先将 Compose 中的服务镜像升级为 Java 21,再执行 `mvn clean package -DskipTests && docker compose up -d`;在此之前不应将该 Compose 配置视为可直接运行的部署方案。 ## 典型使用路径 1. 创建厂商、机构、数据源和来源接口(可从模板开始)。 2. 按需建立标准数据模型及 JSON/XML 请求、响应转换。 3. 为各机构配置标准接口来源适配器,或使用流程编排组合来源接口、转换和 Groovy 脚本。 4. 以原生、标准或流程方式发布 API,并完成接口 Schema 配置。 5. 创建消费者,授予接口访问权限,按需设置启停、限流和熔断。 6. 调试调用结果,通过执行追踪定位问题;仅对只读接口使用重放功能。 ## 安全提示 - 默认管理员账号仅供本地开发使用;生产环境必须设置 `GATEBUDDY_ADMIN_USERNAME` 和 `GATEBUDDY_ADMIN_PASSWORD`。 - 生产环境必须设置强随机的 `GATEBUDDY_CONFIG_MASTER_KEY`,并妥善配置 `GATEBUDDY_SCRIPT_ENGINE_TOKEN`、`SPRING_DATASOURCE_PASSWORD`(或 `MYSQL_ROOT_PASSWORD`)。 - 不要提交真实 Consumer Key、Consumer Secret、管理员密码、数据库密码、上传的 JDBC 驱动包或本地数据库数据。 - 限流和熔断运行状态目前位于单实例内存中,服务重启后会清空;生产部署时请据此评估调用治理边界。