ea15ef332c
重构: video 模块走芋道网关统一鉴权,移除独立 WVP JWT 客户端
...
- api/video/request.ts: 删除自实现的 WVP access-token 登录/缓存/401 续期逻辑,
直接 re-export requestClient(yudao Authorization: Bearer),
wvpRequestClient 名字仅作过渡期别名,TODO 标记后续统一重命名。
- api/video/device/index.ts: 路径从 /video/device/{proxy,user,server,...} 迁移到
后端 @RequestMapping 对齐的 /video/{proxy,ai/*,server/media_server};
删除 getAlertImageUrl(老 WVP 时代产物),删除截图 URL 里的 ?access-token。
- api/video/edge/index.ts: /video/device/device/* -> /video/ai/device/*(对齐 AiEdgeDeviceController)。
- views/video/device/camera: HEAD 探活 URL 同步,补注释说明后端需对
/video/ai/roi/snap/image permitAll 或依赖 session cookie。
- vite.config: 删除 /admin-api/video/device/* 按子路径 rewrite 到 WVP:18080 的规则,
统一走 /admin-api 到芋道网关 48080;去掉 VITE_WVP_USERNAME/PASSWORD_MD5 依赖
(安全改进:凭据不再打进客户端 bundle)。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 19:33:37 +08:00
0aa4a2f68e
新增: 多项目切换 + 业务平台 SSO 单点跳转
...
核心功能:
1. 多项目切换:header 新增 ProjectDropdown,切项目时自动刷新权限菜单
2. 业务平台 SSO:header 新增「业务平台」按钮,OAuth2 授权码流程无感跳转
3. SSO 回调:/sso-callback 页面接收业务平台跳回的 code,换 IoT token 登录
共享包改动:
- packages/stores:access store 新增 projectId 字段并加入持久化
- packages/effects/layouts:新增 ProjectDropdown 共享组件
apps/web-antd 改动:
- api/request.ts:
· project-id 请求头仅在非 null 时设置(避免 axios 把 null 序列化为字符串 "null")
· X-Client-Id 改读 VITE_APP_CLIENT_ID,允许多个壳应用各自声明
- api/core/sso.ts:ssoCallback 参数走 body,避免 code 出现在浏览器历史/nginx 日志
- api/system/project:新增项目 simple-list API
- constants/sso.ts:集中 IOT_CLIENT_ID/BIZ_CLIENT_ID 等常量;
generateOauthState 用 crypto.randomUUID 生成 state,替代不安全的 Math.random
- store/auth.ts:抽 completeLogin 公共收尾逻辑,新增 ssoLogin 复用
- views/_core/authentication/sso-callback.vue:SSO 回调页;
dev 模式保留时延日志,失败时通过 query 透给登录页
- router/routes/core.ts:/sso-callback 路由 + beforeEnter 守卫
(缺 code 直接拦回登录页,避免死循环)
- layouts/basic.vue:
· 以 ProjectDropdown 替换 TenantDropdown(列表拉取失败兜底隐藏)
· 切项目时调用 fetchUserInfo,避免菜单/权限陈旧
· 新增「业务平台」跳转按钮;state 写 sessionStorage,
生产缺 VITE_BIZ_BASE_URL 时显式报错而非静默回 localhost
· setInterval 在 onUnmounted 中清理
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 00:08:33 +08:00
5cd86e6cf1
重构: aiot 模块重命名为 video,WVP 凭据移至环境变量
...
路径重命名:
- api/aiot/{alarm,device,edge,request} → api/video/{alarm,device,edge,request}
- views/aiot/{alarm,device,edge} → views/video/{alarm,device,edge}
- vite.config.mts 代理路径 /admin-api/aiot/* → /admin-api/video/*
video/request.ts 改造:
- WVP 用户名/密码 MD5 改读 import.meta.env,不再写死在源码里
- force 截图失败时补一条 console.debug,便于回溯 COS 图片加载异常
video/alarm/index.ts 顺带清理:
- 移除无调用方的重复 API getRecentAlerts(与 getAlertPage 重叠)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-22 23:57:44 +08:00
e49a1db57e
同步:iot 模块同步至 yudao/master 最新
...
- 新增 Modbus 支持:config/point API + 3 个表单/列表组件
- apps/web-antd/src/api/iot/device/modbus/{config,point}/index.ts
- apps/web-antd/src/views/iot/device/device/detail/modules/modbus-*.vue
- 设备详情页与子设备列表按 upstream 更新对齐
- 产品/数据类型、物模型常量更新
- packages/constants/dict-enum: 新增 IOT_MODBUS_MODE / IOT_MODBUS_FRAME_FORMAT,
IOT_CODEC_TYPE 重命名为 IOT_SERIALIZE_TYPE(本地无引用)
对比 yudao/master 范围:
git diff 36aa19537..yudao/master -- 'apps/web-antd/src/{views,api}/iot'
类型检查:对 iot 模块净引入 4/净修复 4,均为 upstream 本身的历史问题。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 10:02:02 +08:00
e0983a693a
改造: 全局参数配置页面支持按设备查看和修改 ROI 绑定参数
2026-04-10 12:51:49 +08:00
6eea4e81cd
新增: 算法全局参数配置页面 + ROI 编辑器显示全局默认提示
2026-04-09 17:09:58 +08:00
5182e81429
Revert "功能:摄像头页面增加区域选择器"
...
This reverts commit 84ec762d09 .
2026-03-23 17:02:30 +08:00
84ec762d09
功能:摄像头页面增加区域选择器
...
1. 编辑弹窗新增「所属区域」下拉框,支持搜索,数据来自 IoT 平台
2. 表格新增「区域」列显示已绑定的区域名称
3. API 新增 getAreaList 函数查询 vsp-service 区域列表接口
4. Vite 代理新增 /api/area → vsp-service:8000
5. Camera 类型新增 areaId 字段
2026-03-23 16:49:27 +08:00
6dca2a68c0
功能:摄像头管理页面增加边缘设备绑定选择
...
- 表格新增「边缘设备」列
- 编辑弹窗新增边缘设备下拉选择(edge/edge_002)
- 新建摄像头默认绑定 edge
2026-03-22 01:08:03 +08:00
8bce09a17a
功能:摄像头配置页面适配 cameraName
...
- 表格列:app+stream 改为摄像头名称
- 编辑弹窗:去掉应用名+流ID,改为摄像头名称(必填)
- app/stream 由后端自动处理,前端不再暴露
- Camera 类型新增 cameraName 字段
2026-03-19 11:42:17 +08:00
617cdc8c15
功能:告警列表摄像头搜索改为下拉选择+输入搜索
...
- 新增 getCameraOptions API(从 WVP 获取摄像头列表)
- 搜索框改为 ApiSelect 组件,支持下拉选择和输入前缀匹配
- 选中后用 cameraCode 查询后端
2026-03-19 11:36:56 +08:00
4c287ca690
性能:看板改为单次请求加载,从5个并发请求优化为1个
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 17:31:21 +08:00
d2a77079af
功能:告警数据看板替换原告警汇总页
...
- 5 个 KPI 卡片(今日告警/待处理/已处理/平均响应/在线设备)
- 告警趋势面积图(7天/30天切换,按类型堆叠)
- 告警类型分布环形图(中心显示总数)
- 设备告警 Top10 横向条形图
- 告警级别分布柱状图
- 24小时时段分布图(高亮高峰时段)
- 最近告警滚动列表
- 60秒自动刷新
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 17:11:02 +08:00
694c5c7af1
功能:边缘节点页面重写为卡片列表
...
- VxeGrid 表格改为 Card 卡片布局
- 新增 getDeviceList() 调用 WVP list 接口
- 每张卡片展示:设备ID、状态Tag、最后心跳、运行时长、摄像头数、配置版本
- data.ts 精简为状态配置和 formatUptime 工具函数
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-17 17:47:31 +08:00
fae585f5e9
功能:摄像头状态指示器 + 截图缓存优化 + 截图预热
...
1. 摄像头列表状态指示器(绿/红点)
- 新增状态列显示摄像头截图可用性
- 绿色=截图正常,红色=截图失败,灰色=加载中
- 使用 /snap/image 代理端点检测状态
2. 截图缓存优化(getSnapUrl 重写)
- 非强制模式:返回稳定URL(无时间戳),浏览器缓存5分钟
- 强制模式:先触发边缘截图,再返回带时间戳URL破缓存
- 使用 /snap/image 代理端点,避免COS预签名URL过期问题
3. 截图预热(新增摄像头时)
- 添加摄像头成功后自动触发首次截图
- 预热失败不影响主流程(非阻塞)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 16:02:41 +08:00
284f2b8d87
fix(aiot): 回退告警 API 到 Service 后端,修复截图 URL 端点
...
告警问题:
- 告警数据存储在 FastAPI Service 的 alert_platform.db 中
- 之前错误地切换到 wvpRequestClient(WVP 后端的 wvp_ai_alert 表)
- 回退到 requestClient + /aiot/alarm/alert/* 路径恢复数据
截图问题:
- /snap/image 代理端点在 Redis+DB 都无缓存时返回 404
- 回退到 /snap 端点,利用其 Accept: image/* 自动 302 重定向逻辑
- 保留 force 参数支持手动刷新截图
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 11:05:03 +08:00
0d56b2f221
fix(aiot): 截图持久化适配 + 告警 API 切换到 WVP + 图片代理
...
截图 / ROI:
- getSnapUrl: 非 force 模式直接返回 /snap/image 代理 URL(从 DB 读持久化截图,
不触发 Edge),force 模式先请求 Edge 截图再返回代理 URL
- RoiCanvas: 添加 ResizeObserver 确保容器尺寸变化时重新初始化 canvas,
onImageError 兜底初始化 canvas(截图失败仍可绘制/查看 ROI),
snapUrl watcher 触发 canvas 重初始化
告警:
- alarm/index.ts: requestClient → wvpRequestClient,路径从
/aiot/alarm/alert/* 切换到 /aiot/device/alert/*(走 WVP 后端)
- Alert 类型新增 imagePath、receivedAt、extraData 字段
- alarm list: 缩略图和详情图片通过 WVP /alert/image 代理端点显示,
避免 COS presigned URL 过期问题
- device/index.ts: 新增 getAlertImageUrl() 构造告警图片代理 URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 09:21:48 +08:00
71fd2a8576
fix(aiot): 边缘设备API切换到WVP直调,ROI下拉框改为动态加载
...
- edge/index.ts: requestClient → wvpRequestClient,路径改为 /api/ai/device/*
- roi/index.vue: 移除硬编码 edge-001 选项,从 WVP 动态加载设备列表
- 新建 ROI 默认 deviceId 取设备列表第一项,兜底 edge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 16:49:08 +08:00
dcb8217a78
fix(aiot): 截图刷新添加force参数,绕过WVP 5分钟缓存
...
getSnapUrl新增force参数,refreshSnap时传force=true,
使WVP后端跳过Redis缓存重新向Edge请求截图。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 16:27:30 +08:00
3d34c3f57f
feat(aiot): 告警详情显示ROI名称
...
- Alert接口添加roiName字段
- 详情页显示'检测区域:{roiName}'
- 删除'(bbox)'英文提示
- 移除bbox坐标显示
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-14 22:49:31 +08:00
2583ed5335
feat(aiot): Camera接口增加cameraCode字段,getSnapUrl改用cameraCode
...
- Camera interface 增加 cameraCode?: string 字段
- getSnapUrl 函数参数从 (app, stream) 改为 (cameraCode)
- 截图URL查询参数从 app/stream 改为 cameraCode
- 配合后端 camera_code 重构计划
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:24:31 +08:00
a2284d8991
feat(aiot): 告警列表-持续时长格式化 + 创建时间改为结束时间
...
API类型定义:
- Alert接口新增durationMs、lastFrameTime字段
列表展示优化:
- 持续时长列改为读取durationMs,自适应格式化(秒/分/时)
- "创建时间"列替换为"结束时间"列,显示lastFrameTime或handledAt
- 详情弹窗持续时长同步使用formatDuration格式化
2026-02-11 17:56:17 +08:00
e54fcf1f8c
feat(aiot): 告警截图展示 + 全局配置同步 + API兼容修复
...
- 告警列表新增截图缩略图列,支持预览大图
- 告警详情显示截图 URL 链接
- 摄像头管理页新增「同步全局配置」按钮
- 告警 API 路径修正: camera-summary → device-summary
- 告警 ID 兼容 alarmId 字符串格式
- Vite 代理新增 /uploads、/captures、/aiot/storage 路由
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 09:57:29 +08:00
777e52986e
fix(aiot): 修复摄像头保存失败 + 标题改为摄像头管理系统
...
- saveCamera 拆分为 addCamera/updateCamera 匹配WVP实际接口
- .env 标题改为"摄像头管理系统"
- 告警列表字段适配新三表结构
- preferences 配置调整
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-10 15:22:31 +08:00
4b54a50d8c
fix(aiot): 删除实时视频模块
...
删除 views/aiot/video 和 api/aiot/video 目录,
撤回 auth.ts 中的菜单过滤逻辑。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 11:40:56 +08:00
eb11e7ed1f
refactor(aiot-device): 规范整理设备 API 层和类型定义
...
- 按功能分区:摄像头管理、ROI 区域、算法管理、算法绑定、配置推送
- Camera 接口扩展完整字段(streamKey、createTime 等)
- 新增 PageResult、MediaServer 类型定义
- getSnapUrl 改为 async,通过 query param 传递 access-token 支持认证截图
- 所有 API 函数添加精确的泛型返回类型
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 10:25:03 +08:00
184bb863b0
fix(aiot): 修复 WVP 认证机制,实现自动登录和 token 管理
...
- WVP 使用独立 JWT 认证(access-token 头),与芋道 Authorization Bearer 不同
- 实现 WVP 自动登录:首次请求时自动调用 /api/user/login 获取 token
- 缓存 token 防止重复登录,401 时自动续期
- 响应拦截器自动解包 WVP {code:0, data:...} 格式
- Vite 代理新增 /aiot/device/user 和 /aiot/device/server 路由规则
- 移除已废弃的 aiot/video 代理规则
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 10:24:47 +08:00
f7bfde0135
feat(aiot-device): 摄像头管理增加增删改功能
...
- Camera 接口扩展完整字段(type、timeout、rtspType、enable 等)
- 新增 saveCamera、deleteCamera、getMediaServerList API
- 摄像头管理页面增加添加/编辑弹窗(表单含代理类型、拉流地址、RTSP方式等)
- 增加删除确认对话框
- Vite 代理增加媒体服务器 API 转发规则
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 09:51:37 +08:00
fc56ea0f75
feat(aiot-device): 完善设备模块 API 层,对接 WVP 实际接口
...
从 WVP 项目迁移全部设备管理 API:
- 摄像头管理:列表查询、开始/停止拉流
- ROI 区域:增删改查、按摄像头查询、截图
- 算法绑定:绑定/解绑/更新参数
- 配置推送:推送到边缘端、导出配置
- 移除未使用的 PageParam 导入
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 23:24:12 +08:00
159a82aaa9
feat(aiot): 搭建 aiot 前端模块路由和 API 层
...
- 新增 router/routes/modules/aiot.ts:6 个页面路由
告警列表、摄像头汇总、摄像头管理、ROI配置、实时视频、边缘节点
- 新增 api/aiot/alarm/:告警 API(分页、详情、处理、删除、统计、汇总)
- 新增 api/aiot/edge/:边缘设备 API(分页、详情、统计)
- 新增 api/aiot/device/:摄像头和 ROI API(调用 WVP 后端)
- 新增 api/aiot/video/:视频播放 API(playStart/playStop)
- 新增 api/aiot/request.ts:WVP 专用请求客户端(跳过芋道响应拦截器)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 16:40:26 +08:00
YunaiV
1ce562601f
feat(iot):【网关设备:80%】动态注册的初步实现(已测试)
2026-01-25 18:50:26 +08:00
YunaiV
50216e5047
feat(iot):【设备定位】添加设备位置功能,支持地图展示和坐标选择
2026-01-21 21:10:09 +08:00
haohao
8bf286fda0
refactor:【antd】【iot】将 DeviceSaveReqVO 和 DeviceRespVO 合并到 Device,简化设备 API 接口
2026-01-16 17:38:02 +08:00
YunaiV
17d5d1b889
review:【antd】【iot】设备管理相关
2026-01-05 20:45:39 +08:00
haohao
de28c5c4c2
refactor:【antd】【iot】设备管理跟后端对齐,必要的 ReqVO、RespVO,子设备管理实现
2026-01-04 12:25:25 +08:00
YunaiV
5a5d2f17da
feat:【bpm】【antd/ele】业务表单,支持重新发起流程
2025-12-27 12:49:14 +08:00
YunaiV
7ab917dc48
fix:【system】邮箱移除无用的 remark 字段及相关表单项
2025-12-20 20:48:24 +08:00
haohao
5cb412a4da
refactor:【antd】【iot】更新首页必要的 ReqVO、RespVO
2025-12-15 21:51:09 +08:00
haohao
2b270caf30
refactor:【antd】【iot】将物联网设备和产品枚举整合为常量,优化设备导入功能,简化设备管理UI组件
2025-12-06 17:54:46 +08:00
haohao
62b12235f7
refactor:【antd】【iot】产品管理问题修复
2025-12-02 17:54:18 +08:00
YunaiV
a2e6e5097d
review:【antd】【mall】营销活动的商品选择
2025-12-01 19:20:28 +08:00
puhui999
a5b51f45da
feat:【antd】【mall】商城活动优化
2025-12-01 18:37:05 +08:00
YunaiV
7aab11b984
feat:【system】支付宝小程序登录补充
2025-11-29 16:06:23 +08:00
YunaiV
09300af7bc
feat:【infra】文件配置,增加 region 区域
2025-11-29 15:59:55 +08:00
dylanmay
6c5a65a6bd
Merge branch 'dev' of https://gitee.com/yudaocode/yudao-ui-admin-vben into dev
2025-11-27 12:17:53 +08:00
dylanmay
5374e64bcb
fix: resolve todo
2025-11-27 09:55:24 +08:00
YunaiV
672a6c9ccc
feat:【antd】【mp】模版消息的新增
2025-11-26 19:05:08 +08:00
puhui999
0ae62ef7e7
feat:【antd】【mall】spu 优化
2025-11-24 12:00:50 +08:00
YunaiV
5622b810e4
feat:【antd/ele】【mp】图文草稿箱的 review
2025-11-23 20:52:13 +08:00
YunaiV
80b4a16dc4
review:【antd】【iot】数据流转
2025-11-21 11:35:39 +08:00