# f2417-platform **Repository Path**: chinagraphics/f2417-platform ## Basic Information - **Project Name**: f2417-platform - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-26 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # F2417-platform 船舶仿真系统微服务平台,提供数据接入、业务后台和编队管理三大核心服务。 ## 项目架构 本项目采用 Go Workspace 管理多模块,将公共代码独立为 `pkg` 模块,各服务作为独立模块依赖 `pkg`,防止服务开发者随意修改公共代码。 ``` F2417-platform/ ├── go.work # Go Workspace文件 ├── pkg/ # 独立的公共模块 │ ├── go.mod # module F2417-platform/pkg │ ├── common/ │ │ ├── config/ # 公共配置结构 │ │ ├── model/ # 公共数据模型 │ │ ├── mqtt/ # MQTT客户端和主题定义 │ │ ├── redis/ # Redis客户端封装 │ │ ├── database/ # MySQL/Gorm封装 │ │ ├── logger/ # 日志封装 │ │ └── response/ # 统一响应格式 │ └── server/ # 通用服务启动器 ├── services/ │ ├── access_server/ # 数据接入服务(独立模块) │ │ ├── go.mod # require F2417-platform/pkg │ │ ├── cmd/main.go │ │ ├── internal/ │ │ └── config/ │ ├── core_server/ # 业务后台服务(独立模块) │ │ ├── go.mod # require F2417-platform/pkg │ │ ├── cmd/main.go │ │ ├── internal/ │ │ └── config/ │ └── formation_server/ # 编队服务(独立模块) │ ├── go.mod # require F2417-platform/pkg │ ├── cmd/main.go │ ├── internal/ │ └── config/ ├── deploy/ # 部署文件 ├── scripts/ # 脚本文件 └── docs/ # 文档 ``` ## 模块管理规范 - **pkg 模块**:公共代码,所有服务共享。修改需经过审核,服务开发者不应直接修改。 - **服务模块**:各服务独立管理自己的 go.mod,通过 `require F2417-platform/pkg` 依赖公共模块。 - **Go Workspace**:开发时通过 `go.work` 自动解析本地模块,无需发布 pkg 到远程仓库。 - **生产部署**:Docker 构建时复制 pkg 和对应服务代码,通过 go.work 解析依赖。 ## 三个服务 ### 1. access_server - 数据接入服务 (端口: 8082) 接收AFSIM仿真数据,通过MQTT推送到其他服务。 - POST `/api/v2/afsim/data/batch` - 批量接收AFSIM数据 - POST `/api/v2/afsim/data/single` - 接收单条AFSIM数据 - GET `/health` - 健康检查 ### 2. core_server - 业务后台服务 (端口: 8080) 提供HTTP接口,包括配置下发、武器控制、作战管理等功能。 - `/api/v2/ship-large-config` - 大型船舶配置 - `/api/v2/ship-medium-config` - 中型船舶配置 - `/api/v2/ship-large-run-config` - 大型船舶运行配置 - `/api/v2/ship-medium-run-config` - 中型船舶运行配置 - `/api/v2/sea-combat-plan` - 对海作战方案 - `/api/v2/missile-attack-plan` - 导弹打击计划 - `/api/v2/target-attack` - 目标打击 - `/api/v2/electronic-jam-cmd` - 电子干扰命令 - `/api/v2/revoke-jam-target` - 撤销干扰目标 - `/api/v2/active-passive-jam-combat-control` - 主被动干扰作战控制 - `/api/v2/jp-shoot-control-command` - JP射击控制命令 - `/api/v2/jp-combat-control-command` - JP作战控制命令 - `/api/v2/ship/mobile-avoid-cmd` - 机动规避命令 - `/api/v2/hkb/guidance` - HKB引导 - GET `/health` - 健康检查 ### 3. formation_server - 编队服务 (端口: 8083) 编队相关逻辑,目前预留。 - `/api/v2/formation` - 编队管理 - GET `/health` - 健康检查 ## 技术栈 - **语言**: Go 1.22+ - **Web框架**: Gin - **ORM**: GORM - **数据库**: MySQL 8.0 - **缓存**: Redis 7 - **消息队列**: MQTT (EMQX) - **日志**: Zap - **配置**: YAML - **模块管理**: Go Workspace ## 快速开始 ### 1. 启动依赖服务 ```bash cd deploy docker-compose up -d mysql redis emqx ``` ### 2. 编译 ```bash scripts\build.bat ``` 或手动编译: ```bash cd services/access_server && go build -o ../../bin/access_server.exe ./cmd/ cd services/core_server && go build -o ../../bin/core_server.exe ./cmd/ cd services/formation_server && go build -o ../../bin/formation_server.exe ./cmd/ ``` ### 3. 运行 开发模式: ```bash scripts\run_dev.bat ``` 生产模式: ```bash scripts\run_prd.bat ``` ### 4. Docker部署 ```bash cd deploy docker-compose up -d ``` ## 配置说明 每个服务有独立的配置文件,区分dev和prd环境: - `services/access_server/config/config.dev.yaml` / `config.prd.yaml` - `services/core_server/config/config.dev.yaml` / `config.prd.yaml` - `services/formation_server/config/config.dev.yaml` / `config.prd.yaml` 可通过 `-env` 参数指定环境,或通过 `-config` 参数指定配置文件路径。 ## MQTT主题定义 所有MQTT主题定义在 `pkg/common/mqtt/topics.go` 中,主题前缀为 `ship-simulation/`。 ## 代码规范 - 遵循分层架构:Handler -> Service -> Repository - 公共数据结构放在 `pkg/common/model/` 下 - 私有数据结构放在各服务 `internal/model/` 下 - 错误响应使用统一的 `response` 包格式 - 日志使用统一的 `logger` 包 - **禁止在服务模块中直接修改 pkg 公共代码**