# 语音数据同步服务 (dataservice-yy) ## 项目简介 语音数据同步服务用于从 EBOX 录音盒拉取录音文件,上传到 OSS,并保存通话记录到数据库。 ## 目录结构 ``` dataservice-yy/ ├── dataservice-yy-0.0.1-SNAPSHOT.jar # 主程序 JAR 包 ├── config/ │ └── application-external.yml # 外部配置文件(部署时修改) ├── vaa-recordings/ # 本地录音文件存储目录 │ ├── 340100/ # 地市编码 │ │ ├── 20240101/ # 日期目录 │ │ │ └── / # 设备目录 │ │ │ └── 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、端口、账号密码是否正确,网络是否连通。 ## 技术支持 如有问题,请联系开发人员。