项目结构
单仓多端 + 文档站:Go 后端、微信小程序、Web 控制台、IoT 设备侧 SDK,共享一套设计 token(品牌色 #2B5FF6)。各目录的内部文件清单以代码为准,本页只到「目录 = 职责」粒度。
ocm/
├─ backend/ Go 后端(module ocm-backend;internal/ 按领域分包,职责见各包 doc comment)
├─ miniapp/ 微信小程序(glass-easel + TDesign;页面清单以 app.json 为准)
├─ web/ Web 控制台(React 19 + Vite + Carbon,TypeScript strict)
├─ iot/ 设备侧 SDK(module ocm-iot:mqttc 连接层、sim 模拟器、spec 契约)——后端刻意不 import 它
├─ docs/ Docusaurus 文档站(docs-only,根 / → 快速开始)
├─ deploy/ 部署配置(mosquitto、observability),配 overlay 使用
├─ agents/ AI 编程工具共享参考(实战教训、选型调查;唯一入库的 AI 目录,见 agents/README.md)
├─ docker-compose.yml 开发栈(mysql + backend air + web vite)
├─ docker-compose.prod.yml 生产栈(fail-fast 密钥,后端不发布宿主机端口)
├─ docker-compose.iot.yml IoT overlay(+mosquitto,见[物联网](/guide/iot))
├─ docker-compose.observability.yml 可观测性 overlay(+监控栈,见[可观测性](/guide/observability))
├─ .env.example 环境变量模板
└─ AGENTS.md 工程约定(改代码前必读)
backend/ — Go 后端
net/http ServeMux(Go 1.22+ 方法路由),无第三方 web 框架。无独立迁移工具——各 store Migrate(ctx) 幂等(CREATE TABLE IF NOT EXISTS);开发阶段改表结构直接删库重建。架构与约定详见 后端 与 AGENTS.md。
miniapp/ — 微信小程序
TypeScript + glass-easel + TDesign,默认 WebView 渲染,navigationStyle: custom。详见 小程序。
web/ — Web 控制台
React 19 + Vite + IBM Carbon,TypeScript strict 全量,API 类型走生成的 src/types/api.d.ts(由 OpenAPI 生成)。下游定制经 src/config/*.override.tsx 文件注入缝,见 AGENTS.md 定制层一节。详见 Web 端。
iot/ — 设备侧(第二个 Go module)
设备/网关侧的 MQTT SDK 与模拟器,与 backend 的契约一致性靠 iot/spec/spec.md + 集成测试保证。详见物联网。
docs/ — 文档站
Docusaurus 3(docs-only 模式,routeBasePath: '/',根 / 由快速开始承载)。源在 docs/docs/,侧边栏 docs/sidebars.ts。
共享设计 token
品牌色 #2B5FF6 跨端一致:小程序 app.wxss 的 --color-primary / --td-brand-color;Web Carbon 主题 g10;文档站 docs/src/css/custom.css。