42d12d905a
mirror-to-gitee / mirror (push) Successful in 5s
版本号与功能一一对应:小程序线功能停在 v1.0.2,镜像 tag 也停在 v1.0.2, 平台后续发 v1.0.5 时它不动。 - deploy/docker-compose.yml:app-server / app-web 两行回退 v1.0.2 - Makefile:IMAGE_MAP 增加第 5 列「固定版本」,app 两行填 v1.0.2, 本地构建与 CI 行为一致 - 根 README:新增「小程序线是独立版本线」说明 - app/README.md:标注本目录对应 v1.0.2,不跟随平台 tag - 文档:deploy/README 版本表、build-image 的 tag 表与说明、 offline / prerequisites / configuration 示例 tag 全部回退 v1.0.2 CI 侧由 Jenkins 流水线的 PIN 表(app|v1.0.2)保证:tag 构建自动跳过 app, 需要重建时单独触发 SERVICES=app VERSION=v1.0.2。
99 lines
4.4 KiB
Markdown
99 lines
4.4 KiB
Markdown
# iotLCM —— 物联网卡全生命周期管理平台(开源版)
|
||
|
||
一站式物联网 SIM 卡管理平台:卡片从运营商渠道入库 → 划拨给代理商 → 激活 / 续费 / 停机 → 流量与状态同步 → 销户。对接中国移动 OneLink、中国电信 5G CMP、中国联通 10646 等运营商接口,并通过共享 Token 模式接入多家三方渠道商。
|
||
|
||
**单仓多服务**:平台全部后端服务、前端应用、文档站与部署编排都在本仓,一次 clone 即可获得完整源码。
|
||
|
||
## 目录
|
||
|
||
| 目录 | 说明 | 镜像 |
|
||
| --- | --- | --- |
|
||
| `admin-svr/` | 管理端后端(GoFrame):卡信息、通信管理、资费、告警工单、统计、账号治理 | `iotlcm-admin-svr` |
|
||
| `admin-ui/` | 管理端前端(Vue 3 + Vben Admin) | `iotlcm-admin-ui` |
|
||
| `openapi/` | 对外 API 网关:V3 接口、旧版兼容、运营商能力代理 | `iotlcm-openapi` |
|
||
| `worker-svr/` | 异步执行:RabbitMQ 消费者、全量同步、批量任务 | `iotlcm-worker-svr` |
|
||
| `upstream-chan/` | 运营商 / 三方渠道对接层(OneLink、CMP、10646、共享 Token) | `iotlcm-upstream-chan` |
|
||
| `upstream-proxy/` | 通道缓存转发层(挡在 chan 前面的本地缓存) | `iotlcm-upstream-proxy` |
|
||
| `app/server/` | 用户端服务(GoFrame) | `iotlcm-app-server` |
|
||
| `app/app/` | 用户端前端(uni-app,基于 unibest,MIT) | `iotlcm-app-web` |
|
||
| `sms/` | 短信 HTTP / gRPC 服务(阿里云、腾讯云) | `iotlcm-sms` |
|
||
| `bot/` | 飞书通知机器人(运维自用,可选) | `iotlcm-bot` |
|
||
| `docs/` | 文档站(VitePress):使用手册 + OpenAPI 合同 + 部署手册 | `iotlcm-docs` |
|
||
| `onelink-mock/` | OneLink 接口挡板(联调 / 演示,可选) | `iotlcm-onelink-mock` |
|
||
| `deploy/` | Docker Compose 编排与数据库初始化 | 参考 `deploy/README.md` |
|
||
|
||
每个子目录都有自己的 `README.md`,说明该服务的职责、配置项与本地运行方式。
|
||
|
||
## 快速开始(只跑起来)
|
||
|
||
不需要编译,直接用预构建镜像拉起整栈:
|
||
|
||
```bash
|
||
git clone <本仓库地址> iotlcm
|
||
cd iotlcm/deploy
|
||
docker compose up -d
|
||
```
|
||
|
||
首次启动自动完成 MySQL 建库建表(95 张)、种子数据导入、时序库建表,实测 30 秒 ~ 1 分钟。
|
||
|
||
默认账号 `admin`,口令见 `deploy/README.md`(**正式使用前必须修改**)。详细的端口、配置项、可选服务(挡板 / 飞书通知 / 反向代理)、离线部署与排错,见 `deploy/README.md` 与文档站 `docs/deploy/`。
|
||
|
||
> 对外端口默认只监听 `127.0.0.1`,需要局域网或公网访问时,用 `deploy/` 里的 nginx 编排改绑定地址,或并入宿主机已有的反向代理。
|
||
|
||
## 从源码构建
|
||
|
||
每个 Go 服务是独立模块(各自带 `go.mod`),在对应目录内构建:
|
||
|
||
```bash
|
||
cd worker-svr && go build -o out/ . # 其它 Go 服务同理
|
||
```
|
||
|
||
前端:
|
||
|
||
```bash
|
||
cd admin-ui/vue && pnpm install && pnpm build
|
||
cd app/app && pnpm install && pnpm build
|
||
cd docs && npm ci && npm run build
|
||
```
|
||
|
||
或一键编译检查全部 Go 模块:
|
||
|
||
```bash
|
||
make build # 所有 Go 服务编译
|
||
make images # 本地构建全部镜像
|
||
```
|
||
|
||
构建镜像所需的 Dockerfile 位置与构建上下文,见 `docs/docs/deploy/build-image.md`。
|
||
|
||
## 发布与镜像
|
||
|
||
所有镜像发布到**同一个镜像仓库**,用 tag 区分服务与版本:
|
||
|
||
```text
|
||
<镜像仓库>/iotlcm/iotlcm:iotlcm-worker-svr-v1.0.4
|
||
└─ 仓库 ┘ └─ 服务名 ─┘└版本┘
|
||
```
|
||
|
||
打 `v*` tag 会经由内网 CI 构建镜像并推送,见 `.gitea/workflows/`。
|
||
|
||
**小程序线(`app/`)是独立版本线**,不跟随平台 tag:
|
||
|
||
| 服务 | 当前版本 | 说明 |
|
||
| --- | --- | --- |
|
||
| 其余业务服务 | `v1.0.4` | 跟随平台 tag |
|
||
| `iotlcm-app-server` / `iotlcm-app-web` | **`v1.0.2`** | 直连版本号与功能一一对应,功能未变就不动版本 |
|
||
|
||
CI 里用一张 `PIN` 表维护这条规则(`app|v1.0.2`):平台发新 tag 时自动跳过 app,需要重建小程序线时单独触发
|
||
`SERVICES=app VERSION=v1.0.2`。
|
||
|
||
## 许可
|
||
|
||
本仓整体采用 [Apache License 2.0](LICENSE)。
|
||
|
||
以下子目录基于上游 MIT 项目衍生,保留其原始许可:
|
||
|
||
| 目录 | 上游 | 许可 |
|
||
| --- | --- | --- |
|
||
| `admin-ui/` | [Vben Admin](https://github.com/vbenjs/vue-vben-admin) | MIT,见 `admin-ui/LICENSE` |
|
||
| `app/app/` | [unibest](https://github.com/unibest-tech/unibest) | MIT,见 `app/app/LICENSE` |
|