diff --git a/data/projects.ts b/data/projects.ts index 591d52d..5727249 100644 --- a/data/projects.ts +++ b/data/projects.ts @@ -52,6 +52,7 @@ export const projects: Project[] = [ { text: '快速开始', link: '/projects/iotlcm/guide/quickstart' }, { text: '部署与运维', link: '/projects/iotlcm/guide/deploy' }, { text: '教程视频', link: '/projects/iotlcm/guide/tutorial' }, + { text: '方案对比', link: '/projects/iotlcm/compare' }, ], }, { diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index cc6dc52..98e54eb 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -3,24 +3,32 @@ # docker compose -f deploy/docker-compose.yml up -d --build # # 形态切换(站点资源前缀): -# SITE_BASE=/www/ 子路径形态,挂在已有网关的 /www/ 路径下(默认) -# SITE_BASE=/ 独立域名形态,站点独占域名根路径 +# SITE_BASE=/ 独立端口形态,站点独占根路径(默认,推荐用于过渡) +# SITE_BASE=/www/ 子路径形态,挂在已有网关的 /www/ 路径下 # +# 独立端口形态(过渡,等域名): +# PORTAL_BIND_ADDR=0.0.0.0 docker compose -f deploy/docker-compose.yml up -d --build +# → http://<主机>:8020/ +# +# 独立域名形态: # SITE_BASE=/ docker compose -f deploy/docker-compose.yml up -d --build +# → 由域名 vhost 指向本容器 services: portal: build: context: .. dockerfile: Dockerfile args: - SITE_BASE: '${SITE_BASE:-/www/}' + SITE_BASE: '${SITE_BASE:-/}' image: snowgoat-open-portal:local container_name: snowgoat-open-portal restart: unless-stopped ports: - - "127.0.0.1:${PORTAL_PORT:-8020}:80" + # 默认只绑本机回环;要让路由器 NAT 转发进来,必须显式改成 0.0.0.0 + # 或本机内网地址(例:PORTAL_BIND_ADDR=0.0.0.0)。 + - "${PORTAL_BIND_ADDR:-127.0.0.1}:${PORTAL_PORT:-8020}:80" healthcheck: - test: ["CMD", "wget", "--quiet", "--output-document=/dev/null", "http://127.0.0.1${SITE_BASE:-/www/}"] + test: ["CMD", "wget", "--quiet", "--output-document=/dev/null", "http://127.0.0.1${SITE_BASE:-/}"] interval: 30s timeout: 5s retries: 3 diff --git a/pages/about.md b/pages/about.md index 9141760..3cde6c7 100644 --- a/pages/about.md +++ b/pages/about.md @@ -18,6 +18,27 @@ outline: deep 2. 提交前确保各自的构建与测试通过(Go 服务跑 `go build ./...` 与 `go test ./...`,前端跑 `pnpm build`) 3. 提交合入请求并说明变更动机 +## 各项目仓库 + +| 项目 | 仓库 | +| --- | --- | +| iotLCM | | +| 秀杰 DTU 管理平台 | | +| XiuAdmin | | +| 本门户站 | | + +## 提问与反馈 + +- 使用问题与缺陷:对应仓库开 issue +- 功能建议:issue 里描述清楚场景与期望 +- 部署排错:先看各项目详情页的常见问题表,再开 issue 附上 `docker compose ps` 与相关日志 + +## 运维自用组件的边界 + +飞书通知机器人(`with-bot` profile)是给运维方自用的工具,需要自建应用的凭据才能启动,**不是平台功能**,未配置时不影响平台运行。 + +运营商通道的生产凭据不随仓发布,需自行向运营商申请。 + ## 门户本身 门户是一个独立的 VitePress 工程,与平台代码不在同一个仓库。构建产物是纯静态站点,可用任意静态服务器或容器托管。 diff --git a/pages/projects/iotlcm/compare.md b/pages/projects/iotlcm/compare.md new file mode 100644 index 0000000..0df06c7 --- /dev/null +++ b/pages/projects/iotlcm/compare.md @@ -0,0 +1,55 @@ +--- +title: 方案对比 +description: iotLCM 与同类开源方案的能力对比(待产品侧素材补齐) +outline: deep +--- + +# 方案对比 + +::: warning 本页待补 +本页需要「与同行的对比」素材,而该素材依赖产品侧梳理各家官网后给出的结论 +(周会任务 261102-002 的前置依赖)。骨架已就位,等对比结论到位后填表即可, +框架与其它页面一致,不需要再改代码。 + +对比口径建议按「能不能装起来 / 能不能接运营商 / 能不能管住卡 / 二次开发成本」四条线走, +每条线只写能公开验证的事实(官网文档、许可证、仓库结构),不写主观评价。 +::: + +## 对比维度(待填) + +| 维度 | 说明 | 可验证依据 | +| --- | --- | --- | +| 部署门槛 | 是否单机一条命令起、依赖多少中间件 | 官方部署文档 | +| 运营商接入 | 支持哪些运营商协议、是否需要逐家申请凭据 | 官方接口文档 | +| 卡生命周期 | 入库、划拨、激活、续费、停机、销户覆盖到哪一步 | 官方功能手册 | +| 流量与用量 | 实时用量、月累计、达量断网 | 官方功能手册 | +| 对外接口 | OpenAPI 版本、鉴权方式、兼容策略 | 官方接口合同 | +| 账号与权限 | 多租户、角色、API 凭证 | 官方功能手册 | +| 许可证 | 商用与再分发限制 | 仓库 LICENSE | +| 二次开发 | 技术栈、语言、代码规模、模块边界 | 仓库结构 | +| 文档与教程 | 有无完整手册、部署文档、录屏教程 | 官网与仓库 | + +## 本方案的已知事实 + +写这张表时,下面这些是本方案自身已经确定、可直接引用的: + +- 单仓多服务,一次 clone 拿到全部后端服务、前端应用、文档站与部署编排 +- 一条命令部署:`cd deploy && docker compose up -d`,实测约 30 秒 ~ 1 分钟完成初始化 +- 运营商协议内置:中国移动 OneLink、中国电信 5G CMP、中国联通 10646,另有共享 Token 接入多家三方渠道商 +- 卡生命周期覆盖入库 → 划拨 → 激活/续费/停机 → 流量与状态同步 → 销户 +- 对外接口:OpenAPI V3 + 旧版兼容接口 + 运营商能力代理 +- 双端界面:Web 管理平台与小程序端(H5) +- 许可证:Apache-2.0 +- 文档站随仓发布,含使用手册、OpenAPI 合同与部署手册 + +## 与门户内其它项目的关系 + +门户内三个项目的定位不同,不构成竞品关系: + +| 项目 | 定位 | 与其它项目的关系 | +| --- | --- | --- | +| iotLCM | 物联网卡全生命周期管理平台 | 业务系统,可自行部署到客户环境 | +| 秀杰 DTU 管理平台 | DTU 设备全生命周期管理平台 | 业务系统,技术栈与 iotLCM 一致,后台可基于同类底座 | +| XiuAdmin | 中后台开发框架 | 开发底座,新项目可用它搭后台 | + +三个项目均为 Apache-2.0,可自由组合使用。 diff --git a/pages/projects/iotlcm/index.md b/pages/projects/iotlcm/index.md index 1a68ba0..41b96e1 100644 --- a/pages/projects/iotlcm/index.md +++ b/pages/projects/iotlcm/index.md @@ -20,6 +20,8 @@ outline: deep ## 能力概览 +按业务域拆开的能力矩阵: + | 域 | 能力 | | --- | --- | | 卡资产 | 卡信息、批量导入、入库 / 库存 / 出库、批量开停复机、续费、变更套餐、达量断网 | @@ -27,10 +29,22 @@ outline: deep | 资费 | 套餐与流量池、定价、生效与到期策略 | | 代理商 | 代理商与分佣、划拨与回收 | | 数据同步 | 流量 / 状态 / IMEI 全量同步与增量对齐、历史账期时序数据 | -| OpenAPI | V3 接口、旧版兼容接口、运营商能力代理(白名单转发 / 共享 Token) | +| 对外接口 | V3 接口、旧版兼容接口、运营商能力代理(白名单转发 / 共享 Token) | | 运营 | 工单、预警、执行日志、审计、智能诊断 | | 端 | Web 管理端、小程序 / H5 用户端 | +细分能力: + +| 模块 | 说明 | +| --- | --- | +| 卡与库存 | 卡信息检索、按三码查卡、批量导入出入库、库存与出库、批量开停复机 | +| 智能诊断 | 结合卡状态、通道与用量给出诊断结论与处置建议 | +| 资费与计费 | 套餐与定价管理、用量与流量查询、达量断网阈值 | +| 业务受理 | 开通、续费、停复机、变更套餐 | +| 通道与上游 | 上游通道配置与凭据、协议适配、共享 Token、缓存转发 | +| 组织与账号 | 多租户下的企业与账号治理、角色权限、对外 API 凭证 | +| 运维支撑 | 全量同步、批次执行、工单与告警、执行日志、飞书通知、指标与日志 | + ## 服务构成 单仓多服务:全部后端服务、前端应用、文档站与部署编排都在同一个仓库里。 @@ -56,3 +70,7 @@ outline: deep - [快速开始](/projects/iotlcm/guide/quickstart) — 三步把整套跑起来 - [部署与运维](/projects/iotlcm/guide/deploy) — 生产部署前的必改项、可选组件、离线部署与排错 - [教程视频](/projects/iotlcm/guide/tutorial) — 部署与使用的录屏教程 + +## 边界 + +开源版发布的是微服务家族,不含老平台的私有定制模块。运营商通道的生产凭据不随仓发布,需自行申请与配置。 diff --git a/public/favicon.svg b/pages/public/favicon.svg similarity index 100% rename from public/favicon.svg rename to pages/public/favicon.svg