# MBT_Client **Repository Path**: mbt_tlt/mbt_-client ## Basic Information - **Project Name**: MBT_Client - **Description**: MBT客户端程序 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-23 - **Last Updated**: 2024-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MBT_TLT 音乐盒客户端 # 项目简介 MBT_TLT 音乐盒客户端是一款 xxx 为一体的 xxxx # 项目技术栈 基于 `Vue3 + Vite2 + Electron` 基础技术架构 # 项目初始化及启动 ## 1、Electron 客户端初始化 ```shell npm i ``` ## 2、前端工程初始化 ```shell cd frontend && npm i ``` ## 3、启动 - dev 3.1、启动前端工程 ```shell cd frontend && npm run dev ``` 3.2、启动 electron 客户端 ```shell electron . --env=local ``` ## 3、启动 - prod 暂未调通... # 开发日志 - v0.1.0 (开发中, 敬请期待 ( •̀ ω •́ )✧) - ... # 待办事务 音乐盒客户端一期开发需求(v0.1.0 ~ v1.0.0): - v0.1.0 基础的客户端框架 - 基础设施建设 - 剥离 subtitleStore 与 fileStore 关于 缓存区 相关的功能, 将其与 事件 设计模式结合抽象为独立的通用模块【正常】 - 缓冲区最终检测 请求及响应 数据及相关功能 - 缓冲区自定义数据项及相关设置功能 - 清除缓冲区相关功能, 配置项中生成所有自定义数据的是否允许清除功能 - 读取缓冲区相关功能, 配置项设置是否读取完后清空哪些自定义数据 - 剥离 弹框组件 关于 弹框尺寸, 缓存区, 最终检查 相关逻辑, 将其抽象为弹框基类组件【正常】 - 剥离 工作区模块组件 关于 加载显隐控制, 空状态, 组件宽高 相关逻辑, 将其抽象为工作区模块基类组件【正常】 - 工作台优化【正常】 - 波图形区切换页面时若有已有 decodeCodeData 则走读取现有数据而并非重复渲染波形数据(需依附上传 input 组件)【较为重要】 - 工作台整体响应式页面适配, 该优化项待与编辑区视口大小自定义功能一起做【次要】 - 工作台工作子页模块切换时会出现宽度抖动 BUG, 该优化项待与编辑区视口大小自定义功能一起做【次要】 - 工作台相关事务 - 文件导出优化功能 - 实现选择导出指定工程(可多选, 默认单选当前活动工程)【次要】 - 建立文件相关锁机制【次要】 - 工具台新建工程项目动态化 audio 文件选择与导入加载(暂时从本地文件读取, 未来支持远端平台选择读取)【正常】 - 字幕编辑区优化 - 高亮及跳转提示实现【次要】 - peaks 音频开发 - 动态化 audio 文件导入加载【正常】 - peaks 初始化做约束, 若初始化未完成, 则所有对接 peaks 的接口功能都将等待 peaks setSource 执行完毕后再加载【重要】 - peaks 音频对接【重要】【已完成架构, 待完善】 - peaks 信息虚拟化【重要】【已完成】 - peaks 事件监听器【重要】【已完成架构, 待完善】 - 音频播放结束后变更播放状态及图标样式【正常】【已完成】 - 字幕效果展示区 - props 高度参数生成【正常】 - 字幕效果展示区初始化需要在 peaks setSource 完毕之后进行【重要】 - 关联 BUG: - 1、新建工程文件若无字幕文件, 切换回有字幕文件的工程会因为初始化时字幕效果展示区初始化时序问题导致阻塞工作台运行的 BUG【偶现 BUG】【重要】 - 非字幕时间段定位(首尾位歌词基于首尾位歌词基准定位, 非首尾位歌词基准基于当前时间段前一个有效歌词基准定位)【正常】【需同步 MBT_TLT 通用化音频播放器 更新】 - 该功能项对应以下两个 BUG 的解决 - 1、重置音频显示歌词视口未能立即跳转置顶(现需触发歌词跳转才会重置到正确位置),解决方法: 重置时更新歌词视口 - 2、删除歌词且播放进度在歌词时间段时,歌词视口会异常的立即跳转置顶,解决方法: 删除时更新歌词视口 - 字幕对象变化时需要重新 初始化歌词列表配置(该项影响歌词对齐定位)【重要】【已完成】 - 在工作台页面加载前调用 MediaDevices.getUserMedia 获取用户音频使用许可,从而保证 peaks 创建时所附带的 AudioContext 创建不会在控制台弹出 warning 信息【无关紧要】 - v0.2.0 全局国际化开发 - 对接 MBT_Nodejs_i18n 并将其改造为 ES6 规范库 - v0.3.0 文件兼容 - 字幕文件兼容转化 - 完成 '.ass' 文件的转换, 保存与读取功能【正常】 - 完成 '.srt' 文件的转换, 保存与读取功能【正常】 - 完成 '.vtt' 文件的转换, 保存与读取功能【正常】 - 完成 '.stl' 文件的转换, 保存与读取功能【正常】 - 完成 '.sbv' 文件的转换, 保存与读取功能【正常】 - 完成 '.sub' 文件的转换, 保存与读取功能【正常】 - 完成 '.dfxp' 文件的转换, 保存与读取功能【正常】 - 完成 '.ttml' 文件的转换, 保存与读取功能【正常】 - v0.4.0 代码操作 - 字幕编辑区优化 - 工具项 代码编辑 工具项功能实现【次要】 - v0.x.0 建立单元测试与 E2E 测试【正常】 - v0.x.0 优化【正常】 - 工作台体验优化 - 工作台菜单栏快捷键实现【次要】 - 基础功能快捷键实现【次要】 - 空状态提示语改为与 创新 相关的名言短句【无关紧要】 - 工作台全局文件拖拽读取【无关紧要】 - 工作台操作命令化, 由此实现 Ctrl + Z 与 Ctrl + Y 功能【正常】 - v0.x.0 实现主题色选取及统一动态变换功能【次要】 - 实现 JS 通用 十六位色值, RGBA, HSLA 转换函数库 - 实现全样式虚拟化 - v0.x.0 实现工程文件修复工具【无关紧要】 - v0.x.0 完善项目异常检测系统【次要】 - v0.x.0 优化项目整体样式风格设计【无关紧要】 音乐盒客户端二期开发需求(v1.1.0 ~ v2.0.0): - v1.1.0 .... # 项目指令 - `preview`: `vite preview` 读取 **项目打包文件** 并开启 **生产环境** 服务 - `dev`: `vite` 读取 **项目文件** 并开启 **开发环境** 服务 - `build`: `vite build` 读取 **项目文件** 并打包出项目 **静态资源文件包** # `Git` 提交注释类型规范(`V1.1`) ## 1、提交类型 | 类型 | 说明 | 模板规范 | | :---------: | :----------------: | :----------------------------------------------------------: | | `feature` | 新增内容 | `feature: [需求], [涉及模块], [特殊说明(可选)]` | | `fix` | `BUG` 修复 | `fix: [缺陷类型], [错误说明], [涉及模块], [发现阶段(可选,现网缺陷必须注明)], [优先度(可选, 缺陷工单则必须说明)], [解决方案(可选)], [特殊说明(可选)]` | | `back` | 回退内容 | `back: [回退涉及范围], [回退原因说明]` | | `merge` | 合并更改 | `merge: [被合并分支及最后提交记录哈希号 -> 合并分支及最后提交哈希号], [合并请求链接(远端分支合并必须说明)], [特殊说明(可选)], [冲突文件列表(可选,本地合并则必须说明)]` | | `review` | 代码审查优化 | `review: [涉及范围], [review 原因说明]` | | `comment` | 注释或文档 | `comment: [文档类型], [涉及范围(可选)], [特殊说明(可选)]` | | `other` | 杂项提交 | `other: 提交内容说明` | | `minor` | 多项不重要内容提交 | `minor: 提交内容说明` | | `replenish` | 补充 | `replenish: 指定补充分支哈希号(可选)` | ## 2、推荐示例 ### 2.1、`feature` 当进行 **需求新增开发** 时,对应提交类型使用 `feature`,提交内容需注明为何种需求、涉及到的模块、以及相关特殊说明。 **`feature` 推荐提交规范模板:** `feature: [需求], [涉及模块], [特殊说明(可选)]` ```shell # 例如,本次提交为客户端高级美颜国际化开发,提交说明为: # feature: 客户端高级美颜国际化开发, 涉及高级美颜模块, ``` ### 2.2、`fix` 当进行 **`BUG`修复** 时,对应提交类型使用 `fix`,提交内容需注明 `BUG` 类型、发现阶段、紧急程度、涉及到的模块,以及相关特殊说明。 **`fix` 推荐提交规范模板:** `fix: [缺陷类型], [错误说明], [涉及模块], [发现阶段(可选,现网缺陷必须注明)], [优先度(可选, 缺陷工单则必须说明)], [解决方案(可选)], [特殊说明(可选)]` - **缺陷类型** - 样式缺陷 - 逻辑缺陷 - 文本缺陷 - 其他缺陷 - **发现阶段** - 自测 - 测评 - 提测 - 内灰 - 外灰 - 现网 - **优先度** - 无关紧要 - 低 - 中 - 高 - 紧急 ```shell # 例如,本次提交为修复高级美颜国际化开发带来的样式错误 BUG,提交说明为: # fix: 样式缺陷, 修复高级美颜国际化开发带来的样式错误 BUG, 涉及高级美颜模块, 阶段:自测, 优先度:中 ``` ### 2.3、`back` 当进行 **代码回滚(提交级别)** 时,对应提交类型使用 `back`,提交内容需注明回退代码涉及的影响范围、以及相关回退说明。 **`back` 推荐提交规范模板:** `back: [回退涉及范围], [回退原因说明]` ```shell # 例如,本次提交为回退客户端高级美颜的国际化,提交说明为: # back: 回退涉及范围:客户端高级美颜模块, 回退原因: 国际化文本出错 ``` ### 2.4、`merge` 当进行 **`git` 冲突合并或分支合并修改** 时,对应的提交类型使用 `merge`,提交内容需注明涉及的合并分支以及对应的 `GitLab` 合并请求链接。 **`merge` 推荐提交规范模板:** `merge: [被合并分支及最后提交记录哈希号 -> 合并分支及最后提交哈希号], [合并请求链接(远端分支合并必须说明)], [特殊说明(可选)], [冲突文件列表(可选,本地合并则必须说明)]` ```shell # 例如,本次合并修改为 dev/1.8.3 m18u3709 到 master d8u32901, 对应的请求链接为 https://xxx.com,提交说明为: # merge: dev/1.8.3 m18u3709 -> master d8u32901, 对应请求链接为: https://xxx.com, 冲突文件列表为: # - plugin/qtService.js ``` ### 2.5、`review` 当进行 **代码重构 或 涉及代码优化** 时,对应提交类型使用 `review`,提交内容需注明涉及范围,`review` 原因。 **`review` 推荐提交规范模板:** `review: [涉及范围], [review 原因说明]` ```shell # 例如,本次提交为针对高级美颜性能做的重构优化,提交说明为: # review: 高级美颜, 代码重构与性能优化 ``` ### 2.6、`comment` 当进行 **注释或文档类型操作** 时,对应的提交类型使用 `comment`,提交内容需注明文档类型,涉及范围。 **`comment` 推荐提交规范模板:** `comment: [文档类型], [涉及范围(可选)], [特殊说明(可选)]` - **文档类型** - 注释开发文档,特指 `可用于自动化开发文档生成的相关注释文档` - 说明文档,特指 `类似于 README 这类说明性文档` - 代码注释,特指 `嵌入至代码内的说明注释` ```shell # 例如,本次提交为修改 TIM 通信模块相关代码注释,提交说明为: # comment: 代码注释开发文档,TIM 通信模块相关逻辑代码 ``` ### 2.7、`other` 当 **提交内容分类无法明确的被现有其他提交类型字段囊括** 时,对应提交类型应使用 `other`,此时提交者需要利用尽可能清晰的针对提交内容的 **业务内容及作用范围** 进行说明。 **需要注意的是:`other` 并非为多项混合内容的统一性提交类型字段,对于多项混合内容的提交,应该根据其内容对功能的影响程度选择使用 `minor` 提交类型字段或将其拆分为单一提交类型字段的多次提交。** **`other 推荐提交规范模板`**:`other: 提交内容说明` ```shell # 例如,本次提交为针对项目新手引导引用的静态图片资源的替换,提交说明为: # other: 修改小鹅通助手直播新手引导所使用的静态文件 ``` ### 2.8、`minor` 当 **提交内容为多项且不重要的修改** 时,对应提交类型应使用 `minor`,此时提交者需要利用尽可能清晰的针对提交内容的 **业务内容及作用范围** 进行说明。 **需要注意的是:`minor` 字段所描述的内容仅指提交内容对原有内容逻辑无影响或者完全等价的情况,例如简化(而不是优化)判断条件、代码的空格换行、小幅度调整图标偏移量等情况。** **`minor` 推荐提交规范**:`minor: 提交内容说明` ```shell # 例如,本次提交为简单修改一个代码书写规范不当且存在很多硬编码的非重要性且多项情况,提交说明为: # minor: 整理了 xxx 文件的代码格式及排版,并且修改代码中多次出现的硬编码问题及样式小幅度偏移问题 ``` ### 2.9、`replenish` 当 **提交内容有部分文件遗漏** 时,可以使用 `replenish` 字段说明本次提交为上次提交或指定提交的补充提交。 **需要注意的是:该字段仅为提交时不小心遗漏部分提交内容时使用。** `replenish` 推荐提交规范:`replenish: 指定补充分支哈希号(可选)` ```shell # 例如,之前提交时不小心漏了一个文件,这个文件与之前提交文件提交类型完全一致,提交说明为: # replenish: (留空) ```