longz
2026-08-11 ed341f7313c0010ee5c7d2f641f43e69d2777f5f
部分优化
4个文件已修改
130 ■■■■■ 已修改文件
docs/superpowers/plans/2026-08-11-project-handover-analysis.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/sql/init.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tcm-training-admin-backend/sql/tcm_training_admin.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
traditionalApp/pages/watchLive/watchLive.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/superpowers/plans/2026-08-11-project-handover-analysis.md
@@ -34,7 +34,7 @@
- Read: current `git diff`, untracked files under `tcm-training-admin-backend/` and `traditionalApp/pages/watchLiveFullscreen/`
- [ ] **Step 1: 将最近已提交功能按主题归纳。**
- [ ] **Step 2: 将当前未提交修改按直播密码、全屏播放、客户端兼容性三组归纳。**
- [ ] **Step 2: 将当前未提交修改按全屏播放、客户端兼容性等主题归纳。**
- [ ] **Step 3: 区分真实内容差异与仅由换行符造成的工作区状态。**
### Task 3: 验证与交接文档
@@ -45,4 +45,3 @@
- [ ] **Step 1: 执行后端测试、管理端类型检查、配置/差异静态检查。**
- [ ] **Step 2: 在文档中写明通过项、阻塞项和未覆盖的真机验证。**
- [ ] **Step 3: 自审路径、命令、接口和风险结论后交付。**
tcm-training-admin-backend/sql/init.sql
@@ -826,8 +826,6 @@
  `start_time` DATETIME DEFAULT NULL COMMENT '开始直播时间',
  `video_url` VARCHAR(512) DEFAULT NULL COMMENT '视频地址',
  `duration_seconds` INT DEFAULT NULL COMMENT '视频时长(秒)',
  `password_enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否开启观看密码:0否 1是',
  `watch_password` VARCHAR(64) DEFAULT NULL COMMENT '观看密码',
  `base_reserve_count` INT NOT NULL DEFAULT 0 COMMENT '基础预约量(初始刷基数)',
  `base_watch_count` INT NOT NULL DEFAULT 0 COMMENT '基础观看量(初始刷基数)',
  `real_reserve_count` INT NOT NULL DEFAULT 0 COMMENT '真实预约人数',
tcm-training-admin-backend/sql/tcm_training_admin.sql
@@ -4748,8 +4748,6 @@
  `start_time` datetime DEFAULT NULL COMMENT '开始直播时间',
  `video_url` varchar(512) DEFAULT NULL COMMENT '视频地址',
  `duration_seconds` int DEFAULT NULL COMMENT '视频时长(秒)',
  `password_enabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否开启观看密码:0否 1是',
  `watch_password` varchar(64) DEFAULT NULL COMMENT '观看密码',
  `base_reserve_count` int NOT NULL DEFAULT '0' COMMENT '基础预约量(初始刷基数)',
  `base_watch_count` int NOT NULL DEFAULT '0' COMMENT '基础观看量(初始刷基数)',
  `real_reserve_count` int NOT NULL DEFAULT '0' COMMENT '真实预约人数',
traditionalApp/pages/watchLive/watchLive.vue
@@ -2165,41 +2165,6 @@
            text-align: center;
        }
        .watch-password-gate {
            position: absolute;
            left: 0;
            top: 0;
            z-index: 4;
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background: rgba(0, 0, 0, 0.18);
        }
        .watch-password-play {
            width: 124rpx;
            height: 124rpx;
            line-height: 124rpx;
            border-radius: 62rpx;
            background: rgba(0, 0, 0, 0.68);
            color: #ffffff;
            font-size: 58rpx;
            text-align: center;
            text-indent: 8rpx;
            box-shadow: 0 16rpx 40rpx rgba(0, 0, 0, 0.24);
        }
        .watch-password-tip {
            margin-top: 20rpx;
            color: #ffffff;
            font-size: 26rpx;
            line-height: 36rpx;
            text-shadow: 0 4rpx 14rpx rgba(0, 0, 0, 0.42);
        }
        .viewer-count {
            position: absolute;
            top: 24rpx;
@@ -2310,94 +2275,6 @@
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .watch-password-modal-mask {
        position: fixed;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        z-index: 1000;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 40rpx;
        box-sizing: border-box;
        background: rgba(0, 0, 0, 0.46);
    }
    .watch-password-modal {
        width: 620rpx;
        padding: 44rpx 36rpx 32rpx;
        border-radius: 20rpx;
        background: #ffffff;
        box-sizing: border-box;
    }
    .watch-password-title {
        color: #222222;
        font-size: 34rpx;
        font-weight: 600;
        line-height: 48rpx;
        text-align: center;
    }
    .watch-password-input {
        width: 100%;
        height: 88rpx;
        margin-top: 34rpx;
        padding: 0 24rpx;
        box-sizing: border-box;
        border-radius: 12rpx;
        background: #f6f6f6;
        color: #222222;
        font-size: 30rpx;
    }
    .watch-password-placeholder {
        color: #999999;
        font-size: 30rpx;
    }
    .watch-password-error {
        margin-top: 16rpx;
        min-height: 34rpx;
        color: #C63520;
        font-size: 24rpx;
        line-height: 34rpx;
    }
    .watch-password-actions {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-top: 34rpx;
    }
    .watch-password-cancel,
    .watch-password-confirm {
        width: 260rpx;
        height: 76rpx;
        border-radius: 12rpx;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 28rpx;
    }
    .watch-password-cancel {
        background: #f2f2f2;
        color: #555555;
    }
    .watch-password-confirm {
        background: #C63520;
        color: #ffffff;
        &.disabled {
            opacity: 0.62;
        }
    }
    .answer-area {