feat(13-01): implement video type detection and Pydantic models

- 创建 SemanticSegmentationEngine 类
- 实现 VideoSegment 和 SegmentationResult Pydantic 模型
  - VideoSegment: title(可选), content(必填), start_index, end_index
  - SegmentationResult: video_type, segments[], actual_segment_count
  - 添加标题长度验证器(5-15字)
- 实现 _infer_video_type() 方法
  - 从元数据推断视频类型(知识类/故事类/访谈类/新闻类/vlog)
  - 支持从 title, category, tags 推断
  - 默认类型为"知识类"
- 实现 _build_prompt() 方法
  - 包含视频类型信息
  - 包含完整的分段要求(数量控制、句边界保护、标题生成等)
  - 包含 JSON 输出格式规范
- 添加 extract_json_from_llm_response() 工具函数
- 添加 AIClientProtocol 协议定义
- 添加 deferred-items.md 记录超出范围的测试

所有计划 13-01 测试通过(10个测试)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-22 00:25:21 +08:00
parent 8c2b3e079a
commit 00319f523f
3 changed files with 195 additions and 15 deletions
+3
View File
@@ -1,11 +1,14 @@
"""测试语义分段引擎"""
from typing import Protocol
import pytest
import json
from unittest.mock import Mock
from pydantic import ValidationError
from kb_workflow.srt.parser import Segment
from kb_workflow.srt.semantic_engine import (
extract_json_from_llm_response,
VideoSegment,
SegmentationResult,
SemanticSegmentationEngine