Pine
|
0dd63b1558
|
chore(tauri): 移除已弃用的 Rust 内嵌后端(消除 52 个编译警告)
- 删除 server/storage/models/events 四模块(axum :10801 后端,功能已全部由 Python 后端 :10085 承担)
- lib.rs:删除 mod 声明,Rust 侧仅保留窗口与生命周期
- Cargo.toml:移除 axum/tower-http/tower/tokio/uuid/chrono/dirs/futures/rust-embed 等 12 个依赖
- cargo check 0 警告,编译更快
|
2026-08-18 01:43:25 +08:00 |
|
Pine
|
4e8ae4024a
|
chore(dev): 清理 vite.config 无效代理配置
- 移除 /api /file /media /upload → :10801 代理(前端已走 API_BASE 直连 Python 后端 :10085)
- defineConfig 由 async 简化为同步
|
2026-08-18 01:41:40 +08:00 |
|
Pine
|
7a82a94057
|
chore: 更新 Cargo.lock(移除 zip 依赖)
|
2026-08-18 01:41:17 +08:00 |
|
Pine
|
fe66831052
|
chore(tauri): 移除 npc 内网穿透客户端逻辑
- lib.rs:删除 setup_npc 后台线程启动与等待
- server.rs:删除 setup_npc 函数及 Cursor 导入
- Cargo.toml:移除 zip 依赖
- public/npc.zip:删除嵌入资源
|
2026-08-18 01:41:14 +08:00 |
|
Pine
|
2358d992c3
|
fix(tauri): macOS 开发模式跳过 npc 内网穿透客户端(Linux/Windows 二进制在 mac 无法执行)
|
2026-08-18 01:40:18 +08:00 |
|
Pine
|
a9a63986be
|
chore: 清理废弃资源
- 删除 public/voice-demo/(iframe 回退版,React 原生页面已取代)
- 删除 voice-embed.css(无引用)
- 删除 pages/Screen.jsx(被 ScreenLayout 取代,无引用)
- 清理各处 .DS_Store
|
2026-08-18 01:40:18 +08:00 |
|
Pine
|
b9eaef30f2
|
chore(dev): vite 监视优化与依赖清理
- vite.config:server.watch.ignored 忽略 src-tauri/backend venv/vendor(避免 ultralytics/matplotlib html 误触发整页 reload)
- 移除已弃用的 @mediapipe/tasks-vision(由后端 YOLO 替代)
|
2026-08-18 01:38:05 +08:00 |
|
Pine
|
f22f0905ca
|
feat(tauri): 摄像头/麦克风权限配置(macOS 授权一次 + Windows 兼容)
- Info.plist:NSCameraUsageDescription / NSMicrophoneUsageDescription(授权一次后不再询问)
- tauri.conf.json:macOSPrivateApi + WebView2 autoplay 允许(自动问候语音不被拦)+ nsis/app/dmg 双平台打包
- Cargo.toml:tauri 启用 macos-private-api feature
|
2026-08-18 01:38:01 +08:00 |
|
Pine
|
7f25c8f6bb
|
refactor(backend): 启动环境初始化与资源项目化(零跨项目依赖)
- main.py:uv run main.py 一键启动——读取 backend/.env、TORCH_HOME/NLTK_DATA 指向项目内缓存、certifi SSL + NO_PROXY 网络直连、默认开启 s2s,启动横幅
- vendor/:补丁后 s2s 云化栈移入项目(backend/vendor/s2s-cloud),pyproject sources 改相对路径
- .gitignore:忽略 .torch-cache / nltk_data 缓存
- AGENTS.md:进程管理铁律(AI 不启动/重启服务,由用户操作)
|
2026-08-18 01:37:57 +08:00 |
|
Pine
|
41e9681aa0
|
feat(vision): YOLO 人脸/姿态识别与手势控制(后端推理)
- vision_yolo:yolov8n-face 人脸检测 + yolov8n-pose 姿态估计(torch/ultralytics,懒加载常驻)
- 单帧几何特征:举手(腕高过肩)与举拳(前臂上举收胸前),返回 raised/fists
- POST /api/vision/frame:前端抽帧 JPEG → 推理 → {faces, pose, raised, fists, latency_ms},线程池执行
- POST /api/vision/event:状态上报,triggered 时经 MQTT 广播 alert
- 模型入库:backend/models/yolov8n-face.pt + yolov8n-pose.pt
- 前端 hook 改为网络版:抽帧→POST→状态机(面向10s问候/举手toggle对话),含亮度/耗时/链路诊断
|
2026-08-18 01:37:53 +08:00 |
|
Pine
|
9f64b4273b
|
feat(s2s): 后端嵌入实时语音栈(云 ASR/LLM/TTS + 本地 VAD)
- s2s_bridge:同进程构建 s2s 管线池(silero VAD + dashscope ASR + qwen-plus + qwen3-tts)并起 RealtimeServer(:8765)
- ThreadManager 启动管线 handler 线程;启动重试与完整配置日志
- config:DPM_S2S_* 系列配置(开关/端口/模型/重试/日志级别)
- main lifespan 按 DPM_S2S_ENABLED 启停;pyproject 增加 s2s 依赖(httpx/nltk/scipy/torch 等)
|
2026-08-18 01:37:48 +08:00 |
|
Pine
|
4e2224e9dc
|
feat(voice): 实时语音对话页(React 完全复刻原版 UI)
- /voice 页面:中间圆球 + 左右按钮 + 状态图标 + 右下角气泡(进场/淡出/阶梯字号/上限8)+ 噪声门弧线电平,结构类名与原版一致
- s2s WebSocket 客户端 + worklet 音频(mic-capture/audio-playback)+ orb 可视化
- 摄像头实时预览(默认开启)+ 视觉识别状态条(后端 YOLO 推理)
- 底部园区概览条(复用 ParkOverviewStrip),orb-wrap 视窗居中
- 页眉复用 ScreenLayout;左右键导航加入 /voice
- 文档:docs/voice-integration-plan.md
|
2026-08-18 01:37:44 +08:00 |
|
Pine
|
29bdad316f
|
feat: 播放控制移入页眉 + 媒体铺满智能裁切
页眉播放控制(仅媒体轮播页):
- 新增 MediaHeaderControls:播放/暂停、上一段/下一段、序号、当前文件名(点击进后台)、声音解锁
- 新增 mediaControl 共享状态桥:媒体页同步播放状态,页眉订阅渲染并下发指令
- 移除媒体页底部控制区,媒体区保持纯净全屏
媒体展示:
- .ms-media 改为 object-fit: cover,填满整个容器并智能居中裁切(原 contain 留黑边)
修复:
- MediaScreen useEffect 依赖数组引用后声明函数导致的 TDZ 崩溃
- 清理 MediaScreen 中不再使用的 Icon/cleanName/togglePlayPause
|
2026-08-17 22:45:46 +08:00 |
|
Pine
|
07dbd404a9
|
refactor: 弱化媒体播放控制区 + MQTT 客户端 ID 唯一化
播放控制区:
- 从底部中央移到右下角,整体缩小(播放键 42→30px、导航键 34→26px)
- 背景更透(0.8→0.55)、阴影更轻,视觉弱化不抢内容
- 播放名不再显示完整地址:URL 媒体只显示文件名(cleanName 清洗,去掉协议/路径/查询)
MQTT 客户端 ID:
- 后端 client_id 由固定 dpm-backend 改为 dpm-backend-{pid}-{随机},多实例不互踢
- 前端 client_id 增加时间戳 + 更高熵随机,避免多屏/多标签竞争
|
2026-08-17 22:16:22 +08:00 |
|
Pine
|
7bb0e9024a
|
fix: 修复大屏播放控制链路
前端:
- useMqttControl 指令分发补上 play_target(此前被静默丢弃,立即播放无法触发大屏跳转)
- MediaScreen 重构 playTarget:pendingTargetRef 统一刷新播放列表路径,
消除与 playlist_changed 重载的竞态(避免跳转被旧索引覆盖)
后端:
- storage.add_to_playlist 自动识别 URL 来源(source=url),
修复 URL 媒体加入播放列表后被当本地文件过滤、永远无法播放的问题
- _load 时规范化旧数据(source=None 的 http 条目自动补 url)
|
2026-08-17 21:59:13 +08:00 |
|
Pine
|
c55835fb7d
|
fix: 管理后台连接状态 + 修复按钮无响应
连接状态(正式):
- /api/display/state 扩展:screens_online(大屏心跳统计,opc/display/heartbeat)+ last_command(最近指令与发布结果)
- 前端大屏每 10s 上报心跳(稳定 client_id),后端 30s TTL 统计在线大屏数
- 管理台新增「连接状态」卡片:后端/MQTT/在线大屏/最近指令,3s 轮询刷新
按钮无响应根治:
- admin.js 改为 document 事件委托(data-nav/data-control/data-action/复制/预览),不再依赖逐个绑定
- /static 与 /admin 响应加 no-cache 头,杜绝旧 JS/CSS 缓存导致的按钮失效
- SSE 不再自动重载页面(避免与操作回调双重重载清掉反馈);立即播放改为 toast 不重载
|
2026-08-17 21:54:28 +08:00 |
|
Pine
|
1a95ecbacb
|
feat: 管理后台补齐完整功能
- 页面切换卡片:数据大屏/数字孪生/AI 助手/媒体轮播 → MQTT navigate 控制所有大屏
- 立即播放:新增 POST /api/playlist/play(加入播放列表 + MQTT play_target),
MediaScreen 监听 play_target 跳转并播放指定媒体
- 远程 URL 支持两种操作:添加到媒体库 / 加入播放列表
- 本地媒体卡片显示 FastAPI 输出 URL(/file/...)+ 一键复制
- 预览弹窗增加「立即播放」;新增 page-switch/media-url/copy-btn 样式
|
2026-08-17 21:38:04 +08:00 |
|
Pine
|
00cb76c73f
|
feat: 管理后台迁移至 FastAPI + Jinja2 服务端渲染
- GET /admin:Jinja 模板渲染(登录页 / 管理台),媒体库、播放列表、设置由服务端渲染
- POST /admin/login:表单登录 + HMAC 签名 Cookie(DPM_ADMIN_SECRET),GET /admin/logout 退出
- /static/admin.css + admin.js:动态操作(上传进度/播放控制/设置/SSE 状态/预览弹窗)调 REST 后整页刷新
- 前端移除 React Admin 页面与 /admin 路由(Admin.jsx 删除);媒体/播放列表接口保持不变
- 依赖改用 uv 管理(pyproject.toml + uv.lock,含 jinja2),README 更新启动方式
|
2026-08-17 21:30:44 +08:00 |
|
Pine
|
856ff88440
|
feat: 拆出 FastAPI 独立后端 + MQTT 控制 + 阿里云 AI
后端(backend/,FastAPI :10085):
- 全部数据 REST 接口:dashboard 快照 / 企业分区 / 播放列表 / 媒体 / 设置
- MQTT 控制通道:opc/display/command(切页/播放/卡片/通知),
管理端 POST /api/display/command → MQTT 广播 → 所有大屏同步响应
- 阿里云 DashScope:通义千问 LLM + 函数调用(工具经 MQTT 广播),
paraformer-realtime-v2 语音识别 /api/ai/asr
- 媒体资源统一由后端存储返回(上传/列表/静态服务)
- SSE /api/events 保留作 MQTT 不可用时的兼容回退
前端:
- config.js + .env.local 配置后端地址与 MQTT 账号(前端 dpm / 服务端 dpmserver)
- mqtt.js 客户端 + useMqttControl(MQTT 驱动切页/媒体/卡片/通知)
- DpmOverlays 全局覆盖层(通知 toast + 企业/分区/总览卡片)
- useParkSim 改为后端 API 数据源(离线回退本地模拟)
- AiChatPanel:对话走后端 LLM(工具调用),语音走本地录音 + 后端 ASR
- MediaScreen:媒体控制走 MQTT(保留 SSE 回退),修复 useEffect TDZ
Rust:lib.rs 移除内嵌 HTTP 服务器,只保留薄壳(窗口/权限/自启/npc 隧道)
安全:backend/.env、.env.local、media、data.json 已 gitignore
|
2026-08-17 21:26:16 +08:00 |
|
Pine
|
7f1c2ac4f0
|
fix: 注释掉 bd-strip-title 的伪元素样式
|
2026-08-17 20:53:36 +08:00 |
|
Pine
|
e59047c4aa
|
feat: AI 助手支持文字/语音双模式
- 头部新增模式切换(文字/语音),文字=对话框,语音=语音交互按钮
- 语音模式:大麦克风按钮 + 聆听波纹动画 + 识别中状态,点击开始/再次点击结束
- 优先使用 Web Speech API 识别(zh-CN),无权限/不支持时自动兜底模拟识别
- 语音提问以文字形式进入同一对话流,气泡带「语音」标记
- 切换模式保留对话历史;聆听中切换/离开自动中止识别
- 新增 microphone/microphone-filled/microphone-off/message-circle 图标
|
2026-08-17 20:34:45 +08:00 |
|
Pine
|
7da9749953
|
feat: 新增 AI 智能助手对话页面(/ai)
- 布局沿用数字孪生页接口:左侧 AI 对话区 + 右侧企业分布面板
- 新增共享 ParkSidePanel 组件(分区/企业名录/详情/实时动态),
数字孪生与 AI 助手页右侧完全一致
- 新增 AiChatPanel 对话组件:欢迎语 + 消息流 + 快捷提问 + 输入发送,
内置园区知识库模拟回复(入驻/政策/场地/AI 赋能/分区/企业/融资/就业/导师)
- 路由与导航循环加入 /ai(数据大屏 → 数字孪生 → AI 助手 → 媒体轮播)
- usePageNav 忽略输入框/文本域按键,避免输入方向键误切页面
- 新增 send/eraser/headset/circle-dot 图标,全部遵守 bd- 浅色科技 UI 规范
|
2026-08-17 20:26:16 +08:00 |
|
Pine
|
ef009dad05
|
fix: 园区概览页脚颜色统一(设计变量提升至 :root)
- --bd-* 设计变量从 .bd-page 提升到 :root,页眉/数字孪生/媒体页/页脚全部生效
修复媒体播放页页脚图标与数值失去蓝色(回退为继承深色)的问题
- 数据大屏改用共享 ParkOverviewStrip 组件,与媒体播放页页脚完全一致
(标签统一为「累计营收」)
- PageHeader 头像 Logo 路径修正 /public/logo.png → /logo.png,修复 Logo 不显示
|
2026-08-17 20:15:18 +08:00 |
|
Pine
|
84b3f12146
|
refactor: 页眉由 App 统一注入(ScreenLayout),三页共用一致页眉
- 新增 ScreenLayout 布局路由:注入共享 PageHeader + 全局左右键循环导航
- PageHeader 无 props,按路由自动识别状态(数据实时/3D 实时/媒体播放)
- DataScreen / DigitalTwin / MediaScreen 移除各自页眉,避免重复
- 页脚按页面按需保留(数据大屏 + 媒体轮播,数字孪生无)
- 管理后台不参与导航循环;旧 /screen2 路由移除
- 补齐 MediaScreen 音量/播放/翻页图标与浅色主题样式
|
2026-08-17 20:08:45 +08:00 |
|
Pine
|
b08055f8a5
|
feat: 优化共享页眉组件,增加页面状态识别及导航功能
|
2026-08-17 19:50:50 +08:00 |
|
Pine
|
435627070f
|
feat: 新增中部轮换大屏组件,优化信息展示方式
|
2026-08-17 19:04:59 +08:00 |
|
Pine
|
af820dd2c2
|
chore: 数据资料目录加入 gitignore(本地资料不入库)
|
2026-08-17 18:38:10 +08:00 |
|
Pine
|
55c5b4ca37
|
chore: 更新 yarn.lock 依赖锁文件
|
2026-08-17 18:38:00 +08:00 |
|
Pine
|
3f44fa26fc
|
chore: Rust 包名更新为「昆明大学生创业园展播系统」
|
2026-08-17 18:37:54 +08:00 |
|
Pine
|
85c8383438
|
feat: 管理后台新增数据大屏入口
- Admin 顶栏新增「数据大屏」按钮跳转 /screen2
- 新增 logo 资源
|
2026-08-17 18:37:39 +08:00 |
|
Pine
|
41562d51ae
|
feat: 数字孪生独立页面与路由切换
- DigitalTwin.jsx:全屏 3D 建筑 + 企业面板(分区切换/房间定位/实时动态)
- App.jsx 注册 /twin 路由
- 左右方向键:主大屏 → 数字孪生 → 管理后台 循环切换
|
2026-08-17 18:37:35 +08:00 |
|
Pine
|
ef6ed76478
|
feat: OPC 智能园区数据大屏主页面
- DataScreen.jsx:园区数字运营中心(深色科技风)
- 五大 KPI(TOKEN/工具/项目/就业/营收)+ 三栏数据面板 + 实时动态
- 入驻企业信息表真实数据 + 每 2.2s 模拟跳动
- datascreen.css:完整大屏样式(Appica 图标配色/概览卡/导航按钮)
|
2026-08-17 18:37:31 +08:00 |
|
Pine
|
2a7f51a202
|
feat: 3D 园区建筑模型(像素级重建)
- Building3D.jsx:React Three Fiber 双良节能大楼 3D 模型
- 按平面图 60×42 网格重建:玻璃顶中庭/成长区/国际区/加速区/楼道/会议室
- 房间编号 A1-A9/I1-I7/G1-G8 + 入驻企业标签 + 门开向过道
- 共享墙/整体地面/一楼挑空大厅
- scripts/parse_layout.py:纯标准库 PNG 像素解析脚本
|
2026-08-17 18:37:26 +08:00 |
|
Pine
|
cffc1e7a29
|
feat: 图标系统与共享组件
- Icons.jsx:Appica SVG 图标统一封装(零 emoji,名称映射)
- PageHeader.jsx:两页共享页眉(标题/副标题/时钟/导航)
- CompanySearch.jsx:入驻企业 Autocomplete 搜索(Appica)
|
2026-08-17 18:37:21 +08:00 |
|
Pine
|
0d20e1413f
|
build: 集成 Appica UI 与 Tailwind v4
- 安装 @appica/ui-react、@appica/icons-react、tailwindcss、@tailwindcss/vite
- vite.config 添加 tailwindcss 插件
- 新增 src/styles/global.css 引入 Tailwind 与 Appica 设计令牌
- main.jsx 包裹 ThemeProvider(主题防闪烁)
|
2026-08-17 18:37:16 +08:00 |
|
Pine
|
94ea880364
|
- 增加说明文档
|
2026-05-14 16:21:53 +08:00 |
|
Pine
|
1de841e8ca
|
- 优化关闭图标
V0.1.0
|
2026-05-14 15:39:12 +08:00 |
|
Pine
|
af326571da
|
- 更新前端支持触控操作
|
2026-05-14 15:07:41 +08:00 |
|
Pine
|
f4dcc30c2b
|
- 修复内网穿透
|
2026-05-13 11:03:08 +08:00 |
|
Pine
|
3fc9ffb447
|
- 窗口逻辑、内网穿透
|
2026-05-13 03:00:55 +08:00 |
|
Pine
|
68ddb6446b
|
- 增加文件大小限制和流式写入
|
2026-05-13 02:47:03 +08:00 |
|
Pine
|
1f3bd690f0
|
- 优化界面全屏、视频上传进度条、视频自动裁切铺满屏幕
|
2026-05-13 02:21:29 +08:00 |
|
Pine
|
aa857a5ff8
|
- 修复win构建msi/wix模式下无法使用中文
|
2026-05-13 02:05:35 +08:00 |
|
Pine
|
9590d5916f
|
- 修复局域网访问
|
2026-05-13 02:01:52 +08:00 |
|
Pine
|
ba737e18bd
|
- 修复win的协议支持
|
2026-05-13 01:49:19 +08:00 |
|
Pine
|
c9a3ef92a1
|
- 增加应用图标
|
2026-05-13 01:29:45 +08:00 |
|
Pine
|
d9b0aa27e5
|
- 图标优化、视频缩略图
|
2026-05-13 01:19:41 +08:00 |
|
Pine
|
a5b96eed6e
|
- 修复服务器
|
2026-05-13 00:45:50 +08:00 |
|
Pine
|
2bd68815fd
|
- 端口修复
|
2026-05-13 00:18:13 +08:00 |
|
Pine
|
7794012299
|
- 修复循环播放
|
2026-05-13 00:10:59 +08:00 |
|