feat(XCamera): 实现异步抓图功能并优化图像处理

fix(nginx): 调整企业微信回调代理路径

feat(gateway): 添加企业微信消息处理功能

docs: 更新项目规划文档和企业微信配置详情

refactor(XCamera): 重构LED检测和图像处理逻辑

test: 添加ONVIF抓图测试功能
This commit is contained in:
zqm
2026-03-31 11:04:43 +08:00
parent 1f5d05e6d6
commit cdf64fa31f
2605 changed files with 530175 additions and 1081 deletions

View File

@@ -6,24 +6,95 @@
scroll-y="{{true}}"
scroll-into-view="{{lastMessageId}}"
enable-back-to-top="{{true}}"
bindscrolltolower="loadMoreHistory"
>
<!-- 系统消息 -->
<view wx:if="{{messages.length === 0}}" class="empty-message">
<text class="empty-text">开始与智控未来的对话吧</text>
</view>
<!-- 历史消息提示 -->
<view wx:if="{{showHistoryTip}}" class="history-tip">
<text>已加载历史消息</text>
</view>
<!-- 消息项 -->
<view
wx:for="{{messages}}"
wx:key="id"
id="{{item.id}}"
class="message-item {{item.isMe ? 'message-right' : 'message-left'}}"
bindlongpress="onMessageLongPress"
data-message-id="{{item.id}}"
>
<view class="message-avatar">
<image src="{{item.avatar}}" mode="aspectFill"></image>
</view>
<view class="message-content">
<view class="message-header">
<view wx:if="{{!item.isMe && item.nickname}}" class="message-header">
<text class="message-nickname">{{item.nickname}}</text>
<text class="message-time">{{item.time}}</text>
</view>
<view class="message-body">
<text class="message-text" wx:if="{{item.type === 'text'}}">{{item.content}}</text>
<image class="message-image" wx:if="{{item.type === 'image'}}" src="{{item.content}}" mode="widthFix"></image>
<!-- 文本消息 -->
<view wx:if="{{item.type === 'text' || item.type === 'richText'}}" class="message-text-container">
<rich-text wx:if="{{item.type === 'richText'}}" nodes="{{item.content}}"></rich-text>
<text wx:else class="message-text">{{item.content}}</text>
</view>
<!-- 图片消息 -->
<image wx:if="{{item.type === 'image'}}" class="message-image" src="{{item.content}}" mode="widthFix" bindtap="previewImage" data-url="{{item.content}}"></image>
<!-- 代码块 -->
<view wx:if="{{item.type === 'code'}}" class="message-code">
<view class="code-header">
<text class="code-language">{{item.language || '代码'}}</text>
<button class="copy-btn" bindtap="copyCode" data-content="{{item.content}}">
<text class="copy-icon">📋</text>
<text class="copy-text">复制</text>
</button>
</view>
<view class="code-body">
<text class="code-text">{{item.content}}</text>
</view>
</view>
<!-- 按钮卡片 -->
<view wx:if="{{item.type === 'buttonCard'}}" class="message-button-card">
<view class="card-title">{{item.title}}</view>
<view class="card-buttons">
<button
wx:for="{{item.buttons}}"
wx:key="id"
class="card-button"
bindtap="onCardButtonTap"
data-action="{{item.buttons[index].action}}"
>
{{item.buttons[index].text}}
</button>
</view>
</view>
</view>
<view class="message-footer">
<text class="message-time">{{item.time}}</text>
</view>
</view>
</view>
<!-- 加载中动画 -->
<view wx:if="{{isTyping}}" class="typing-container">
<view class="message-item message-left">
<view class="message-avatar">
<image src="/assets/images/ai-avatar.png" mode="aspectFill"></image>
</view>
<view class="message-content">
<view class="message-body">
<view class="typing-indicator">
<view class="typing-dot"></view>
<view class="typing-dot"></view>
<view class="typing-dot"></view>
</view>
<text class="typing-text">正在输入...</text>
</view>
</view>
</view>
</view>
@@ -40,6 +111,7 @@
bindconfirm="sendMessage"
confirm-type="send"
adjust-position="{{true}}"
maxlength="2000"
/>
<button
class="send-btn"
@@ -50,14 +122,5 @@
发送
</button>
</view>
<view class="action-buttons">
<button class="action-btn" bindtap="chooseImage">
<image src="/assets/icons/image.png" mode="aspectFit"></image>
</button>
<button class="action-btn" bindtap="showMoreActions">
<image src="/assets/icons/more.png" mode="aspectFit"></image>
</button>
</view>
</view>
</view>