feat(ci): 代码质量深度加固 - mypy/ruff/vulture 接入
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 35s
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1533h49m24s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1533h49m25s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1533h49m25s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1533h49m26s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1534h21m3s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1534h21m5s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 35s
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1533h49m24s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1533h49m25s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1533h49m25s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1533h49m26s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1533h49m27s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1534h21m3s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1534h21m5s
- ruff 替换 flake8:增加 bugbear/pyupgrade/simplify/return 等规则集 * 自动修复34个问题(未使用import/格式等) * 手动修复10个F841未使用变量 + 2个E722裸except - mypy 类型检查:告警模式接入Validate,不阻断CI * 检查范围:apps/api/app + packages核心业务代码 * 配置:ignore-missing-imports + explicit-package-bases - vulture 死代码扫描升级: * 置信度阈值从80%降到70%,输出更多参考 * 按size排序,便于人工审查高价值条目 * 告警模式不阻断CI - 新增 pyproject.toml:ruff 集中配置 - 修复F841未使用变量(10处)+ E722裸except(2处)
This commit is contained in:
Executable → Regular
-2
@@ -88,14 +88,12 @@ def prepare_bgm_track(
|
||||
|
||||
# 构建滤镜链
|
||||
filter_parts: list[str] = []
|
||||
input_looped: bool = False
|
||||
|
||||
if needs_loop:
|
||||
# 计算需要循环多少次才能铺满
|
||||
loop_count = max(1, int(target_duration / bgm_dur) + 2)
|
||||
# aloop 滤镜:循环指定次数
|
||||
filter_parts.append(f"aloop=loop={loop_count}:size=0")
|
||||
input_looped = True
|
||||
|
||||
# 音量调节
|
||||
volume = max(0.0, min(1.0, bgm.volume))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from dataclasses import dataclass, field
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -18,10 +18,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import tempfile
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from video_processing.ffmpeg_utils import FFMPEG_BIN, probe_duration, probe_video_info, run_ffmpeg
|
||||
|
||||
|
||||
@@ -160,7 +160,6 @@ class IntroOutroEngine:
|
||||
是否成功
|
||||
"""
|
||||
duration = config.intro_duration
|
||||
bg = config.intro_background.lstrip("#")
|
||||
|
||||
# 转义文字
|
||||
title = config.intro_title.replace(":", "\\:").replace("'", "\\'")
|
||||
@@ -357,7 +356,6 @@ class IntroOutroEngine:
|
||||
只传了片头或片尾也可以,缺失的自动跳过。
|
||||
"""
|
||||
# 收集所有片段
|
||||
segments: list[tuple[Path, float]] = [] # (path, duration)
|
||||
|
||||
# 简单探测时长(用 ffprobe,这里简化处理:直接用 xfade 的 offset)
|
||||
# 先添加到列表
|
||||
|
||||
@@ -156,7 +156,6 @@ def mix_audio(
|
||||
from video_processing.bgm_mixer import BGMConfig, mix_bgm_with_main
|
||||
|
||||
bgm_cfg = BGMConfig.from_config_dict(bgm_path, bgm_config)
|
||||
bgm_output = ctx.work_dir / f"audio_with_bgm_{ctx.plan_id}.aac"
|
||||
|
||||
try:
|
||||
# 这里 main_audio 就是 output_path,先有主音频再混 BGM
|
||||
|
||||
@@ -24,12 +24,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from dataclasses import dataclass, field
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from video_processing.render_subtitles import generate_ass_subtitles
|
||||
from video_processing.subtitle_generator import generate_ass_from_timeline
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ from video_processing.pip_engine import PiPConfig, PiPEngine, PiPLayerConfig
|
||||
from video_processing.render_audio import RenderContext, merge_audio_video, mix_audio
|
||||
from video_processing.render_subtitles import generate_ass_subtitles
|
||||
from video_processing.reverse_engine import ReverseConfig, ReverseEngine
|
||||
from video_processing.speed_engine import SpeedConfig, SpeedEngine
|
||||
from video_processing.speed_engine import SpeedEngine
|
||||
from video_processing.sticker_engine import StickerEngine
|
||||
from video_processing.subtitle_generator import generate_ass_from_timeline
|
||||
from video_processing.transition_engine import TransitionEngine
|
||||
|
||||
@@ -243,7 +243,6 @@ class WatermarkEngine:
|
||||
|
||||
# 构建滤镜
|
||||
# 先缩放水印图
|
||||
wm_input_idx = 1 # 假设水印图是第二个输入(索引1
|
||||
filter_parts = [
|
||||
f"[1:v]{wm_filter}{wm_pre_label}",
|
||||
f"{input_video_label}{wm_pre_label}overlay={overlay_expr}{output_label}",
|
||||
|
||||
Reference in New Issue
Block a user