feat: 新增归档中心页面并完善知识库与报销查询能力

新增前端归档中心视图及相关工具函数,扩充知识库文档分类和
提取器支持多种格式,增强编排器报销查询的多维度检索,优
化本体规则和用户代理审核消息,前端完善报销创建和审批详
情交互细节,补充单元测试覆盖。
This commit is contained in:
caoxiaozhu
2026-05-22 16:00:19 +08:00
parent 1f15699013
commit 88ff04bef8
120 changed files with 6236 additions and 643 deletions

View File

@@ -16,6 +16,7 @@ from app.services.knowledge_document_extractors import (
)
from app.services.knowledge_file_utils import extract_extension, format_size
def build_preview(
entry: dict[str, Any],
*,
@@ -52,7 +53,9 @@ def build_preview(
subtitle="当前格式暂不支持在线解析预览。",
stats=[
KnowledgePreviewStatRead(label="文件格式", value=extension.upper() or "FILE"),
KnowledgePreviewStatRead(label="文件大小", value=format_size(entry["size_bytes"])),
KnowledgePreviewStatRead(
label="文件大小", value=format_size(entry["size_bytes"])
),
KnowledgePreviewStatRead(label="建议操作", value="下载后查看"),
],
blocks=[
@@ -68,9 +71,8 @@ def build_preview(
],
)
def _build_text_preview_page(
entry: dict[str, Any], text: str
) -> KnowledgePreviewPageRead:
def _build_text_preview_page(entry: dict[str, Any], text: str) -> KnowledgePreviewPageRead:
lines = [line.strip() for line in text.splitlines() if line.strip()]
if not lines:
lines = ["文件内容为空,或当前文档未提取到可展示文本。"]
@@ -92,10 +94,9 @@ def _build_text_preview_page(
blocks=blocks,
)
def _build_xlsx_preview_pages(
entry: dict[str, Any], file_path
) -> list[KnowledgePreviewPageRead]:
sheets = self._extract_xlsx_sheets(file_path)
def _build_xlsx_preview_pages(entry: dict[str, Any], file_path) -> list[KnowledgePreviewPageRead]:
sheets = _extract_xlsx_sheets(file_path)
if not sheets:
sheets = [("Sheet 1", [["未提取到表格内容。"]])]
@@ -118,7 +119,9 @@ def _build_xlsx_preview_pages(
stats=[
KnowledgePreviewStatRead(label="工作表数量", value=str(sheet_count)),
KnowledgePreviewStatRead(label="预览行数", value=str(len(visible_rows))),
KnowledgePreviewStatRead(label="文件大小", value=format_size(entry["size_bytes"])),
KnowledgePreviewStatRead(
label="文件大小", value=format_size(entry["size_bytes"])
),
],
blocks=blocks,
)
@@ -126,10 +129,9 @@ def _build_xlsx_preview_pages(
return preview_pages
def _build_pptx_preview_pages(
entry: dict[str, Any], file_path
) -> list[KnowledgePreviewPageRead]:
slides = self._extract_pptx_slides(file_path)
def _build_pptx_preview_pages(entry: dict[str, Any], file_path) -> list[KnowledgePreviewPageRead]:
slides = _extract_pptx_slides(file_path)
if not slides:
slides = [["未提取到幻灯片文本。"]]
@@ -154,4 +156,3 @@ def _build_pptx_preview_pages(
)
return pages