Files
kplam fdb664e546 refactor: 统一代码格式,调整多行代码换行风格
对多个文件进行代码格式化调整,将长行参数拆分为多行书写,提升代码可读性,包括:
- 调整函数定义、调用的多行换行格式
- 优化列表、元组、字典的多行排版
- 新增README.md项目说明文档
2026-07-30 14:25:12 +08:00

58 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""文档和总结相关的数据模型"""
from enum import StrEnum
from pydantic import BaseModel, Field
class SummaryLevel(StrEnum):
"""总结层级"""
L3 = "L3" # 完整三级:总结 → 大纲 → 内容大纲
L2_HALF = "L2.5" # 2.5 级回退:总结 → 内容大纲(跳过大纲)
class DocumentSummary(BaseModel):
"""文档三级总结结果"""
l1_summary: str = Field(description="L1 总结:一句话高度概括")
l2_outline: str | None = Field(
default=None, description="L2 大纲:主要章节和关键主题"
)
l3_content_outline: str = Field(description="L3/L2.5 内容大纲:详细内容摘要")
level: SummaryLevel = Field(description="实际使用的总结层级")
class DocumentInput(BaseModel):
"""文档入库输入"""
text: str = Field(description="文档纯文本内容")
title: str = Field(default="", description="文档标题")
source: str = Field(default="", description="来源标识(文件路径/URL等)")
metadata: dict[str, str] = Field(default_factory=dict, description="附加元数据")
class ChunkModel(BaseModel):
"""文档分块结果"""
doc_id: str = Field(description="所属文档 ID")
chunk_index: int = Field(description="chunk 在文档内的序号")
text: str = Field(description="chunk 文本内容")
section_path: str = Field(default="", description="chunk 所在的章节路径")
class IngestionResult(BaseModel):
"""文档入库结果"""
document_id: str = Field(description="写入后的文档 ID")
summary: DocumentSummary = Field(description="三级总结结果")
category: str = Field(description="分类标签(主类目)")
collection: str = Field(description="写入的 Qdrant 集合名")
chunks_count: int = Field(default=0, description="写入的 chunk 数量")
tags: list[str] = Field(default_factory=list, description="附加分类标签")
category_confidence: float = Field(default=0.0, description="主类目分类置信度")
deduplicated: bool = Field(
default=False,
description="是否命中去重复用旧文档(True 时 document_id 为既有文档 ID",
)