Lan hai 3 meses
pai
achega
c23c021f53
Modificáronse 100 ficheiros con 391 adicións e 236 borrados
  1. BIN=BIN
      backend/api/__pycache__/api_calculate.cpython-310.pyc
  2. BIN=BIN
      backend/api/__pycache__/api_prepare.cpython-310.pyc
  3. BIN=BIN
      backend/api/__pycache__/api_rawDataTrans.cpython-310.pyc
  4. BIN=BIN
      backend/api/__pycache__/api_results.cpython-310.pyc
  5. BIN=BIN
      backend/api/__pycache__/urls.cpython-310.pyc
  6. 19 3
      backend/api/api_calculate.py
  7. 19 3
      backend/api/api_prepare.py
  8. 39 20
      backend/api/api_rawDataTrans.py
  9. 47 0
      backend/api/api_results.py
  10. 18 0
      backend/api/migrations/0014_result_progress.py
  11. 27 0
      backend/api/migrations/0015_mission_state.py
  12. 36 0
      backend/api/migrations/0016_alter_result_edgefile_alter_result_nodefile.py
  13. BIN=BIN
      backend/api/migrations/__pycache__/0014_result_progress.cpython-310.pyc
  14. BIN=BIN
      backend/api/migrations/__pycache__/0015_mission_state.cpython-310.pyc
  15. BIN=BIN
      backend/api/migrations/__pycache__/0016_alter_result_edgefile_alter_result_nodefile.cpython-310.pyc
  16. BIN=BIN
      backend/api/models/__pycache__/mission.cpython-310.pyc
  17. BIN=BIN
      backend/api/models/__pycache__/result.cpython-310.pyc
  18. 7 0
      backend/api/models/mission.py
  19. 3 2
      backend/api/models/result.py
  20. 2 0
      backend/api/urls.py
  21. BIN=BIN
      backend/backend/__pycache__/settings.cpython-310.pyc
  22. 1 1
      backend/backend/settings.py
  23. BIN=BIN
      backend/db.sqlite3
  24. BIN=BIN
      scheduler/__pycache__/processManager.cpython-310.pyc
  25. BIN=BIN
      scheduler/__pycache__/utils.cpython-310.pyc
  26. 49 12
      scheduler/algo1Folder/controller.py
  27. 4 1
      scheduler/algorithms.config
  28. 17 0
      scheduler/processManager.py
  29. 0 0
      scheduler/process_logs/proc_20250314-122720_21672.stdout
  30. 0 4
      scheduler/process_logs/proc_20250314-131018_23328.stderr
  31. 0 0
      scheduler/process_logs/proc_20250314-131445_2244.stdout
  32. 0 0
      scheduler/process_logs/proc_20250314-131816_5064.stdout
  33. 0 0
      scheduler/process_logs/proc_20250314-131846_23104.stdout
  34. 0 0
      scheduler/process_logs/proc_20250314-132125_22824.stdout
  35. 0 0
      scheduler/process_logs/proc_20250314-132211_21016.stdout
  36. 0 0
      scheduler/process_logs/proc_20250314-132643_16624.stdout
  37. 0 0
      scheduler/process_logs/proc_20250314-132924_17736.stdout
  38. 0 0
      scheduler/process_logs/proc_20250314-133025_23080.stdout
  39. 0 0
      scheduler/process_logs/proc_20250314-133241_11560.stdout
  40. 0 0
      scheduler/process_logs/proc_20250314-133325_21976.stdout
  41. 0 0
      scheduler/process_logs/proc_20250314-133412_14952.stdout
  42. 0 0
      scheduler/process_logs/proc_20250314-133756_21976.stdout
  43. 0 0
      scheduler/process_logs/proc_20250314-133849_14716.stdout
  44. 0 0
      scheduler/process_logs/proc_20250314-134245_21460.stdout
  45. 0 0
      scheduler/process_logs/proc_20250314-173349_6064.stdout
  46. 0 0
      scheduler/process_logs/proc_20250314-173439_22268.stdout
  47. 0 0
      scheduler/process_logs/proc_20250314-173520_26980.stdout
  48. 0 19
      scheduler/process_logs/proc_20250314-202356_21188.stderr
  49. 0 0
      scheduler/process_logs/proc_20250314-202356_21188.stdout
  50. 0 19
      scheduler/process_logs/proc_20250314-202532_23332.stderr
  51. 0 0
      scheduler/process_logs/proc_20250314-202532_23332.stdout
  52. 0 19
      scheduler/process_logs/proc_20250314-202630_12712.stderr
  53. 0 0
      scheduler/process_logs/proc_20250314-202630_12712.stdout
  54. 0 19
      scheduler/process_logs/proc_20250314-202708_23032.stderr
  55. 0 0
      scheduler/process_logs/proc_20250314-202708_23032.stdout
  56. 0 19
      scheduler/process_logs/proc_20250314-203023_23960.stderr
  57. 0 0
      scheduler/process_logs/proc_20250314-203023_23960.stdout
  58. 0 19
      scheduler/process_logs/proc_20250314-203045_1296.stderr
  59. 0 0
      scheduler/process_logs/proc_20250314-203045_1296.stdout
  60. 0 19
      scheduler/process_logs/proc_20250314-203221_23172.stderr
  61. 0 0
      scheduler/process_logs/proc_20250314-203221_23172.stdout
  62. 0 19
      scheduler/process_logs/proc_20250314-203511_11932.stderr
  63. 0 0
      scheduler/process_logs/proc_20250314-203511_11932.stdout
  64. 0 19
      scheduler/process_logs/proc_20250314-203635_27576.stderr
  65. 0 0
      scheduler/process_logs/proc_20250314-203635_27576.stdout
  66. 0 19
      scheduler/process_logs/proc_20250314-203807_11648.stderr
  67. 0 0
      scheduler/process_logs/proc_20250314-203807_11648.stdout
  68. 0 0
      scheduler/process_logs/proc_20250314-203854_25892.stdout
  69. 0 0
      scheduler/process_logs/proc_20250314-204019_14544.stdout
  70. 0 0
      scheduler/process_logs/proc_20250314-204054_22384.stdout
  71. 0 0
      scheduler/process_logs/proc_20250317-013433_23464.stderr
  72. 7 0
      scheduler/process_logs/proc_20250317-013433_23464.stdout
  73. 0 0
      scheduler/process_logs/proc_20250317-013437_23464.stderr
  74. 7 0
      scheduler/process_logs/proc_20250317-013437_23464.stdout
  75. 0 0
      scheduler/process_logs/proc_20250317-013442_23464.stderr
  76. 7 0
      scheduler/process_logs/proc_20250317-013442_23464.stdout
  77. 0 0
      scheduler/process_logs/proc_20250317-221515_20996.stderr
  78. 7 0
      scheduler/process_logs/proc_20250317-221515_20996.stdout
  79. 0 0
      scheduler/process_logs/proc_20250317-221519_20996.stderr
  80. 7 0
      scheduler/process_logs/proc_20250317-221519_20996.stdout
  81. 0 0
      scheduler/process_logs/proc_20250317-221523_20996.stderr
  82. 7 0
      scheduler/process_logs/proc_20250317-221523_20996.stdout
  83. 0 0
      scheduler/process_logs/proc_20250317-234036_20996.stderr
  84. 7 0
      scheduler/process_logs/proc_20250317-234036_20996.stdout
  85. 0 0
      scheduler/process_logs/proc_20250317-234041_20996.stderr
  86. 7 0
      scheduler/process_logs/proc_20250317-234041_20996.stdout
  87. 0 0
      scheduler/process_logs/proc_20250317-234045_20996.stderr
  88. 7 0
      scheduler/process_logs/proc_20250317-234045_20996.stdout
  89. 0 0
      scheduler/process_logs/proc_20250317-234142_20996.stderr
  90. 6 0
      scheduler/process_logs/proc_20250317-234142_20996.stdout
  91. 0 0
      scheduler/process_logs/proc_20250317-234353_20996.stderr
  92. 7 0
      scheduler/process_logs/proc_20250317-234353_20996.stdout
  93. 0 0
      scheduler/process_logs/proc_20250317-234357_20996.stderr
  94. 7 0
      scheduler/process_logs/proc_20250317-234357_20996.stdout
  95. 0 0
      scheduler/process_logs/proc_20250317-234634_20996.stderr
  96. 6 0
      scheduler/process_logs/proc_20250317-234634_20996.stdout
  97. 0 0
      scheduler/process_logs/proc_20250317-234714_20996.stderr
  98. 7 0
      scheduler/process_logs/proc_20250317-234714_20996.stdout
  99. 0 0
      scheduler/process_logs/proc_20250317-234718_20996.stderr
  100. 7 0
      scheduler/process_logs/proc_20250317-234718_20996.stdout

BIN=BIN
backend/api/__pycache__/api_calculate.cpython-310.pyc


BIN=BIN
backend/api/__pycache__/api_prepare.cpython-310.pyc


BIN=BIN
backend/api/__pycache__/api_rawDataTrans.cpython-310.pyc


BIN=BIN
backend/api/__pycache__/api_results.cpython-310.pyc


BIN=BIN
backend/api/__pycache__/urls.cpython-310.pyc


+ 19 - 3
backend/api/api_calculate.py

@@ -33,6 +33,16 @@ class CalculateAPI(APIView):
       print("处理任务控制代码错误")
       return failed(message="处理任务控制失败,控制代码错误")
 
+    if command == 'start':
+      # 如任务已经启动,则不操作
+      if not mission.state in ['init', 'pause']:
+        return success(message="任务正在进行中")
+      if mission.state in ['done']:
+        return success(message="任务已完成")
+    else:
+      # 非启动任务需要检查任务是否已经开始
+      if not mission.state == 'calculating':
+        return failed(message="任务没有在运行,无法暂停或停止")
     # 向调度程序提交计算任务
     # mission = request.json['mission']
     # plans = request.json['plans']
@@ -74,6 +84,12 @@ class CalculateAPI(APIView):
             'children': [child.id for child in children],
           })
         rootPlans.extend(children)
-    requests.post(SCHEDULER_BASE_URL + '/addMission', json=calculateData)
-    
-    return success(message="成功启动计算")
+    response = requests.post(SCHEDULER_BASE_URL + '/addMission', json=calculateData)
+    print(response.json())
+    if response.json()['code'] == 'OK':
+      # 更新mission的运行状态
+      mission.state = 'calculating'
+      mission.save()
+      return success(message="成功启动计算任务")
+    else:
+      return failed(message="启动计算任务失败")

+ 19 - 3
backend/api/api_prepare.py

@@ -152,6 +152,8 @@ class PlanAPI(APIView):
         rootPlan.save()
 
         originPlans = []
+        # 将新建的plan的id都要返回
+        createdPlans = []
         # 添加第一代规划
         for pJson in origins:
             # p.algorithm应该用来新建plan,先占位
@@ -163,6 +165,11 @@ class PlanAPI(APIView):
                 return failed(message=str(pJson['id']) + "规划选定算法不存在")
             pModel = Plan(mission=mission, parent=rootPlan, algorithm=algorithm, user=user)
             pModel.save()
+            createdPlans.append({
+                'id': pModel.id,
+                'col': pJson['col'],
+                'row': pJson['row'],
+            })
             # p是json数据,headPlan是保存的PlanModel
             originPlans.append([pJson, pModel])
 
@@ -172,14 +179,23 @@ class PlanAPI(APIView):
             for childPos in pJson['children']:
                 childJson = planMat[childPos['row']][childPos['col']]
                 try:
-                    algorithm = Algorithm.objects.get(name=pJson['algorithm'])
+                    algorithm = Algorithm.objects.get(name=childJson['algorithm'])
                 except Algorithm.DoesNotExist:
                     print("Not Exist Algorithm")
                     return failed(message=str(pJson['id']) + "规划选定算法不存在")
                 childModel = Plan(mission=mission, parent=pModel, algorithm=algorithm, user=user)
                 childModel.save()
+                # 将新建的plan加入列表
+                createdPlans.append({
+                    'id': childModel.id,
+                    'col': childPos['col'],
+                    'row': childPos['row'],
+                    'parentId': pModel.id,
+                })
                 originPlans.append([childJson, childModel])
+        
+
         if overWritePlans:
-            return success(message="规划已覆盖")
+            return success(message="规划已覆盖", data=createdPlans)
         else:
-            return success(message="规划已提交")
+            return success(message="规划已提交", data=createdPlans)

+ 39 - 20
backend/api/api_rawDataTrans.py

@@ -33,35 +33,54 @@ class RawDataTrans(APIView):
         plan = Plan.objects.get(id=int(request.data.get('planId')))
         nodes = request.data.get('nodes')
         edges = request.data.get('edges')
-        for param in [mission, plan, nodes, edges]:
-            if not param:
+        progress = request.data.get('progress')
+        print(request.data)
+        print(mission, plan, progress)
+        for param in [mission, plan, progress]:
+            if param is None:
                 print("结果传递参数不足")
                 return failed(message="缺少结果参数")
+        if int(progress) == 100:
+            if not nodes or not edges:
+                print("进度完成却没有返回结果数据")
+                return failed(message="缺少结果参数")
         try:
             result = plan.own_result
-            print("PLAN结果数据已存在,是否重复提交?")
-            return failed(message="重复提交结果")
-        except Result.DoesNotExist:
-            # 读取nodes和edges,生成结果文件
-            nodeFile = File(type='csv', usage='result', content='node', user=plan.user)
-            nodeFile.save()
-            if not nodeFile.generate(nodes) == OK:
-                return failed(message="保存结果文件失败")
-            edgeFile = File(type='csv', usage='result', content='edge', user=plan.user)
-            edgeFile.save()
-            if not edgeFile.generate(edges) == OK:
-                return failed(message="保存结果文件失败")
-            nodeFile.associate = edgeFile
-            edgeFile.associate = nodeFile
-            nodeFile.save()
-            edgeFile.save()
+            if int(progress) == 100:
+                # 任务完成后需要保存结果文件
+                # 读取nodes和edges,生成结果文件
+                nodeFile = File(type='csv', usage='result', content='node', user=plan.user)
+                nodeFile.save()
+                if not nodeFile.generate(nodes) == OK:
+                    print("保存节点结果文件失败")
+                    return failed(message="保存节点结果文件失败")
+                edgeFile = File(type='csv', usage='result', content='edge', user=plan.user)
+                edgeFile.save()
+                if not edgeFile.generate(edges) == OK:
+                    print("保存边结果文件失败")
+                    return failed(message="保存边结果文件失败")
+                nodeFile.associate = edgeFile
+                edgeFile.associate = nodeFile
+                nodeFile.save()
+                edgeFile.save()
 
+                # 将文件与结果绑定
+                result.nodeFile = nodeFile
+                result.edgeFile = edgeFile
+                result.progress = 100
+                result.save()
+            else:
+                # 进度不到百分百,正在执行中,仅更新进度数值
+                result.progress = int(progress)
+                result.save()
+            return success(message="保存结果文件成功")
+        except Result.DoesNotExist:
+            # 不存在结果文件,需要新建
             result = Result()
             result.plan = plan
             result.mission = mission
             result.user = plan.user
-            result.nodeFile = nodeFile
-            result.edgeFile = edgeFile
+            result.progress = int(progress)
             result.save()
 
             return success(message="保存结果文件成功")

+ 47 - 0
backend/api/api_results.py

@@ -0,0 +1,47 @@
+from django.contrib import auth
+from rest_framework.views import APIView
+from rest_framework.response import Response
+from rest_framework import status
+from rest_framework.authtoken.models import Token
+from rest_framework.authentication import BasicAuthentication, TokenAuthentication
+from .serializers import UserRegisterSerializer
+
+from django.middleware.csrf import get_token
+from django.contrib.auth import login
+
+from api.utils import *
+from api.models import File, Mission, Plan, Result
+import requests
+
+import json, csv
+
+class Results(APIView):
+    def get(self, request):
+        user = request.user
+        try:
+            missionJson = json.loads(request.GET.get('mission'))
+            print(missionJson)
+            mission = Mission.objects.get(id=missionJson['id'])
+            if not mission in user.own_missions.all():
+                return failed(message="无该任务访问权限")
+        except Mission.DoesNotExist:
+            return failed(message="任务不存在")
+        resultsData = []
+        for plan in mission.own_plans.all():
+            try:
+                if not plan.parent:
+                    # 根节点不是实际的plan,没有result
+                    continue
+                result = plan.own_result
+                resultsData.append({
+                    'planId': plan.id,
+                    'progress': result.progress,
+                    'resultId': result.id,
+                })
+            except Result.DoesNotExist:
+                resultsData.append({
+                    'planId': plan.id,
+                    'progress': 0,
+                    'resultId': 0,
+                })
+        return success(data=resultsData)

+ 18 - 0
backend/api/migrations/0014_result_progress.py

@@ -0,0 +1,18 @@
+# Generated by Django 4.2 on 2025-03-17 23:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("api", "0013_remove_result_state_alter_file_usage"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="result",
+            name="progress",
+            field=models.IntegerField(default=0),
+        ),
+    ]

+ 27 - 0
backend/api/migrations/0015_mission_state.py

@@ -0,0 +1,27 @@
+# Generated by Django 4.2 on 2025-03-18 00:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("api", "0014_result_progress"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="mission",
+            name="state",
+            field=models.CharField(
+                choices=[
+                    ("init", "init"),
+                    ("calculating", "calculating"),
+                    ("pause", "pause"),
+                    ("done", "done"),
+                ],
+                default="init",
+                max_length=32,
+            ),
+        ),
+    ]

+ 36 - 0
backend/api/migrations/0016_alter_result_edgefile_alter_result_nodefile.py

@@ -0,0 +1,36 @@
+# Generated by Django 4.2 on 2025-03-18 00:49
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("api", "0015_mission_state"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="result",
+            name="edgeFile",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="own_results_edge",
+                to="api.file",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="result",
+            name="nodeFile",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="own_results_node",
+                to="api.file",
+            ),
+        ),
+    ]

BIN=BIN
backend/api/migrations/__pycache__/0014_result_progress.cpython-310.pyc


BIN=BIN
backend/api/migrations/__pycache__/0015_mission_state.cpython-310.pyc


BIN=BIN
backend/api/migrations/__pycache__/0016_alter_result_edgefile_alter_result_nodefile.cpython-310.pyc


BIN=BIN
backend/api/models/__pycache__/mission.cpython-310.pyc


BIN=BIN
backend/api/models/__pycache__/result.cpython-310.pyc


+ 7 - 0
backend/api/models/mission.py

@@ -2,6 +2,12 @@ from django.db import models
 import os, errno
 
 from api.utils import *
+state = [
+    ('init', 'init'),
+    ('calculating', 'calculating'),
+    ('pause', 'pause'),
+    ('done', 'done'),
+]
 
 class MissionManager(models.Manager):
     def statistic(self, user):
@@ -19,6 +25,7 @@ class Mission(models.Model):
     user = models.ForeignKey(to="api.User", on_delete=models.CASCADE, related_name="own_missions")
     
     objects = MissionManager()
+    state = models.CharField(choices=state, default="init", max_length=32)
 
     class Meta:
         app_label = 'api'

+ 3 - 2
backend/api/models/result.py

@@ -16,8 +16,9 @@ class Result(models.Model):
     create_time = models.DateTimeField(auto_now_add=True)
     update_time = models.DateTimeField(auto_now=True)
 
-    nodeFile = models.ForeignKey(to="api.File", on_delete=models.CASCADE, related_name="own_results_node")
-    edgeFile = models.ForeignKey(to="api.File", on_delete=models.CASCADE, related_name="own_results_edge")
+    progress = models.IntegerField(default=0)
+    nodeFile = models.ForeignKey(to="api.File", on_delete=models.CASCADE, related_name="own_results_node", blank=True, null=True)
+    edgeFile = models.ForeignKey(to="api.File", on_delete=models.CASCADE, related_name="own_results_edge", blank=True, null=True)
     
     # 注意plan和result的一对一,反向名为单数形式
     plan = models.OneToOneField(to="api.plan", on_delete=models.DO_NOTHING, related_name="own_result")

+ 2 - 0
backend/api/urls.py

@@ -4,6 +4,7 @@ from .api_user import getDashboard
 from .api_prepare import UploadFileAPI, PlanAPI
 from .api_calculate import CalculateAPI
 from .api_rawDataTrans import RawDataTrans
+from .api_results import Results
 
 urlpatterns = [
     path('register/', UserRegisterAPI.as_view(), name='user_register_api'),
@@ -13,4 +14,5 @@ urlpatterns = [
     path('getDashboard/', getDashboard.as_view()),
     path('calculate/', CalculateAPI.as_view(), name='calculate_api'),
     path('rawDataTrans/', RawDataTrans.as_view(), name='rawDataTrans_api'),
+    path('results/', Results.as_view(), name='results_api'),
 ]

BIN=BIN
backend/backend/__pycache__/settings.cpython-310.pyc


+ 1 - 1
backend/backend/settings.py

@@ -53,8 +53,8 @@ REST_FRAMEWORK = {
 MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.common.CommonMiddleware',
     'corsheaders.middleware.CorsMiddleware',
+    'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',

BIN=BIN
backend/db.sqlite3


BIN=BIN
scheduler/__pycache__/processManager.cpython-310.pyc


BIN=BIN
scheduler/__pycache__/utils.cpython-310.pyc


+ 49 - 12
scheduler/algo1Folder/controller.py

@@ -1,7 +1,10 @@
 import requests
 import os
 import logging
+from time import sleep
 
+
+''' 准备数据 '''
 SCHEDULER_BASE_URL = os.getenv("SCHEDULER_BASE_URL")
 BACKEND_BASE_URL = os.getenv("BACKEND_BASE_URL")
 
@@ -9,30 +12,64 @@ logger = logging.getLogger("algoA logger")
 missionId = os.getenv("missionId")
 planId = os.getenv("planId")
 
+headers = {
+    "Content-Type": "application/json",  # 明确声明数据格式
+    "Accept": "application/json"         # 声明期望的响应格式
+}
+params = {
+    "missionId": missionId,
+    "planId": planId,
+}
+
+
+print("THIS is a algo program")
+response = requests.get(SCHEDULER_BASE_URL + '/fetchData', params=params, headers=headers)
+data = response.json()
+print("data is")
+print(data)
+if not data:
+    quit()
+else:
+    print(data['nodes'])
+    print(data['edges'])
 
-for i in range(10000000):
-    print('.', end='')
+''' 开始计算 '''
 
+for i in range(5):
+    response = requests.post(BACKEND_BASE_URL + "/rawDataTrans/", json={
+        'missionId': missionId,
+        'planId': planId,
+        'progress': i * 20,
+    })
+    sleep(3)
 
-response = requests.post(SCHEDULER_BASE_URL + '/report', json={
-    'missionId': missionId,
-    'planId': planId,
-    'state': 'DONE',
-    'results': None,
-})
+''' 完成计算 '''
+try:
+    response = requests.post(SCHEDULER_BASE_URL + '/report', json={
+        'missionId': missionId,
+        'planId': planId,
+        'state': 'DONE',
+        'results': {
+            'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']],
+            'edges': [[1, 2], [1, 4], [2, 4], [3, 4]],
+        },
+    })
+except Exception as error:
+    print("ERROR is", error)
 
 if response:
-    logger.info("???")
     if response.json()['code'] == 'OK':
+        print("response is ok")
 
         response = requests.post(BACKEND_BASE_URL + "/rawDataTrans/", json={
             'missionId': missionId,
             'planId': planId,
+            'progress': 100,
             'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']],
             'edges': [[1, 2], [1, 4], [2, 4], [3, 4]],
         })
-        logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
+        print(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
     else:
-        logger.error(f"算法控制程序结果反馈未被识别 MissionId: {missionId} PlanId: {planId}")
+        print(f"算法控制程序结果反馈未被识别 MissionId: {missionId} PlanId: {planId}")
 else:
-    logger.error(f"算法控制程序结果反馈失败 MissionId: {missionId} PlanId: {planId}")
+    print(f"算法控制程序结果反馈失败 MissionId: {missionId} PlanId: {planId}")

+ 4 - 1
scheduler/algorithms.config

@@ -1 +1,4 @@
-algA,algo1Folder,python controller.py
+algA,algo1Folder,python controller.py
+algB,algo1Folder,python controller.py
+algC,algo1Folder,python controller.py
+algD,algo1Folder,python controller.py

+ 17 - 0
scheduler/processManager.py

@@ -120,6 +120,23 @@ class ProcessManager:
             self._monitor_thread.join()
         self.logger.info("进程监控线程已停止")
 
+    def remove_process(self, missionId: int, planId: int):
+        """删除进程监视任务"""
+        for pid, info in self.processes.items():
+            if int(info["meta"]['mission']['id']) == int(missionId) and int(info["meta"]["plan"]["id"]) == int(planId):
+                try:
+                    proc = psutil.Process(pid)
+                    proc.terminate()
+                    del self.processes[pid]
+                    self.logger.info(f"移除处理进程监视 MissionId: {missionId} PlanId: {planId}")
+                    return True
+                except Exception as error:
+                    self.logger.error(f"移除处理进程监视失败 MissionId: {missionId} PlanId: {planId} Error: {error}")
+                    return False
+        self.logger.info(f"该处理进程不在监视中 MissionId: {missionId} PlanId: {planId}")
+        return True
+                
+
     def _monitor_loop(self):
         """监控主循环"""
         while self._running:

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-122720_21672.stdout


+ 0 - 4
scheduler/process_logs/proc_20250314-131018_23328.stderr

@@ -1,4 +0,0 @@
-Traceback (most recent call last):
-  File "G:\È˲ÅÏîÄ¿\Server\scheduler\algo1Folder\controller.py", line 4, in <module>
-    from utils import SCHEDULER_BASE_URL
-ModuleNotFoundError: No module named 'utils'

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-131445_2244.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-131816_5064.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-131846_23104.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-132125_22824.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-132211_21016.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-132643_16624.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-132924_17736.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133025_23080.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133241_11560.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133325_21976.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133412_14952.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133756_21976.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-133849_14716.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-134245_21460.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-173349_6064.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-173439_22268.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-173520_26980.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-202356_21188.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-202356_21188.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-202532_23332.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-202532_23332.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-202630_12712.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-202630_12712.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-202708_23032.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-202708_23032.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203023_23960.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203023_23960.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203045_1296.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203045_1296.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203221_23172.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203221_23172.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203511_11932.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203511_11932.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203635_27576.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203635_27576.stdout


+ 0 - 19
scheduler/process_logs/proc_20250314-203807_11648.stderr

@@ -1,19 +0,0 @@
-Traceback (most recent call last):
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 974, in json
-    return complexjson.loads(self.text, **kwargs)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\__init__.py", line 346, in loads
-    return _default_decoder.decode(s)
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 337, in decode
-    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-  File "C:\Users\lan\.conda\envs\viewer\lib\json\decoder.py", line 355, in raw_decode
-    raise JSONDecodeError("Expecting value", s, err.value) from None
-json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "G:\人才项目\Server\scheduler\algo1Folder\controller.py", line 34, in <module>
-    logger.info(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
-  File "C:\Users\lan\.conda\envs\viewer\lib\site-packages\requests\models.py", line 978, in json
-    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
-requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203807_11648.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-203854_25892.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-204019_14544.stdout


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
scheduler/process_logs/proc_20250314-204054_22384.stdout


+ 0 - 0
scheduler/process_logs/proc_20250314-122720_21672.stderr → scheduler/process_logs/proc_20250317-013433_23464.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-013433_23464.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+response is ok
+算法控制程序推送结果完毕 MissionId: 31 PlanId: 84 Message: {'status': 'failed', 'message': '重复提交结果', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-130628_23116.stderr → scheduler/process_logs/proc_20250317-013437_23464.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-013437_23464.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 31 PlanId: 86 Message: {'status': 'failed', 'message': '重复提交结果', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-130628_23116.stdout → scheduler/process_logs/proc_20250317-013442_23464.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-013442_23464.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 31 PlanId: 87 Message: {'status': 'failed', 'message': '重复提交结果', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-130839_19992.stderr → scheduler/process_logs/proc_20250317-221515_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-221515_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+response is ok
+算法控制程序推送结果完毕 MissionId: 32 PlanId: 89 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-130839_19992.stdout → scheduler/process_logs/proc_20250317-221519_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-221519_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 32 PlanId: 90 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-131018_23328.stdout → scheduler/process_logs/proc_20250317-221523_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-221523_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 32 PlanId: 92 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-131445_2244.stderr → scheduler/process_logs/proc_20250317-234036_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234036_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+response is ok
+算法控制程序推送结果完毕 MissionId: 33 PlanId: 94 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-131816_5064.stderr → scheduler/process_logs/proc_20250317-234041_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234041_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 33 PlanId: 96 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-131846_23104.stderr → scheduler/process_logs/proc_20250317-234045_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234045_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 33 PlanId: 97 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-132125_22824.stderr → scheduler/process_logs/proc_20250317-234142_20996.stderr


+ 6 - 0
scheduler/process_logs/proc_20250317-234142_20996.stdout

@@ -0,0 +1,6 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+算法控制程序结果反馈未被识别 MissionId: 33 PlanId: 94

+ 0 - 0
scheduler/process_logs/proc_20250314-132211_21016.stderr → scheduler/process_logs/proc_20250317-234353_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234353_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+response is ok
+算法控制程序推送结果完毕 MissionId: 34 PlanId: 99 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-132643_16624.stderr → scheduler/process_logs/proc_20250317-234357_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234357_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 34 PlanId: 101 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-132924_17736.stderr → scheduler/process_logs/proc_20250317-234634_20996.stderr


+ 6 - 0
scheduler/process_logs/proc_20250317-234634_20996.stdout

@@ -0,0 +1,6 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+算法控制程序结果反馈未被识别 MissionId: 34 PlanId: 99

+ 0 - 0
scheduler/process_logs/proc_20250314-133025_23080.stderr → scheduler/process_logs/proc_20250317-234714_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234714_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']], 'nodes': [{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]}
+[{'id': '1', 'type': 'S'}, {'id': '2', 'type': 'D'}, {'id': '3', 'type': 'S'}, {'id': '4', 'type': 'I'}]
+[['1', '3'], ['2', '1'], ['2', '4'], ['2', '3']]
+response is ok
+算法控制程序推送结果完毕 MissionId: 35 PlanId: 103 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

+ 0 - 0
scheduler/process_logs/proc_20250314-133241_11560.stderr → scheduler/process_logs/proc_20250317-234718_20996.stderr


+ 7 - 0
scheduler/process_logs/proc_20250317-234718_20996.stdout

@@ -0,0 +1,7 @@
+THIS is a algo program
+data is
+{'edges': [[1, 2], [1, 4], [2, 4], [3, 4]], 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]}
+[[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']]
+[[1, 2], [1, 4], [2, 4], [3, 4]]
+response is ok
+算法控制程序推送结果完毕 MissionId: 35 PlanId: 104 Message: {'status': 'success', 'message': '保存结果文件成功', 'data': None}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio