数据同步服务-语音
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
6.0 KiB

1 week ago
# 语音数据同步服务 (dataservice-yy)
## 项目简介
语音数据同步服务用于从 EBOX 录音盒拉取录音文件,上传到 OSS,并保存通话记录到数据库。
## 目录结构
```
dataservice-yy/
├── dataservice-yy-0.0.1-SNAPSHOT.jar # 主程序 JAR 包
├── config/
│ └── application-external.yml # 外部配置文件(部署时修改)
├── vaa-recordings/ # 本地录音文件存储目录
│ ├── 340100/ # 地市编码
│ │ ├── 20240101/ # 日期目录
│ │ │ └── <device_uuid>/ # 设备目录
│ │ │ └── xxx.wav
│ │ └── 20240102/
│ └── ...
├── logs/
│ └── app.log # 日志文件
└── README.md # 本说明文档
```
## 部署步骤
### 1. 准备环境
- JDK 1.8+
- 人大金仓数据库(已创建 mid_voice schema)
- OSS 服务(已部署并配置好上传接口)
### 2. 创建目录结构
```bash
mkdir -p /opt/dataservice-yy/config
mkdir -p /opt/dataservice-yy/logs
```
### 3. 复制文件
```bash
# 复制 JAR 包
cp dataservice-yy-0.0.1-SNAPSHOT.jar /opt/dataservice-yy/
# 复制配置文件模板
cp config/application-external.yml /opt/dataservice-yy/config/
```
### 4. 修改配置
编辑 `/opt/dataservice-yy/config/application-external.yml`,修改以下配置项:
#### 数据库配置
```yaml
spring:
datasource:
url: jdbc:kingbase8://{数据库IP}:{端口}/kingbase?currentSchema=mid_voice&clientEncoding=utf8
username: {数据库用户名}
password: {数据库密码}
```
#### OSS 配置
```yaml
vaa-sync:
oss:
base-url: http://{OSS服务器IP}:9090
upload-url: http://{OSS服务器IP}:9090/apiOss/oss/fileUpload
appcode: dataservice-yy
appid: {appid}
appsecret: {appsecret}
```
#### 其他配置
```yaml
vaa-sync:
download-path: ./vaa-recordings # 本地录音文件存储路径
sync-interval-cron: "0 0 0/2 * * ?" # 同步间隔(默认每2小时)
device-username: admin # 录音盒登录账号
device-password: admin # 录音盒登录密码
server:
port: 8088 # 服务端口
```
### 5. 启动服务
```bash
cd /opt/dataservice-yy
nohup java -jar dataservice-yy-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
```
### 6. 查看日志
```bash
tail -f logs/app.log
```
## 配置文件说明
### application-external.yml
此文件包含所有需要部署时调整的参数,**无需重新打包 JAR**。
| 配置项 | 说明 | 示例 |
|-------|------|------|
| `spring.datasource.url` | 数据库连接URL | `jdbc:kingbase8://53.1.194.60:54321/kingbase?currentSchema=mid_voice&clientEncoding=utf8` |
| `spring.datasource.username` | 数据库用户名 | `dcms_dev` |
| `spring.datasource.password` | 数据库密码 | `sdy@2025#dc$ks` |
| `vaa-sync.oss.base-url` | OSS基础地址 | `http://53.1.194.59:9090` |
| `vaa-sync.oss.upload-url` | OSS上传接口 | `http://53.1.194.59:9090/apiOss/oss/fileUpload` |
| `vaa-sync.oss.appcode` | OSS应用编码 | `dataservice-yy` |
| `vaa-sync.oss.appid` | OSS应用ID | `371a3368-e28e-4ba3-95a3-c31c19cf0ad0` |
| `vaa-sync.oss.appsecret` | OSS应用密钥 | `06a6a80e-f9d2-4b3b-acc0-8d182c876074` |
| `vaa-sync.download-path` | 本地录音存储路径 | `./vaa-recordings` |
| `vaa-sync.sync-interval-cron` | 同步定时任务 | `0 0 0/2 * * ?`(每2小时) |
| `vaa-sync.device-username` | 录音盒登录账号 | `admin` |
| `vaa-sync.device-password` | 录音盒登录密码 | `admin` |
| `server.port` | 服务端口 | `8088` |
## 定时任务说明
同步任务默认每2小时执行一次,可通过修改 `sync-interval-cron` 调整:
| 表达式 | 说明 |
|-------|------|
| `0 0 0/2 * * ?` | 每2小时执行一次(默认) |
| `0 0/30 * * * ?` | 每30分钟执行一次 |
| `0 0 2 * * ?` | 每天凌晨2点执行 |
| `0 0/1 * * * ?` | 每分钟执行(测试用) |
## 数据表说明
### mid_voice_device_config
设备基础配置表,存储录音盒设备信息。
| 字段 | 说明 |
|-----|------|
| device_no | 设备编号(UUID) |
| city_code | 地市编码 |
| city_name | 地市名称 |
| ip_address | IP地址 |
| device_port | 端口号 |
| device_status | 设备状态(0在线) |
### mid_voice_channel_config
通道配置表,存储录音盒通道绑定的电话号码。
| 字段 | 说明 |
|-----|------|
| device_no | 设备编号 |
| channel_no | 通道号(1-8) |
| phone_number | 绑定电话号码 |
### mid_voice_call_record
通话记录表,存储录音文件信息和OSS地址。
| 字段 | 说明 |
|-----|------|
| call_record_id | 通话记录ID(device_no + record_id) |
| device_no | 设备编号 |
| city_code | 地市编码 |
| city_name | 地市名称 |
| call_tel | 主叫号码 |
| called_tel | 被叫号码 |
| call_start_time | 通话开始时间 |
| call_end_time | 通话结束时间 |
| call_duration | 通话时长(秒) |
| call_direction | 通话方向(1呼入,2呼出) |
| recording_file_name | 录音文件名 |
| recording_file_path | OSS完整访问URL |
| recording_file_size | 文件大小(字节) |
## 日志说明
日志文件位于 `logs/app.log`,可通过以下命令查看:
```bash
# 查看实时日志
tail -f logs/app.log
# 只看错误日志
tail -f logs/app.log | grep "【异常】"
# 只看设备同步日志
tail -f logs/app.log | grep "【设备】"
# 只看录音处理日志
tail -f logs/app.log | grep "【录音】"
```
## 常见问题
### 1. 配置文件读取失败
检查 `config/application-external.yml` 是否在 JAR 包同级目录的 `config/` 文件夹下。
### 2. 数据库连接失败
检查数据库URL、用户名、密码是否正确,网络是否连通。
### 3. OSS上传失败
检查 OSS 地址、认证信息是否正确,OSS服务是否正常。
### 4. 录音盒连接失败
检查录音盒IP、端口、账号密码是否正确,网络是否连通。