# CodeWhisper
**Repository Path**: jerryzu/code-whisper
## Basic Information
- **Project Name**: CodeWhisper
- **Description**: 一个基于 QR 码的设备数据采集系统,一个AI的实验场
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-02-26
- **Last Updated**: 2026-03-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CodeWhisper

**一个基于 QR 码的设备数据采集系统**
[](LICENSE)
[](https://android.com/)
[](https://developer.huawei.com/consumer/cn/harmonyos/)
[](https://developers.weixin.qq.com/miniprogram/dev/framework/)
[](https://vuejs.org/)
[](https://nodejs.org/)
[](https://www.sqlite.org/)
[功能特性](#功能特性) • [快速开始](#快速开始) • [API 文档](#api-文档) • [开发指南](#开发指南) • [相关文档](#-相关文档)
---
## 📱 项目简介
CodeWhisper 是一个跨平台设备数据采集解决方案,通过扫描设备二维码快速收集设备信息,并支持批量上传到云端进行统一管理。系统包含:
- **Android 客户端** (Kotlin + Jetpack Compose)
- **HarmonyOS 客户端** (ArkTS + ArkUI)
- **微信小程序** (JavaScript + WXML/WXSS)
- **Web 管理后台** (Vue 3 + TypeScript + Ant Design Vue)
- **Node.js 后端服务** (Express.js + SQLite)
### 主要功能
- 📷 **QR 码扫描** - 快速采集设备信息
- 📤 **批量上传** - 支持批量上传设备数据
- 🔐 **用户认证** - JWT 认证与密码哈希保护
- 🔄 **密码重置** - 支持验证码重置密码
- 📊 **数据统计** - 设备状态统计与分析
- 🔒 **HTTPS 支持** - 自签名证书加密传输
---
## 📊 版本演进
### 分支说明
| 分支 | 状态 | 用途 |
|------|------|------|
| **master** | 🟢 活跃开发 | 新功能开发与演进 |
| **v1** | 🔵 维护模式 | 基础版本(仅修复 bug) |
| **v2** | 🔵 维护模式 | 设备属性版本(仅修复 bug) |
| **v3** | 🔵 维护模式 | Web 管理后台版本(仅修复 bug) |
### 版本对比表
| 功能 | v1 | v2 | v3 |
|------|----|----|----|
| Android 客户端 | ✅ | ✅ | ✅ |
| HarmonyOS 客户端 | ✅ | ✅ | ✅ |
| 微信小程序 | ✅ | ✅ | ✅ |
| 后端 API | ✅ | ✅ | ✅ |
| 设备属性(条码/位置/照片) | - | ✅ | ✅ |
| 照片同步 | - | ✅ | ✅ |
| 照片下载 | - | - | ✅ |
| 编辑冲突处理 | - | - | ✅ |
| Web 管理后台 | - | - | ✅ |
| 审计日志 | - | - | ✅ |
| 分页查询 | - | - | ✅ |
### 版本功能详情
#### v1 基线
核心功能已完成:
- Android 客户端(扫码、设备管理)
- 微信小程序(扫码、设备管理、服务器同步)
- HarmonyOS NEXT 客户端
- Node.js 后端(REST API、SQLite)
#### v2 新增功能(相对 v1)
- **设备属性扩展** - 条形码、位置、照片字段
- **照片同步** - 设备照片永久存储和关联
- **扫码优化** - 修复 Android 条形码扫描和权限处理
#### v3 新增功能(相对 v2)
- **Web 管理后台** - 完整的 Web 端设备/用户管理界面
- **审计日志** - 操作审计功能
- **分页功能** - 设备和用户管理的分页查询
- **照片下载** - 支持从服务器下载照片到本地
- **冲突处理** - 设备编辑冲突解决机制
- **架构优化** - Android 客户端重构,删除冗余层
---
## ✨ 功能特性
### 多端客户端
| 功能 | Android | HarmonyOS | 微信小程序 | Web 管理后台 |
|------|---------|-----------|------------|----------------|
| QR 码扫描 | ✅ CameraX | ✅ scanBarcode | ✅ wx.scanCode | ❌ |
| 设备管理 | ✅ | ✅ | ✅ | ✅ |
| 批量上传 | ✅ | ✅ | ✅ | ❌ |
| 状态追踪 | ✅ | ✅ | ✅ | ✅ |
| 用户认证 | ✅ 用户名密码 | ✅ 用户名密码 | ✅ 微信登录 + 账号绑定 | ✅ 用户名密码 |
| 离线缓存 | ✅ Room DB | ✅ Preferences | ✅ wx.Storage | ❌ |
| 设备同步 | ✅ 后台同步 | ✅ 后台同步 | ✅ 手动同步 | - |
| 服务器配置 | ✅ 扫码配置 | ✅ 扫码配置 | ✅ 扫码配置 | - |
| 用户管理 | ❌ | ❌ | ❌ | ✅(管理员) |
| 审计日志 | ❌ | ❌ | ❌ | ✅(管理员) |
| 数据统计 | ✅ | ✅ | ✅ | ✅ 图表展示 |
### Android / HarmonyOS 客户端
| 功能 | 说明 |
|------|------|
| QR 码扫描 | 使用相机扫描设备二维码,自动解析设备信息 |
| 设备管理 | 查看、编辑、删除本地设备,支持后台同步到服务器 |
| 批量上传 | 一键上传多个设备到服务器 |
| 状态追踪 | 实时显示设备上传状态(待上传/已上传/失败) |
| 用户认证 | 登录、注册、密码重置功能 |
| 网络配置 | 支持扫码配置服务器地址 |
### 微信小程序
| 功能 | 说明 |
|------|------|
| 微信登录 | 微信一键登录,首次使用需绑定系统账号 |
| QR 码扫描 | 支持设备码和服务器地址双模式扫码 |
| 设备管理 | 查看、编辑、删除本地设备 |
| 批量上传 | 一键上传多个设备到服务器 |
| 状态追踪 | 实时显示设备上传状态 |
| 设备同步 | 支持从服务器拉取设备数据并合并到本地 |
| 服务器配置 | 支持扫码配置服务器地址 |
### Web 管理后台
| 功能 | 说明 |
|------|------|
| 仪表板 | 设备统计卡片、状态分布饼图、最近设备列表 |
| 设备管理 | 设备列表(分页搜索)、设备详情查看 |
| 用户管理 | 用户列表(分页)、用户详情、角色管理(仅管理员) |
| 审计日志 | 操作日志查询、时间范围筛选(仅管理员) |
| 个人资料 | 用户信息查看、密码修改 |
| 数据可视化 | ECharts 图表展示设备状态分布 |
### 后端服务
| 功能 | 说明 |
|------|------|
| RESTful API | 标准的 REST API 接口 |
| JWT 认证 | 安全的令牌认证机制 |
| 微信登录 | 支持微信小程序登录和账号绑定 |
| 数据存储 | SQLite 轻量级数据库 |
| HTTPS 支持 | 自签名证书加密传输 |
| 密码重置 | 6 位数字验证码重置流程 |
| 设备统计 | 按状态、客户端统计设备数量 |
| 二维码生成 | 提供服务器地址二维码供客户端扫码配置 |
---
## 🛠 技术栈
### Android 客户端
- **语言**: Kotlin
- **架构**: MVVM + Repository Pattern
- **UI**: Jetpack Compose
- **依赖注入**: Hilt
- **网络**: Retrofit2 + OkHttp
- **数据库**: Room
- **导航**: Jetpack Navigation Compose
- **异步**: Coroutines + Flow
### HarmonyOS 客户端
- **语言**: ArkTS
- **架构**: MVVM
- **UI**: ArkUI 声明式 UI
- **网络**: @ohos.net.http
- **存储**: @ohos.data.preferences
- **扫码**: @ohos.scan.scanBarcode
- **最低版本**: HarmonyOS NEXT (API 5.0+)
### 微信小程序
- **框架**: 微信小程序原生
- **语言**: JavaScript/TypeScript
- **UI**: WXML + WXSS
- **网络**: wx.request 封装
- **存储**: wx.Storage
- **扫码**: wx.scanCode
### Web 管理后台
- **框架**: Vue 3
- **语言**: TypeScript
- **构建工具**: Vite
- **UI 组件库**: Ant Design Vue
- **状态管理**: Pinia
- **路由**: Vue Router
- **HTTP 客户端**: Axios
- **图表**: ECharts
- **密码加密**: Crypto-JS
### 后端服务
- **运行时**: Node.js 20.x
- **框架**: Express.js
- **数据库**: SQLite3
- **认证**: JWT (jsonwebtoken)
- **安全**: SHA-256 密码哈希
- **部署**: Docker + Docker Compose
---
## 🚀 快速开始
### 环境要求
| 组件 | 要求 |
|------|------|
| **Node.js** | >= 18.0.0 |
| **Android Studio** | Hedgehog | 2023.1.1 或更高版本 |
| **DevEco Studio** | 5.0.0 或更高版本(HarmonyOS 开发) |
| **微信开发者工具** | 最新稳定版 |
| **现代浏览器** | Chrome/Edge/Firefox 最新版本 |
| **JDK** | 17 或更高版本 |
| **SDK** | Android API 34+ (目标) |
### 后端服务启动
```bash
# 1. 进入服务端目录
cd server
# 2. 安装依赖
npm install
# 3. 配置环境变量
cp .env.example .env
# 4. 启动服务(开发模式)
npm run dev
# 生产模式
npm start
```
服务将同时监听:
- **HTTP**: http://localhost:3000
- **HTTPS**: https://localhost:3443
### Android 客户端构建
```bash
# 1. 进入 Android 目录
cd android
# 2. 构建调试版本
./gradlew assembleDebug
# 3. 安装到设备
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### HarmonyOS 客户端构建
```bash
# 1. 使用 DevEco Studio 打开 harmonyos 目录
# 2. 等待依赖自动下载完成
# 3. 连接 HarmonyOS 设备或启动模拟器
# 4. 点击运行按钮或使用快捷键构建安装
```
详细说明请查看 [harmonyos/README.md](harmonyos/README.md)
### 微信小程序开发
```bash
# 1. 进入小程序目录
cd miniprogram
# 2. 安装依赖
npm install
# 3. 构建npm
# 在微信开发者工具中:工具 -> 构建 npm
# 4. 使用微信开发者工具打开 miniprogram 目录
# 5. 在真机上预览或调试
```
详细说明请查看 [docs/miniprogram-development-guide.md](docs/miniprogram-development-guide.md)
### Web 管理后台开发
```bash
# 1. 进入 Web 目录
cd web
# 2. 安装依赖
npm install
# 3. 启动开发服务器
npm run dev
# 4. 构建生产版本
npm run build
# 5. 预览生产构建
npm run preview
```
开发服务器将运行在 http://localhost:5173,API 请求会自动代理到后端服务器。
### 默认账号
```
用户名: admin
密码: admin123
```
⚠️ **重要**: 首次登录后请立即修改默认密码!
---
## 📁 项目结构
```
CodeWhisper/
├── android/ # Android 客户端
│ ├── app/
│ │ ├── src/main/
│ │ │ ├── java/com/codewhisper/
│ │ │ │ ├── data/ # 数据层
│ │ │ │ ├── ui/ # UI 界面
│ │ │ │ ├── viewmodel/ # ViewModel
│ │ │ │ ├── repository/ # 仓库层
│ │ │ │ └── util/ # 工具类
│ │ │ ├── res/ # 资源文件
│ │ │ └── AndroidManifest.xml
│ │ └── build.gradle.kts
│ └── build.gradle.kts
├── harmonyos/ # HarmonyOS 客户端
│ ├── AppScope/ # 应用全局配置
│ ├── entry/ # 主模块
│ │ └── src/main/ets/
│ │ ├── entryability/ # 应用入口
│ │ ├── pages/ # 页面
│ │ ├── viewmodels/ # ViewModel
│ │ ├── services/ # 业务服务
│ │ ├── api/ # API 接口
│ │ ├── models/ # 数据模型
│ │ ├── utils/ # 工具函数
│ │ └── components/ # UI 组件
│ └── oh-package.json5
├── miniprogram/ # 微信小程序
│ ├── api/ # API 接口层
│ ├── pages/ # 页面
│ ├── utils/ # 工具函数
│ └── app.js
├── web/ # Web 管理后台
│ ├── src/
│ │ ├── api/ # API 接口层
│ │ ├── components/ # 公共组件
│ │ ├── layouts/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面视图
│ │ │ ├── auth/ # 认证页面
│ │ │ ├── dashboard/ # 仪表板
│ │ │ ├── devices/ # 设备管理
│ │ │ ├── users/ # 用户管理
│ │ │ ├── audit/ # 审计日志
│ │ │ └── profile/ # 个人资料
│ │ ├── App.vue
│ │ └── main.ts
│ ├── index.html
│ ├── vite.config.ts
│ └── package.json
├── server/ # 后端服务
│ ├── src/
│ │ ├── config/ # 配置文件
│ │ ├── models/ # 数据模型
│ │ ├── routes/ # API 路由
│ │ ├── middleware/ # 中间件
│ │ └── utils/ # 工具函数
│ ├── data/ # 数据库文件
│ ├── ssl/ # SSL 证书
│ ├── app.js
│ └── package.json
├── docs/ # 文档
└── README.md
```
---
## 📡 API 文档
### 认证接口
| 方法 | 端点 | 说明 |
|------|------|------|
| `POST` | `/api/auth/login` | 用户登录(Android/HarmonyOS) |
| `POST` | `/api/auth/register` | 用户注册 |
| `POST` | `/api/auth/wechat-login` | 微信小程序登录 |
| `POST` | `/api/auth/bind-account` | 绑定微信到系统账号 |
| `POST` | `/api/auth/forgot-password` | 请求重置密码 |
| `POST` | `/api/auth/reset-password` | 重置密码 |
| `GET` | `/api/auth/verify` | 验证令牌 |
| `GET` | `/api/auth/me` | 获取当前用户信息 |
### 设备接口
| 方法 | 端点 | 说明 |
|------|------|------|
| `GET` | `/api/devices` | 获取设备列表 |
| `GET` | `/api/devices/stats` | 获取设备统计 |
| `GET` | `/api/devices/:id` | 获取单个设备 |
| `POST` | `/api/devices/batch` | 批量上传设备 |
| `PUT` | `/api/devices/:id` | 更新设备 |
| `DELETE` | `/api/devices/:id` | 删除设备 |
### 二维码接口
| 方法 | 端点 | 说明 |
|------|------|------|
| `GET` | `/api/qrcode` | 获取服务器地址二维码(PNG 图片) |
详细 API 文档请查看 [docs/API.md](docs/API.md)
---
## 🔧 开发指南
### 环境配置
#### 后端
创建 `.env` 文件:
```bash
NODE_ENV=development
PORT=3000
HTTP_PORT=3000
HTTPS_PORT=3443
JWT_SECRET=your-secret-key-here
JWT_EXPIRES_IN=7d
DB_PATH=./data/codewhisper.db
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=admin123
# 微信小程序配置(可选)
WECHAT_APP_ID=wx1234567890abcdef
WECHAT_APP_SECRET=your_app_secret_here
```
#### Android 客户端
修改 `app/build.gradle.kts` 中的服务器地址:
```kotlin
debug {
buildConfigField("String", "API_BASE_URL", "\"https://192.168.28.112:3443/\"")
}
```
#### HarmonyOS 客户端
修改 AppScope 资源文件中的服务器地址,或在应用内设置中配置。
#### 微信小程序
修改 `utils/request.ts` 中的 `BASE_URL`,或在应用内设置中配置。
#### Web 管理后台
修改 `vite.config.ts` 中的代理配置:
```typescript
server: {
proxy: {
'/api': {
target: 'https://192.168.28.112:3443', // 修改为你的服务器地址
changeOrigin: true,
secure: false
}
}
}
```
生产环境部署时,修改 `src/api/client.ts` 中的 `baseURL`。
### 密码哈希配置
确保客户端和服务器使用相同的盐值:
**服务器** (`server/src/utils/passwordHasher.js`):
```javascript
this.APP_SALT = 'CW_SALT_2026_SECURE_v1';
```
**客户端** (`android/app/src/main/java/com/codewhisper/util/PasswordHasher.kt`):
```kotlin
private const val APP_SALT = "CW_SALT_2026_SECURE_v1"
```
**小程序客户端** (`miniprogram/utils/password.js`):
```javascript
const APP_SALT = 'CW_SALT_2026_SECURE_v1';
```
**Web 管理后台** (`web/src/utils/password.ts`):
```typescript
export const APP_SALT = 'CW_SALT_2026_SECURE_v1';
```
### HTTPS 自签名证书
开发环境使用自签名证书,位置:`server/ssl/`
生成新证书:
```bash
cd server/ssl
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem \
-days 365 -nodes \
-subj "/C=CN/ST=Beijing/L=Beijing/O=CodeWhisper/CN=192.168.28.112"
```
---
## 📦 部署
### Docker 部署
```bash
# 构建并启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
### 生产环境注意事项
1. **修改默认密码** - 首次登录后立即修改
2. **配置 HTTPS** - 使用正式 SSL 证书
3. **设置强密钥** - 更改 JWT_SECRET
4. **启用防火墙** - 限制数据库访问
5. **定期备份** - 备份数据库文件
---
## 📸 截图
### Android 客户端
### 主页 | 扫码 | 设备列表
 |  | 
### 上传设备

---
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
---
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
---
## 📮 联系方式
- **仓库地址**: https://gitee.com/jerryzu/code-whisper
- **问题反馈**: [Issues](https://gitee.com/jerryzu/code-whisper/issues)
### 📚 相关文档
- [API 文档](docs/API.md) - 完整的 REST API 接口说明
- [微信小程序开发指南](docs/miniprogram-development-guide.md) - 小程序开发规范
- [微信小程序测试指南](docs/miniprogram-testing-guide.md) - 小程序测试方法
- [API 测试指南](docs/API-Testing-Guide.md) - 后端 API 测试
- [HarmonyOS 客户端](harmonyos/README.md) - HarmonyOS 客户端说明
- [Web 管理后台](web/README.md) - Web 管理后台说明
---
**⭐ 如果这个项目对你有帮助,请给一个 Star!**
Made with ❤️ by [Jerry](https://gitee.com/jerryzu)