# dev-test **Repository Path**: l-maverick/dev-test ## Basic Information - **Project Name**: dev-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-30 - **Last Updated**: 2025-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 任务生成器和处理器 为task-operator提供完整的测试工具集,包括任务生成和处理功能。 ## 🚀 功能概述 ### 任务生成器 (`generator.py`) - **三种模式**: basic(标准)、random(随机)、custom(自定义) - **随机化字段**: CreatedAt、UserLevel、Priority、Deadline - **DICOM标准**: 正确的Study-Series关联关系 - **统计输出**: 用户级别分布、任务类型分布、Study-Series分布 - **文件输出**: 单独文件、合并文件、摘要文件 ### 任务处理器 (`processor.py`) - **一次性处理**: 处理当前所有Scheduled任务 - **持续处理**: 循环检查并处理新的Scheduled任务 - **状态更新**: 自动将任务状态从Scheduled更新为Completed ## 📦 快速开始 ### 生成任务 ```bash # 基础模式 - 生成5个标准任务 python3 generator.py # 随机模式 - 生成10个随机化任务 python3 generator.py --mode random --count 10 # 自定义模式 - 从JSON文件生成任务 python3 generator.py --mode custom --custom-tasks custom_tasks.json --config custom_config.yaml ``` ### 处理任务 ```bash # 一次性处理所有Scheduled任务 python3 processor.py # 持续运行,监控并处理新任务 python3 processor.py --continuous ``` ### 完整工作流 ```bash # 1. 生成任务 python3 generator.py --count 5 # 2. 应用到集群 kubectl apply -f generated_tasks/all_tasks.yaml # 3. 处理任务 python3 processor.py # 4. 查看结果 kubectl get tasks ``` ## ⚙️ 配置文件 ### 主配置 (`config.yaml`) ```yaml # 基础设置 task_count: 5 task_name_prefix: "task" base_study_uid: "1.2.840.113619.2.5.1762583153.215519.978957063" base_series_uid: "1.2.840.113619.2.5.1762583153.215519.978957063" # Study-Series关系配置 studies_per_batch: 2 # 生成的Study数量 series_per_study: 3 # 每个Study包含的Series数量 # 任务配置 common_config: user: "testuser" user_level: "standard" task_type: "lung-nodule" priority: 50 # 随机化选项 randomization: randomize_created_at: true randomize_user_level: true ``` ### 自定义任务列表 (`custom_tasks.json`) ```json [ { "name": "heart-task-001", "study_uid": "1.2.840.113619.2.5.1762583153.215519.978957063.01", "series_uid": "1.2.840.113619.2.5.1762583153.215519.978957063.01.001" } ] ``` ## 🏥 Study-Series关系 根据DICOM标准,生成器正确处理Study和Series的层级关系: ### Study(研究) - 代表一次完整的医学检查 - 一个患者可以有多个Study - 每个Study有唯一的`studyInstanceUID` ### Series(序列) - 代表同一次检查中的不同扫描序列 - 一个Study包含多个Series - 每个Series有唯一的`seriesInstanceUID` ### 配置示例 ```yaml # 生成6个任务,分布在2个Study中,每个Study包含3个Series task_count: 6 studies_per_batch: 2 # 2个Study series_per_study: 3 # 每个Study 3个Series # 结果: # Study-01: Series-001, Series-002, Series-003 # Study-02: Series-001, Series-002, Series-003 # 任务随机分配到这些Study-Series组合中 ``` ## 🎛️ 命令行选项 ### 生成器选项 ```bash python3 generator.py [选项] 基本参数: --mode {basic,random,custom} 生成模式 (默认: basic) --config FILE 配置文件 (默认: config.yaml) --output DIR 输出目录 (默认: generated_tasks) --count N 任务数量 随机化控制: --no-random-user-level 禁用用户级别随机化 --no-random-created-at 禁用创建时间随机化 --no-random-priority 禁用优先级随机化 --random-deadline 启用截止时间随机化 --days-back N 创建时间回溯天数 (默认: 30) 自定义模式: --custom-tasks FILE 自定义任务JSON文件 ``` ### 处理器选项 ```bash python3 processor.py [选项] --continuous, -c 持续运行模式 ``` ## 📁 文件结构 ``` dev-test/ ├── generator.py # 任务生成器 ├── processor.py # 任务处理器 ├── test.py # 测试脚本 ├── config.yaml # 主配置文件 ├── brain_config.yaml # 脑部任务配置示例 ├── custom_config.yaml # 自定义任务配置 ├── custom_tasks.json # 自定义任务列表 ├── examples/ # CRD示例文件 └── README.md # 说明文档 ``` ## 🎲 随机化功能 ### CreatedAt (创建时间) - 在指定天数内随机生成过去时间 - 格式: `2025-05-20T14:30:25Z` ### UserLevel (用户级别) - 随机选择: `["free", "standard", "premium", "enterprise"]` - 基于task-operator的用户层级定义 ### Priority (优先级) - 可配置范围的随机整数 (默认: 1-100) ### Deadline (截止时间) - 可选的未来时间随机生成 ## 📊 输出文件 生成器会创建以下文件: - `task_*.yaml` - 单独的任务文件 - `all_tasks.yaml` - 合并的所有任务 (用`---`分隔) - `summary.yaml` - 生成摘要和统计信息 摘要文件包含: - 生成时间和模式 - Study-Series分布统计 - 用户级别分布统计 - 任务类型分布统计 - 优先级统计 (随机模式) - 所有任务的详细信息 ## 🧪 测试 运行测试脚本验证功能: ```bash python3 test.py ``` 测试包括: - 基础模式生成测试 - 随机模式生成测试 - 自定义模式生成测试 ## 🔗 与Kubernetes集成 ```bash # 应用单个任务 kubectl apply -f generated_tasks/task_task-001.yaml # 应用所有任务 kubectl apply -f generated_tasks/all_tasks.yaml # 查看任务状态 kubectl get tasks.yingyitech.net # 查看特定任务详情 kubectl describe task task-001 ``` ## 🛠️ 高级用法 ### Study-Series配置示例 **肺部CT检查**: ```yaml # 肺部任务 - 模拟胸部CT的不同序列 studies_per_batch: 1 # 1个胸部CT检查 series_per_study: 4 # 4个序列: 平扫、动脉期、静脉期、延迟期 ``` **脑部MRI检查**: ```yaml # 脑部任务 - 模拟脑部MRI的不同序列 studies_per_batch: 2 # 2个脑部MRI检查 series_per_study: 5 # 5个序列: T1、T2、FLAIR、DWI、T1+C ``` **多器官检查**: ```yaml # 全身检查 - 模拟多器官CT检查 studies_per_batch: 3 # 3个检查部位 series_per_study: 2 # 每个部位2个序列: 平扫、增强 ``` ### 扩展任务参数 在配置文件中添加自定义参数: ```yaml common_config: custom_parameters: model_version: "v2.1" gpu_required: true memory_limit: "8Gi" timeout: "30m" slice_thickness: "1.25mm" reconstruction_kernel: "B30f" ``` ### 批量生成不同类型任务 ```bash # 肺部任务 python3 generator.py --config config.yaml --output lung_tasks # 脑部任务 python3 generator.py --config brain_config.yaml --output brain_tasks # 自定义多器官任务 python3 generator.py --mode custom --custom-tasks custom_tasks.json --config custom_config.yaml --output multi_organ_tasks ``` ### 性能测试场景 ```bash # 大量随机任务用于压力测试 python3 generator.py --mode random --count 100 --output stress_test # 不同优先级分布的任务 python3 generator.py --mode random --count 50 --no-random-user-level --output priority_test ``` ## ❗ 注意事项 1. **依赖**: 需要安装 `pyyaml` (`pip install pyyaml`) 2. **kubectl**: 处理器需要kubectl命令和集群访问权限 3. **权限**: 需要对Task CRD资源的读写权限 4. **用户级别**: 必须使用有效值 `["free", "standard", "premium", "enterprise"]` 5. **DICOM UID**: Study和Series UID遵循DICOM标准的层级关系 ## 🚧 故障排除 - **文件不存在**: 检查配置文件路径是否正确 - **权限错误**: 确保脚本有执行权限 (`chmod +x *.py`) - **kubectl错误**: 检查集群连接和Task CRD是否已安装 - **JSON格式错误**: 验证自定义任务JSON文件格式 - **UID格式错误**: 确保Study和Series UID符合DICOM标准格式