切换演示数据到 demo 目录
- 默认演示视频和 DICOM 路径改为 demo/演视LC视频序列.mp4 与 demo/演视DICOM序列/。 - 演示 DICOM 项目名统一为“演视DICOM序列”,并兼容迁移旧“演示DICOM序列”名称。 - 恢复演示出厂设置测试改为验证新文件名上传路径和新项目名。 - 同步更新用户管理提示、API 契约、安装文档、实现地图和项目指南。 - 本地与 ../Seg_Server_Docker 已实际放入 demo 演示视频和 DICOM 测试影像;数据文件受 .gitignore 保护不进入提交。
This commit is contained in:
@@ -38,8 +38,8 @@ class Settings(BaseSettings):
|
||||
access_token_expire_minutes: int = 60 * 24
|
||||
default_admin_username: str = "admin"
|
||||
default_admin_password: str = "123456"
|
||||
demo_video_path: str = "/home/wkmgc/Desktop/Seg_Server/Data_MyVideo_1.mp4"
|
||||
demo_dicom_dir: str = "/home/wkmgc/Desktop/Seg_Server/2024_2_5_王芳/※2F458C45CFAA4C7CB76A39AA2BFE436B"
|
||||
demo_video_path: str = "/home/wkmgc/Desktop/Seg_Server/demo/演视LC视频序列.mp4"
|
||||
demo_dicom_dir: str = "/home/wkmgc/Desktop/Seg_Server/demo/演视DICOM序列"
|
||||
|
||||
class Config:
|
||||
env_file = ".env"
|
||||
|
||||
@@ -68,6 +68,7 @@ def _seed_default_project_sync() -> None:
|
||||
from services.demo_media import (
|
||||
DEMO_DICOM_PROJECT_NAME,
|
||||
DEMO_VIDEO_PROJECT_NAME,
|
||||
LEGACY_DEMO_DICOM_PROJECT_NAMES,
|
||||
LEGACY_DEMO_VIDEO_PROJECT_NAMES,
|
||||
create_parsed_dicom_demo_project,
|
||||
create_unparsed_video_demo_project,
|
||||
@@ -85,6 +86,14 @@ def _seed_default_project_sync() -> None:
|
||||
if legacy_video is not None:
|
||||
legacy_video.name = DEMO_VIDEO_PROJECT_NAME
|
||||
db.commit()
|
||||
legacy_dicom = (
|
||||
db.query(Project)
|
||||
.filter(Project.name.in_(LEGACY_DEMO_DICOM_PROJECT_NAMES))
|
||||
.first()
|
||||
)
|
||||
if legacy_dicom is not None:
|
||||
legacy_dicom.name = DEMO_DICOM_PROJECT_NAME
|
||||
db.commit()
|
||||
existing_video = db.query(Project).filter(Project.name == DEMO_VIDEO_PROJECT_NAME).first()
|
||||
if existing_video is None and os.path.exists(settings.demo_video_path):
|
||||
video_project = create_unparsed_video_demo_project(
|
||||
|
||||
@@ -15,10 +15,11 @@ from models import Frame, Project, User
|
||||
from services.frame_parser import natural_filename_key, parse_dicom, upload_frames_to_minio
|
||||
from statuses import PROJECT_STATUS_PENDING, PROJECT_STATUS_READY
|
||||
|
||||
DEMO_DICOM_PROJECT_NAME = "演示DICOM序列"
|
||||
DEMO_DICOM_PROJECT_NAME = "演视DICOM序列"
|
||||
DEMO_DICOM_PARSE_FPS = 30.0
|
||||
DEMO_VIDEO_PROJECT_NAME = "演视LC视频序列"
|
||||
LEGACY_DEMO_VIDEO_PROJECT_NAMES = {"Data_MyVideo_1"}
|
||||
LEGACY_DEMO_DICOM_PROJECT_NAMES = {"演示DICOM序列"}
|
||||
|
||||
|
||||
def demo_dicom_files(dicom_dir: str) -> list[Path]:
|
||||
|
||||
@@ -118,7 +118,7 @@ def test_admin_cannot_delete_self_but_can_delete_project_author(client, db_sessi
|
||||
|
||||
|
||||
def test_demo_factory_reset_leaves_admin_and_parsed_demo_dicom(client, db_session, monkeypatch, tmp_path):
|
||||
video_path = tmp_path / "Data_MyVideo_1.mp4"
|
||||
video_path = tmp_path / "演视LC视频序列.mp4"
|
||||
video_path.write_bytes(b"demo-video")
|
||||
monkeypatch.setattr("routers.admin.settings.demo_video_path", str(video_path))
|
||||
dicom_dir = tmp_path / "dicom"
|
||||
@@ -189,12 +189,12 @@ def test_demo_factory_reset_leaves_admin_and_parsed_demo_dicom(client, db_sessio
|
||||
data = response.json()
|
||||
assert data["message"] == "演示环境已恢复出厂设置"
|
||||
assert data["admin_user"]["username"] == "admin"
|
||||
assert data["project"]["name"] == "演示DICOM序列"
|
||||
assert data["project"]["name"] == "演视DICOM序列"
|
||||
assert data["project"]["status"] == PROJECT_STATUS_READY
|
||||
assert data["project"]["source_type"] == "dicom"
|
||||
assert data["project"]["frame_count"] == 3
|
||||
assert data["project"]["video_path"] == f"uploads/{data['project']['id']}/dicom"
|
||||
assert [project["name"] for project in data["projects"]] == ["演视LC视频序列", "演示DICOM序列"]
|
||||
assert [project["name"] for project in data["projects"]] == ["演视LC视频序列", "演视DICOM序列"]
|
||||
assert data["projects"][0]["status"] == "pending"
|
||||
assert data["projects"][0]["source_type"] == "video"
|
||||
assert data["projects"][0]["frame_count"] == 0
|
||||
@@ -202,7 +202,7 @@ def test_demo_factory_reset_leaves_admin_and_parsed_demo_dicom(client, db_sessio
|
||||
assert data["projects"][1]["source_type"] == "dicom"
|
||||
assert data["projects"][1]["frame_count"] == 3
|
||||
assert [item["object_name"] for item in uploaded] == [
|
||||
f"uploads/{data['projects'][0]['id']}/Data_MyVideo_1.mp4",
|
||||
f"uploads/{data['projects'][0]['id']}/演视LC视频序列.mp4",
|
||||
f"uploads/{data['project']['id']}/dicom/1.dcm",
|
||||
f"uploads/{data['project']['id']}/dicom/2.dcm",
|
||||
f"uploads/{data['project']['id']}/dicom/10.dcm",
|
||||
|
||||
Reference in New Issue
Block a user