diff --git a/app-dm/src/pages/ListPages/Training/Operation1.jsx b/app-dm/src/pages/ListPages/Training/Operation1.jsx index f54716b..9109436 100644 --- a/app-dm/src/pages/ListPages/Training/Operation1.jsx +++ b/app-dm/src/pages/ListPages/Training/Operation1.jsx @@ -146,6 +146,7 @@ function Operation1() { localStorage.setItem('answeredJudge',answeredJudge) localStorage.setItem('TrainData',JSON.stringify(TrainData)) localStorage.setItem('score',score) + localStorage.setItem('succeed',succeed) }; @@ -183,26 +184,43 @@ function Operation1() { //不包含实训分数 const [score,setscore]=useState(0) + const [succeed,setsucceed]=useState([]) //提交按钮,或者下一页 const submit=()=>{ let CHO_sum=0; let COM_sum=0; let JUD_sum=0; + for(let item of TrainData['operateID'][0]){ if(item[0][6]===choice_answer[CHO_sum]){ setscore(prevscore=>prevscore+5) + }else{ + const itemText = item[0][9]; + if (!succeed.includes(itemText)) { + setsucceed((prevSucceed) => [...prevSucceed, itemText]); + } } CHO_sum++ } for(let item of TrainData['operateID'][1]){ if (item[0][2]===completion_answer[COM_sum]) { setscore(prevscore=>prevscore+5) + }else{ + const itemText = item[0][5]; + if (!succeed.includes(itemText)) { + setsucceed((prevSucceed) => [...prevSucceed, itemText]); + } } COM_sum++ } for(let item of TrainData['operateID'][2]){ if (item[0][2]===judge_answer[JUD_sum]) { setscore(prevscore=>prevscore+5) + }else{ + const itemText = item[0][5]; + if (!succeed.includes(itemText)) { + setsucceed((prevSucceed) => [...prevSucceed, itemText]); + } } JUD_sum++ } @@ -351,10 +369,14 @@ function Operation1() { )} - + + diff --git a/app-dm/src/pages/ListPages/Training/Operation2.jsx b/app-dm/src/pages/ListPages/Training/Operation2.jsx index 9f4eb17..6277032 100644 --- a/app-dm/src/pages/ListPages/Training/Operation2.jsx +++ b/app-dm/src/pages/ListPages/Training/Operation2.jsx @@ -16,7 +16,7 @@ function Operation2() { const { operateID } = useParams(); const [isTrue,setisTrue]=useState(false) const [TrainScore,serTrainScore]=(null) - + const succeed=localStorage.getItem('succeed') const TrainData=JSON.parse(localStorage.getItem('TrainData')) //获取链接 @@ -98,7 +98,8 @@ function Operation2() { score, TrainScore, operateID, - student_ID + student_ID, + succeed }) }catch{ alert('submitTrainSrc出错') diff --git a/python/app.py b/python/app.py index 0f93cdc..8696c0e 100644 --- a/python/app.py +++ b/python/app.py @@ -346,8 +346,6 @@ def getTrainData(): return jsonify({'data': data}) - - # @app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod # def teacher_list_pods(): # return list_pods() diff --git a/python/k8s_func.py b/python/k8s_func.py new file mode 100644 index 0000000..c9f76e7 --- /dev/null +++ b/python/k8s_func.py @@ -0,0 +1,94 @@ +import json +import traceback + +import yaml +from kubernetes import client, config +from flask import jsonify +import dmPython + +# Load in-cluster config + +config.load_incluster_config() +v1 = client.CoreV1Api() +namespace = open("/var/run/secrets/kubernetes.io/serviceaccount/namespace").read() +IP = "36.138.114.105" + + +def list_pods(): + ret = v1.list_namespaced_pod(namespace, watch=False) + return ({ + "list": [{ + "name": item.metadata.name, + "ip": item.status.pod_ip + } for item in ret.items] + }) + + +def list_services(): + ret = v1.list_namespaced_service(namespace) + return { + "list": [{ + "ip": item.spec.cluster_ip, + "name": item.metadata.name, + "ports": [port.to_dict() for port in item.spec.ports] + } for item in ret.items] + } + + +def create_pod(type, name): + # 读取 pod yaml 文件 + with open(f"assets/type{type}-pod.yaml") as f: + pod_manifest = yaml.safe_load(f) + pod_manifest["metadata"]["name"] = name + pod_manifest["metadata"]["labels"]["app"] = name + # 创建 Pod + resp = v1.create_namespaced_pod( + body=pod_manifest, + namespace=namespace + ) + # print(f"pod '{resp.metadata.name}' 创建成功") + # 创建 Service + with open(f"assets/type{type}-service.yaml") as f: + service_pod = yaml.safe_load(f) + service_pod["metadata"]["name"] = name + "-service" + service_pod["spec"]["selector"]["app"] = name + + resp = v1.create_namespaced_service( + body=service_pod, + namespace=namespace + ) + # print(f"服务 '{resp.metadata.name}' 创建成功") + if type == 1: + # 创建成功,再次查询,拿到端口 + service = v1.read_namespaced_service(name=name + "-service", namespace=namespace) + # print(service) + # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port)) + else: + service = v1.read_namespaced_service(name=name + "-service", namespace=namespace) + # print(service) + # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port)) + return "cjcg" + + +# create_pod(0,'20240101-zt-9-0') + +def delete_pod(name): + v1.delete_namespaced_pod(name=name, namespace=namespace) + print('deleting pod ' + name) + v1.delete_namespaced_service(name=name + "-service", namespace=namespace) + return "删除成功" + + +def check_dm(name): + try: + service = v1.read_namespaced_service(name=name + "-service", namespace=namespace) + print(service.spec.cluster_ip) + db = dmPython.connect(user='SYSDBA', password='SYSDBA', host=service.spec.cluster_ip) + cursor = db.cursor() + records = cursor.execute("SELECT * FROM V$VERSION").fetchall() + for record in records: + print(record) + return "OK" + except: + traceback.print_exc() + return "NO" diff --git a/python/student_func.py b/python/student_func.py index 668c835..6426e2f 100644 --- a/python/student_func.py +++ b/python/student_func.py @@ -342,7 +342,12 @@ def FindTrain1SrcFunc(ID,testID): # FindTrain1SrcFunc('20240101','54') -def AddTrainScoreFunc(ID,testID,score,trainResult): +def AddTrainScoreFunc(ID,testID,score,trainResult,succeed): + a=[] + for i in succeed: + a.append(succeed[i]) + a=set(a) + print(a) cursor=db.cursor() cursor.execute("UPDATE TRAINSCORE SET TF='true', RESULT=(?), TRAINRESULT=(?) WHERE STUDENT_ID=(?) AND TEST_ID=(?)",(score,trainResult,ID,testID)) db.commit() diff --git a/python/test.py b/python/test.py index 5f8bcf9..7e589c5 100644 --- a/python/test.py +++ b/python/test.py @@ -1,4 +1,12 @@ -print('a') +a=[] +succeed={0:'计算机基础', 1:'计算机概念', 2:'通信技术', 3:'计算机网络'} +for i in succeed: + a.append(succeed[i]) + +result_string = ','.join(set(a)) + +print(result_string+'需要加强') +