本次同步 09-12 至 09-28 的代码变更,主要内容: 新增功能 - 修改密码:后端新增 ChangePasswordRequest DTO 与UserController/UserService 对应接口,前端新增 ChangePasswordDialog 并在 Header 接入入口 - 文件预览组件重构:file-preview 目录拆分出 VideoPreview(支持 blobUrl 直传)、 ImagePreview、AudioPreview,index.tsx 统一调度各类型预览器 - 新增 my_ops 算子模块:markitdown_parser、mineru_pdf_parser、text_quality_evaluator - 新增 tools/minio-file-server MinIO 文件服务 功能增强 - 数据清洗:cleaning_task_service/scheduler/routes 重构, data_juicer_executor 与 wrapper 增强,OperatorTable/LogsTable/TaskDetail 同步调整 - 数据标注:annotation sync.py、project.py 接口与schema 更新 - 数据采集、算子市场、首页与菜单路由相关页面调整 - DataJuicer 算子接入(useOperatorOperations、dj_ops_schema) 结构调整 - deepflow/ 更名为 deep-flow/(419 个文件重命名) - 新增 helm 部署编排、GitHub Actions 之外的自建镜像构建脚本 未纳入本次提交 - scripts-backup/、runtime/python-executor-backup/、components_backup/(备份目录) - *.backup*、__pycache__ 产物 - zh_core_web_sm-3.8.0-py3-none-any.whl(46MB 构建产物) - DataX/(内嵌独立仓库,远程亦未收录其源码)
108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
from src.config.report_style import ReportStyle
|
|
from src.prompt_enhancer.graph.state import PromptEnhancerState
|
|
|
|
|
|
def test_prompt_enhancer_state_creation():
|
|
"""Test that PromptEnhancerState can be created with required fields."""
|
|
state = PromptEnhancerState(
|
|
prompt="Test prompt", context=None, report_style=None, output=None
|
|
)
|
|
|
|
assert state["prompt"] == "Test prompt"
|
|
assert state["context"] is None
|
|
assert state["report_style"] is None
|
|
assert state["output"] is None
|
|
|
|
|
|
def test_prompt_enhancer_state_with_all_fields():
|
|
"""Test PromptEnhancerState with all fields populated."""
|
|
state = PromptEnhancerState(
|
|
prompt="Write about AI",
|
|
context="Additional context about AI research",
|
|
report_style=ReportStyle.ACADEMIC,
|
|
output="Enhanced prompt about AI research",
|
|
)
|
|
|
|
assert state["prompt"] == "Write about AI"
|
|
assert state["context"] == "Additional context about AI research"
|
|
assert state["report_style"] == ReportStyle.ACADEMIC
|
|
assert state["output"] == "Enhanced prompt about AI research"
|
|
|
|
|
|
def test_prompt_enhancer_state_minimal():
|
|
"""Test PromptEnhancerState with only required prompt field."""
|
|
state = PromptEnhancerState(prompt="Minimal prompt")
|
|
|
|
assert state["prompt"] == "Minimal prompt"
|
|
# Optional fields should not be present if not specified
|
|
assert "context" not in state
|
|
assert "report_style" not in state
|
|
assert "output" not in state
|
|
|
|
|
|
def test_prompt_enhancer_state_with_different_report_styles():
|
|
"""Test PromptEnhancerState with different ReportStyle values."""
|
|
styles = [
|
|
ReportStyle.ACADEMIC,
|
|
ReportStyle.POPULAR_SCIENCE,
|
|
ReportStyle.NEWS,
|
|
ReportStyle.SOCIAL_MEDIA,
|
|
]
|
|
|
|
for style in styles:
|
|
state = PromptEnhancerState(prompt="Test prompt", report_style=style)
|
|
assert state["report_style"] == style
|
|
|
|
|
|
def test_prompt_enhancer_state_update():
|
|
"""Test updating PromptEnhancerState fields."""
|
|
state = PromptEnhancerState(prompt="Original prompt")
|
|
|
|
# Update with new fields
|
|
state.update(
|
|
{
|
|
"context": "New context",
|
|
"report_style": ReportStyle.NEWS,
|
|
"output": "Enhanced output",
|
|
}
|
|
)
|
|
|
|
assert state["prompt"] == "Original prompt"
|
|
assert state["context"] == "New context"
|
|
assert state["report_style"] == ReportStyle.NEWS
|
|
assert state["output"] == "Enhanced output"
|
|
|
|
|
|
def test_prompt_enhancer_state_get_method():
|
|
"""Test using get() method on PromptEnhancerState."""
|
|
state = PromptEnhancerState(prompt="Test prompt", report_style=ReportStyle.ACADEMIC)
|
|
|
|
# Test get with existing keys
|
|
assert state.get("prompt") == "Test prompt"
|
|
assert state.get("report_style") == ReportStyle.ACADEMIC
|
|
|
|
# Test get with non-existing keys
|
|
assert state.get("context") is None
|
|
assert state.get("output") is None
|
|
assert state.get("nonexistent", "default") == "default"
|
|
|
|
|
|
def test_prompt_enhancer_state_type_annotations():
|
|
"""Test that the state accepts correct types."""
|
|
# This test ensures the TypedDict structure is working correctly
|
|
state = PromptEnhancerState(
|
|
prompt="Test prompt",
|
|
context="Test context",
|
|
report_style=ReportStyle.POPULAR_SCIENCE,
|
|
output="Test output",
|
|
)
|
|
|
|
# Verify types
|
|
assert isinstance(state["prompt"], str)
|
|
assert isinstance(state["context"], str)
|
|
assert isinstance(state["report_style"], ReportStyle)
|
|
assert isinstance(state["output"], str)
|