33 lines
2.2 KiB
Markdown
33 lines
2.2 KiB
Markdown
|
|
# 赵府 Vue 前端
|
||
|
|
|
||
|
|
Vue 3 + Vite + Bootstrap 5。Python 服务提供 API 和本地静态资源;生产主机无需安装 Node。
|
||
|
|
|
||
|
|
## 构建
|
||
|
|
|
||
|
|
在仓库根目录运行:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
pnpm --dir frontend install --frozen-lockfile
|
||
|
|
pnpm --dir frontend build
|
||
|
|
```
|
||
|
|
|
||
|
|
提交 `frontend/` 源码、锁文件及 `web/ui/` 构建产物后发布。根路径 `/` 返回 `web/ui/index.html`,资源名含内容哈希。Bootstrap、Vue 和字体均无需外部 CDN。域控制器版本随 `compat/load.js` 发布号更新。
|
||
|
|
|
||
|
|
## 模块边界
|
||
|
|
|
||
|
|
- `App.vue`、`AppSidebar`、`AppHeader`:应用外壳与导航。
|
||
|
|
- `HomeExplorer`:账号独立的卡片布局、分页、排序及场所总拓扑。
|
||
|
|
- `DeviceCollection`、`NetworkMap`:同一设备目录的卡片和拓扑视图。
|
||
|
|
- `NetworkStatus`:授权设备的实时网络检查与后台入口,清理定时器并丢弃过期响应。
|
||
|
|
- `Workspace`、`RuntimeOverlays`:现有业务页面与表单模板。
|
||
|
|
- `composables/bridge.js`、`web/vue-bridge.js`:Vue 与现有业务控制器的状态边界。
|
||
|
|
- `compat/scripts.json`:旧业务控制器依赖顺序,按顺序加载。视频播放器、家谱、记事等复杂交互暂时保留原控制器;尚未全部迁为 Vue 状态管理。
|
||
|
|
|
||
|
|
Vue 管理家庭卡片、设备列表、网络拓扑的 DOM;旧控制器只发布数据,不再覆盖这些容器。表单及播放器的兼容容器由原控制器管理,Vue 不重建其内部节点,避免轮询时重建视频。`web/index.html` 已移除,模板以 Vue 组件为准。
|
||
|
|
|
||
|
|
## 网络状态
|
||
|
|
|
||
|
|
`GET /api/devices/network?source=device|camera|recorder&id=...` 只允许当前家庭管理员与超级管理员检查本归属下的已登记设备。端口探测与 Tailscale 节点状态分别显示,30 秒缓存、并发限制;用户输入不能指定任意检查目标。只连接 TCP 端口,不修改设备、不发送登录密码。
|
||
|
|
|
||
|
|
“服务可达”表示从服务器能连接常用端口,并不证明设备品牌或互联网出口正常。管理后台优先使用探测到的 HTTP/HTTPS 端口,未检测到时提供标有“待连通”的默认 HTTP 入口,方便在设备同一局域网的浏览器打开。Tailscale 路由状态来自本服务器看到的路由,不等于完整物理布线发现。
|