Explorar o código

Merge remote-tracking branch 'origin/master'

181250114 %!s(int64=4) %!d(string=hai) anos
pai
achega
aed56c461c
Modificáronse 92 ficheiros con 738 adicións e 81 borrados
  1. 18 0
      pom.xml
  2. 84 0
      src/main/java/com/seecoder/dataanalysis/aspect/auth/AuthAspect.java
  3. 16 0
      src/main/java/com/seecoder/dataanalysis/aspect/auth/Authorized.java
  4. 2 0
      src/main/java/com/seecoder/dataanalysis/data/dao/competency/CompetencyTreeDao.java
  5. 5 0
      src/main/java/com/seecoder/dataanalysis/data/dao/eval/UserDao.java
  6. 0 1
      src/main/java/com/seecoder/dataanalysis/data/entity/competency/CompetencyTree.java
  7. 0 1
      src/main/java/com/seecoder/dataanalysis/data/entity/eval/EvalExamInfo.java
  8. 0 1
      src/main/java/com/seecoder/dataanalysis/data/entity/eval/EvalExamRecord.java
  9. 19 1
      src/main/java/com/seecoder/dataanalysis/data/entity/eval/User.java
  10. 13 0
      src/main/java/com/seecoder/dataanalysis/enums/UserRole.java
  11. 17 0
      src/main/java/com/seecoder/dataanalysis/exception/MyServiceException.java
  12. 19 0
      src/main/java/com/seecoder/dataanalysis/exception/MyServiceExceptionHandler.java
  13. 3 3
      src/main/java/com/seecoder/dataanalysis/logic/parser/LogParsingService.java
  14. 20 0
      src/main/java/com/seecoder/dataanalysis/logic/parser/ParsingException.java
  15. 54 0
      src/main/java/com/seecoder/dataanalysis/logic/parser/convertor/LogConvertor.java
  16. 44 6
      src/main/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImpl.java
  17. 34 0
      src/main/java/com/seecoder/dataanalysis/logic/user/UserService.java
  18. 19 0
      src/main/java/com/seecoder/dataanalysis/logic/user/convertor/UserConvertor.java
  19. 55 0
      src/main/java/com/seecoder/dataanalysis/logic/user/impl/UserServiceImpl.java
  20. 39 0
      src/main/java/com/seecoder/dataanalysis/util/JwtUtil.java
  21. 4 0
      src/main/java/com/seecoder/dataanalysis/vo/AnswerDTO.java
  22. 4 0
      src/main/java/com/seecoder/dataanalysis/vo/EvalExamInfoDTO.java
  23. 4 0
      src/main/java/com/seecoder/dataanalysis/vo/EvalExamRecordDTO.java
  24. 29 0
      src/main/java/com/seecoder/dataanalysis/vo/PortalUserVO.java
  25. 16 0
      src/main/java/com/seecoder/dataanalysis/vo/UpdateUserVO.java
  26. 19 0
      src/main/java/com/seecoder/dataanalysis/vo/UserVO.java
  27. 34 0
      src/main/java/com/seecoder/dataanalysis/web/Response.java
  28. 26 0
      src/main/java/com/seecoder/dataanalysis/web/controller/TestController.java
  29. 31 0
      src/main/java/com/seecoder/dataanalysis/web/controller/UserController.java
  30. 5 1
      src/main/resources/application-dev.yml
  31. 0 1
      src/main/resources/application.properties
  32. 33 0
      src/test/java/com/seecoder/dataanalysis/logic/parser/convertor/LogConvertorTest.java
  33. 16 6
      src/test/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImplTest.java
  34. 1 1
      src/test/resources/sample_logs/gen0.log
  35. 1 1
      src/test/resources/sample_logs/gen1.log
  36. 1 1
      src/test/resources/sample_logs/gen10.log
  37. 1 1
      src/test/resources/sample_logs/gen11.log
  38. 1 1
      src/test/resources/sample_logs/gen12.log
  39. 1 1
      src/test/resources/sample_logs/gen13.log
  40. 1 1
      src/test/resources/sample_logs/gen14.log
  41. 1 1
      src/test/resources/sample_logs/gen15.log
  42. 1 1
      src/test/resources/sample_logs/gen16.log
  43. 1 1
      src/test/resources/sample_logs/gen17.log
  44. 1 1
      src/test/resources/sample_logs/gen18.log
  45. 1 1
      src/test/resources/sample_logs/gen19.log
  46. 1 1
      src/test/resources/sample_logs/gen2.log
  47. 1 1
      src/test/resources/sample_logs/gen20.log
  48. 1 1
      src/test/resources/sample_logs/gen21.log
  49. 1 1
      src/test/resources/sample_logs/gen22.log
  50. 1 1
      src/test/resources/sample_logs/gen23.log
  51. 1 1
      src/test/resources/sample_logs/gen24.log
  52. 1 1
      src/test/resources/sample_logs/gen25.log
  53. 1 1
      src/test/resources/sample_logs/gen26.log
  54. 1 1
      src/test/resources/sample_logs/gen27.log
  55. 1 1
      src/test/resources/sample_logs/gen28.log
  56. 1 1
      src/test/resources/sample_logs/gen29.log
  57. 1 1
      src/test/resources/sample_logs/gen3.log
  58. 1 1
      src/test/resources/sample_logs/gen30.log
  59. 1 1
      src/test/resources/sample_logs/gen31.log
  60. 1 1
      src/test/resources/sample_logs/gen32.log
  61. 1 1
      src/test/resources/sample_logs/gen33.log
  62. 1 1
      src/test/resources/sample_logs/gen34.log
  63. 1 1
      src/test/resources/sample_logs/gen35.log
  64. 1 1
      src/test/resources/sample_logs/gen36.log
  65. 1 1
      src/test/resources/sample_logs/gen37.log
  66. 1 1
      src/test/resources/sample_logs/gen38.log
  67. 1 1
      src/test/resources/sample_logs/gen39.log
  68. 1 1
      src/test/resources/sample_logs/gen4.log
  69. 1 1
      src/test/resources/sample_logs/gen40.log
  70. 1 1
      src/test/resources/sample_logs/gen41.log
  71. 1 1
      src/test/resources/sample_logs/gen42.log
  72. 1 1
      src/test/resources/sample_logs/gen43.log
  73. 1 1
      src/test/resources/sample_logs/gen44.log
  74. 1 1
      src/test/resources/sample_logs/gen45.log
  75. 1 1
      src/test/resources/sample_logs/gen46.log
  76. 1 1
      src/test/resources/sample_logs/gen47.log
  77. 1 1
      src/test/resources/sample_logs/gen48.log
  78. 1 1
      src/test/resources/sample_logs/gen49.log
  79. 1 1
      src/test/resources/sample_logs/gen5.log
  80. 1 1
      src/test/resources/sample_logs/gen50.log
  81. 1 1
      src/test/resources/sample_logs/gen51.log
  82. 1 1
      src/test/resources/sample_logs/gen52.log
  83. 1 1
      src/test/resources/sample_logs/gen53.log
  84. 1 1
      src/test/resources/sample_logs/gen6.log
  85. 1 1
      src/test/resources/sample_logs/gen7.log
  86. 1 1
      src/test/resources/sample_logs/gen8.log
  87. 1 1
      src/test/resources/sample_logs/gen9.log
  88. 2 2
      src/test/resources/sample_logs/gen_data.py
  89. 0 1
      src/test/resources/sample_logs/mock0.log
  90. 0 1
      src/test/resources/sample_logs/mock1.log
  91. 0 1
      src/test/resources/sample_logs/mock2.log
  92. 0 1
      src/test/resources/sample_logs/mock3.log

+ 18 - 0
pom.xml

@@ -40,6 +40,24 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <!-- aop -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+            <version>2.6.3</version>
+        </dependency>
+
+        <!-- jwt -->
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.11.0</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 84 - 0
src/main/java/com/seecoder/dataanalysis/aspect/auth/AuthAspect.java

@@ -0,0 +1,84 @@
+package com.seecoder.dataanalysis.aspect.auth;
+
+
+import com.auth0.jwt.exceptions.JWTVerificationException;
+import com.auth0.jwt.interfaces.Claim;
+import com.seecoder.dataanalysis.data.entity.eval.User;
+import com.seecoder.dataanalysis.exception.MyServiceException;
+import com.seecoder.dataanalysis.logic.user.UserService;
+import com.seecoder.dataanalysis.logic.user.convertor.UserConvertor;
+import com.seecoder.dataanalysis.util.JwtUtil;
+import com.seecoder.dataanalysis.vo.PortalUserVO;
+import com.seecoder.dataanalysis.vo.UpdateUserVO;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author mars
+ */
+@Aspect
+@Configuration
+@Order(1)
+public class AuthAspect {
+
+    private final UserService userService;
+
+    @Autowired
+    public AuthAspect(UserService userService) {
+        this.userService = userService;
+    }
+
+    private User getUserByToken(String token) throws JWTVerificationException {
+        try {
+            Claim claim = JwtUtil.parseJwt(token);
+            PortalUserVO userVO = claim.as(PortalUserVO.class);
+            return new User(userVO.getId(), userVO.getName(), userVO.getRole(), userVO.getEmail(), userVO.getPhone());
+        } catch (MyServiceException e) {
+            throw new  MyServiceException(e.getCode(), e.getMessage());
+        }
+    }
+
+    @Before(value = "execution(public * com.seecoder.dataanalysis.web.controller.*.*(..)) && @annotation(authorized)")
+    public void authCheck(JoinPoint joinPoint, Authorized authorized) {
+        HttpServletRequest httpServletRequest = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = Optional.ofNullable(httpServletRequest.getHeader("Authorization")).
+                orElseThrow(() -> new MyServiceException("A0223", "用户未获得第三方登录授权"));
+        User user = getUserByToken(token);
+        // 创建或者更新用户
+        if (userService.existsById(user.getUserId())) {
+            userService.updateUser(new UpdateUserVO(user.getUserId(), user.getUsername(), user.getEmail()));
+        } else {
+            //TODO 这里没有对HR和TEACHER作区分
+            userService.createUser(UserConvertor.convertToVO(user));
+        }
+
+        // 判断切面方法是否包含当前token对应的角色
+        if (!Arrays.stream(authorized.roles()).collect(Collectors.toList()).contains(user.getRole())) {
+            throw new MyServiceException("A0301", "访问未授权");
+        } else {
+            // 将token的对象赋值给切面方法的user参数
+            Object[] objects = joinPoint.getArgs();
+            for (Object o : objects) {
+                if (o instanceof User) {
+                    System.out.println(user);
+                    BeanUtils.copyProperties(user, o);
+                    break;
+                }
+            }
+        }
+    }
+}

+ 16 - 0
src/main/java/com/seecoder/dataanalysis/aspect/auth/Authorized.java

@@ -0,0 +1,16 @@
+package com.seecoder.dataanalysis.aspect.auth;
+
+import com.seecoder.dataanalysis.enums.UserRole;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Authorized {
+    UserRole[]  roles() default {
+            UserRole.ADMIN, UserRole.STUDENT, UserRole.HR, UserRole.TEACHER, UserRole.STAFF, UserRole.SEEC, UserRole.SEECX, UserRole.ASSISTANT};
+    String message() default "";
+}

+ 2 - 0
src/main/java/com/seecoder/dataanalysis/data/dao/competency/CompetencyTreeDao.java

@@ -5,4 +5,6 @@ import org.springframework.data.mongodb.repository.MongoRepository;
 
 public interface CompetencyTreeDao extends MongoRepository<CompetencyTree, String> {
 
+    CompetencyTree findByStudentId(Integer studentId);
+
 }

+ 5 - 0
src/main/java/com/seecoder/dataanalysis/data/dao/eval/UserDao.java

@@ -3,5 +3,10 @@ package com.seecoder.dataanalysis.data.dao.eval;
 import com.seecoder.dataanalysis.data.entity.eval.User;
 import org.springframework.data.mongodb.repository.MongoRepository;
 
+
 public interface UserDao extends MongoRepository<User, String> {
+
+    User findByUserId(Integer userId);
+
+    Boolean existsByUserId(Integer userId);
 }

+ 0 - 1
src/main/java/com/seecoder/dataanalysis/data/entity/competency/CompetencyTree.java

@@ -22,7 +22,6 @@ public class CompetencyTree {
      * 能力树ID
      **/
     @Id
-    @Field("competency_id")
     private Integer competencyId;
 
     /**

+ 0 - 1
src/main/java/com/seecoder/dataanalysis/data/entity/eval/EvalExamInfo.java

@@ -23,7 +23,6 @@ public class EvalExamInfo {
      * 试卷Id
      */
     @Id
-    @Field("exam_id")
     private Integer examId;
 
     /**

+ 0 - 1
src/main/java/com/seecoder/dataanalysis/data/entity/eval/EvalExamRecord.java

@@ -24,7 +24,6 @@ public class EvalExamRecord {
      * 记录Id
      */
     @Id
-    @Field("record_id")
     private Integer recordId;
 
     /**

+ 19 - 1
src/main/java/com/seecoder/dataanalysis/data/entity/eval/User.java

@@ -1,6 +1,7 @@
 package com.seecoder.dataanalysis.data.entity.eval;
 
 
+import com.seecoder.dataanalysis.enums.UserRole;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -20,7 +21,6 @@ public class User {
      * 学生ID
      **/
     @Id
-    @Field("user_id")
     private Integer userId;
 
     /**
@@ -28,4 +28,22 @@ public class User {
      **/
     @Field("username")
     private String username;
+
+    /**
+     * 邮箱
+     */
+    @Field("role")
+    private UserRole role;
+
+    /**
+     * 邮箱
+     */
+    @Field("email")
+    private String email;
+
+    /**
+     * 手机
+     */
+    @Field("phone")
+    private String phone;
 }

+ 13 - 0
src/main/java/com/seecoder/dataanalysis/enums/UserRole.java

@@ -0,0 +1,13 @@
+package com.seecoder.dataanalysis.enums;
+
+public enum UserRole {
+
+    TEACHER, //老师
+    STUDENT, //学生
+    HR, //HR
+    ADMIN, //网站管理员
+    STAFF, //员工
+    SEEC, //Seecoder开发人员
+    SEECX, //Seecoder开发人员X
+    ASSISTANT
+}

+ 17 - 0
src/main/java/com/seecoder/dataanalysis/exception/MyServiceException.java

@@ -0,0 +1,17 @@
+package com.seecoder.dataanalysis.exception;
+
+import lombok.Data;
+
+@Data
+public class MyServiceException extends RuntimeException {
+    private String code;
+
+    public MyServiceException(String message, Throwable root) {
+        super(message, root);
+    }
+
+    public MyServiceException(String code, String message) {
+        super(message);
+        this.code = code;
+    }
+}

+ 19 - 0
src/main/java/com/seecoder/dataanalysis/exception/MyServiceExceptionHandler.java

@@ -0,0 +1,19 @@
+package com.seecoder.dataanalysis.exception;
+
+import com.seecoder.dataanalysis.web.Response;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * @author mars
+ */
+@RestControllerAdvice(basePackages = {"com.seecoder.dataanalysis.web.controller", "com.seecoder.dataanalysis.aspect.auth"})
+public class MyServiceExceptionHandler {
+    @ExceptionHandler(MyServiceException.class)
+    @ResponseBody
+    private Response handleMyServiceException(MyServiceException e) {
+        return new Response(e.getCode(), e.getMessage());
+    }
+
+}

+ 3 - 3
src/main/java/com/seecoder/dataanalysis/logic/parser/LogParsingService.java

@@ -13,7 +13,7 @@ public interface LogParsingService {
      * @param log json格式的日志
      * @return SimpleLog,包含日志的元数据以及json格式的日志data
      */
-    SimpleLog parseLog(String log);
+    SimpleLog parseLog(String log) throws ParsingException;
 
     /**
      * 基于日志元数据(opType),解析日志的data,并返回对应实体。如果不使用范型,则返回Object类型
@@ -21,13 +21,13 @@ public interface LogParsingService {
      * @param save 是否持久化保存
      * @return 日志操作类型对应的数据实体
      */
-    <T> T parseLogData(SimpleLog simpleLog, boolean save);
+    <T> T parseLogData(SimpleLog simpleLog, boolean save) throws ParsingException;
 
     /**
      * 基于日志元数据,返回对应的持久化实体entity的类名
      * @param opType 操作类型
      * @return entity的classname
      */
-    String parseOpType(int opType);
+    String parseOpType(int opType) throws ParsingException;
 
 }

+ 20 - 0
src/main/java/com/seecoder/dataanalysis/logic/parser/ParsingException.java

@@ -0,0 +1,20 @@
+package com.seecoder.dataanalysis.logic.parser;
+
+/**
+ * @author miaomuzhi
+ * @since 2022/2/15
+ */
+public class ParsingException extends Exception{
+    /**
+     * 解析错误码
+     * 0: 元日志格式错误
+     * 1:日志格式错误
+     * 2:不支持的日志操作码
+     */
+    private int errorCode;
+
+    public ParsingException(String message, int errorCode) {
+        super(message);
+        this.errorCode = errorCode;
+    }
+}

+ 54 - 0
src/main/java/com/seecoder/dataanalysis/logic/parser/convertor/LogConvertor.java

@@ -0,0 +1,54 @@
+package com.seecoder.dataanalysis.logic.parser.convertor;
+
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
+import com.seecoder.dataanalysis.vo.AnswerDTO;
+import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
+import com.seecoder.dataanalysis.vo.EvalExamRecordDTO;
+import org.springframework.beans.BeanUtils;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author miaomuzhi
+ * @since 2022/2/15
+ */
+public class LogConvertor {
+
+    public static EvalExamRecord convertToEvalExamRecordEntity(EvalExamRecordDTO evalExamRecordDTO){
+        if (evalExamRecordDTO == null) {
+            return null;
+        }
+
+        EvalExamRecord record = new EvalExamRecord();
+        BeanUtils.copyProperties(evalExamRecordDTO, record);
+        record.setErrorQuestions(new HashMap<>());
+
+        List<AnswerDTO> answers = evalExamRecordDTO.getErrorQuestions();
+        if (answers != null) {
+            for (AnswerDTO answer : answers) {
+                record.getErrorQuestions().put(answer.getQuestionId(), answer.getQuestionScore());
+            }
+        }
+        return record;
+    }
+
+    public static EvalExamInfo convertToEvalExamInfoEntity(EvalExamInfoDTO evalExamInfoDTO){
+        if (evalExamInfoDTO == null) {
+            return null;
+        }
+
+        EvalExamInfo info = new EvalExamInfo();
+        BeanUtils.copyProperties(evalExamInfoDTO, info);
+        info.setQuestionAndScore(new HashMap<>());
+
+        List<AnswerDTO> answers = evalExamInfoDTO.getQuestionAndScore();
+        if (answers != null) {
+            for (AnswerDTO answer : answers) {
+                info.getQuestionAndScore().put(answer.getQuestionId(), answer.getQuestionScore());
+            }
+        }
+        return info;
+    }
+}

+ 44 - 6
src/main/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImpl.java

@@ -1,11 +1,18 @@
 package com.seecoder.dataanalysis.logic.parser.impl;
 
 import com.alibaba.fastjson.JSONException;
+import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
+import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
 import com.seecoder.dataanalysis.logic.parser.LogParsingService;
+import com.seecoder.dataanalysis.logic.parser.ParsingException;
+import com.seecoder.dataanalysis.logic.parser.convertor.LogConvertor;
 import com.seecoder.dataanalysis.util.JsonUtil;
 import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
 import com.seecoder.dataanalysis.vo.EvalExamRecordDTO;
 import com.seecoder.dataanalysis.vo.SimpleLog;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -24,34 +31,65 @@ public class LogParsingServiceImpl implements LogParsingService {
      */
     private Map<Integer, String> opTypesTable;
 
+    private EvalExamRecordDao evalExamRecordDao;
+
+    private EvalExamInfoDao evalExamInfoDao;
+
+    @Autowired
+    public void setEvalExamRecordDao(EvalExamRecordDao evalExamRecordDao) {
+        this.evalExamRecordDao = evalExamRecordDao;
+    }
+
+    @Autowired
+    public void setEvalExamInfoDao(EvalExamInfoDao evalExamInfoDao) {
+        this.evalExamInfoDao = evalExamInfoDao;
+    }
+
+
     @Override
-    public SimpleLog parseLog(String log) {
+    public SimpleLog parseLog(String log) throws ParsingException{
         try {
             return JsonUtil.toObject(log, SimpleLog.class);
         } catch (JSONException e) {
             e.printStackTrace();
-            return null;
+            throw new ParsingException(e.toString(), 0);
         }
     }
 
     @Override
     @SuppressWarnings("unchecked")
-    public <T> T parseLogData(SimpleLog simpleLog, boolean save) {
+    public <T> T parseLogData(SimpleLog simpleLog, boolean save) throws ParsingException{
         try {
             String className = parseOpType(simpleLog.getOpType());
             Class clazz = Class.forName(className);
             Object data = JsonUtil.toObject(simpleLog.getData(), clazz);
 
-            //TODO save into the database
+            if (!save) {
+                return (T) data;
+            }
+
+            if (className.equals(EvalExamInfoDTO.class.getName())) {
+                EvalExamInfo info = LogConvertor.convertToEvalExamInfoEntity((EvalExamInfoDTO) data);
+                evalExamInfoDao.save(info);
+            } else if (className.equals(EvalExamRecordDTO.class.getName())) {
+                EvalExamRecord record = LogConvertor.convertToEvalExamRecordEntity((EvalExamRecordDTO) data);
+                evalExamRecordDao.save(record);
+            }
             return (T) data;
-        } catch (ClassNotFoundException e){
+        } catch (ClassNotFoundException|ClassCastException e){
             e.printStackTrace();
             return null;
+        }  catch (JSONException e) {
+            e.printStackTrace();
+            throw new ParsingException(e.toString(), 1);
         }
     }
 
     @Override
-    public String parseOpType(int opType) {
+    public String parseOpType(int opType) throws ParsingException {
+        if (!opTypesTable.containsKey(opType)) {
+            throw new ParsingException("不支持的操作类型:" + opType, 2);
+        }
         return opTypesTable.get(opType);
     }
 

+ 34 - 0
src/main/java/com/seecoder/dataanalysis/logic/user/UserService.java

@@ -0,0 +1,34 @@
+package com.seecoder.dataanalysis.logic.user;
+
+import com.seecoder.dataanalysis.vo.UpdateUserVO;
+import com.seecoder.dataanalysis.vo.UserVO;
+
+public interface UserService {
+    /**
+     * 新建用户
+     * @param userVO
+     * @return 从门户系统新建的用户
+     */
+    UserVO createUser(UserVO userVO);
+
+    /**
+     * 通过id获得用户
+     * @param id
+     * @return
+     */
+    UserVO getUserById(Integer id);
+
+    /**
+     * 从token获得的信息更新用户,保持和门户系统的一致。只能更新邮箱和用户名
+     * @param updateUserVO
+     * @return
+     */
+    UserVO updateUser(UpdateUserVO updateUserVO);
+
+    /**
+     * 判断某用户是否存在
+     * @param id
+     * @return
+     */
+    boolean existsById(Integer id);
+}

+ 19 - 0
src/main/java/com/seecoder/dataanalysis/logic/user/convertor/UserConvertor.java

@@ -0,0 +1,19 @@
+package com.seecoder.dataanalysis.logic.user.convertor;
+
+import com.seecoder.dataanalysis.data.entity.eval.User;
+import com.seecoder.dataanalysis.vo.UserVO;
+import org.springframework.beans.BeanUtils;
+
+public class UserConvertor {
+    public static User convertToEntity(UserVO userVO) {
+        User user = new User();
+        BeanUtils.copyProperties(userVO, user);
+        return user;
+    }
+
+    public static UserVO convertToVO(User user) {
+        UserVO userVO = new UserVO();
+        BeanUtils.copyProperties(user, userVO);
+        return userVO;
+    }
+}

+ 55 - 0
src/main/java/com/seecoder/dataanalysis/logic/user/impl/UserServiceImpl.java

@@ -0,0 +1,55 @@
+package com.seecoder.dataanalysis.logic.user.impl;
+
+import com.seecoder.dataanalysis.data.dao.eval.UserDao;
+import com.seecoder.dataanalysis.data.entity.eval.User;
+import com.seecoder.dataanalysis.exception.MyServiceException;
+import com.seecoder.dataanalysis.logic.user.UserService;
+import com.seecoder.dataanalysis.logic.user.convertor.UserConvertor;
+import com.seecoder.dataanalysis.vo.UpdateUserVO;
+import com.seecoder.dataanalysis.vo.UserVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+    private final UserDao userDao;
+
+    @Autowired
+    public UserServiceImpl(UserDao userDao) {
+        this.userDao = userDao;
+    }
+
+    @Override
+    public UserVO createUser(UserVO userVO) {
+        User user = userDao.save(UserConvertor.convertToEntity(userVO));
+        return UserConvertor.convertToVO(user);
+    }
+
+    @Override
+    public UserVO getUserById(Integer id) {
+        User user = userDao.findByUserId(id);
+        if (user != null) {
+            return UserConvertor.convertToVO(user);
+        } else {
+            throw new MyServiceException("A0201", "用户账号不存在");
+        }
+    }
+
+    @Override
+    public UserVO updateUser(UpdateUserVO updateUserVO) {
+        User user = userDao.findByUserId(updateUserVO.getId());
+        if (user != null) {
+            user.setEmail(updateUserVO.getEmail());
+            user.setUsername(updateUserVO.getName());
+            return UserConvertor.convertToVO(user);
+        } else {
+            throw new MyServiceException("A0201", "用户账号不存在");
+        }
+    }
+
+    @Override
+    public boolean existsById(Integer id) {
+        return userDao.existsByUserId(id);
+    }
+}

+ 39 - 0
src/main/java/com/seecoder/dataanalysis/util/JwtUtil.java

@@ -0,0 +1,39 @@
+package com.seecoder.dataanalysis.util;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.JWTVerificationException;
+import com.auth0.jwt.exceptions.TokenExpiredException;
+import com.auth0.jwt.interfaces.Claim;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import com.seecoder.dataanalysis.exception.MyServiceException;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class JwtUtil {
+    private static String jwtSecret;
+
+    @Value("${jwt.secret}")
+    public void setJwtSecret(String jwtSecret) { //通过set让static方法读取配置文件中的值
+        JwtUtil.jwtSecret = jwtSecret;
+    }
+
+    public static Claim parseJwt(String token){
+        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(jwtSecret)).build();
+        DecodedJWT decodedjwt;
+        try {
+            decodedjwt = jwtVerifier.verify(token);
+        } catch (TokenExpiredException e) {
+            throw new MyServiceException("A0230", "用户登陆已过期");
+        } catch (JWTVerificationException | IllegalArgumentException e) { //解析错误 或者 token写错
+            throw new MyServiceException("A0200", "登陆失败");
+        }
+//        if (decodedjwt.getClaim("exp").asDate().before(new Date())) {
+//            throw new  MyServiceException("A0230", "用户登陆已过期");
+//        }
+        return decodedjwt.getClaim("user_info");
+    }
+
+}

+ 4 - 0
src/main/java/com/seecoder/dataanalysis/vo/AnswerDTO.java

@@ -1,13 +1,17 @@
 package com.seecoder.dataanalysis.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author miaomuzhi
  * @since 2022/2/6
  */
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class AnswerDTO {
 
     @JSONField(name = "question_id")

+ 4 - 0
src/main/java/com/seecoder/dataanalysis/vo/EvalExamInfoDTO.java

@@ -1,7 +1,9 @@
 package com.seecoder.dataanalysis.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.Date;
 import java.util.List;
@@ -11,6 +13,8 @@ import java.util.List;
  * @since 2022/2/6
  */
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class EvalExamInfoDTO {
 
     /**

+ 4 - 0
src/main/java/com/seecoder/dataanalysis/vo/EvalExamRecordDTO.java

@@ -1,7 +1,9 @@
 package com.seecoder.dataanalysis.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.Date;
 import java.util.List;
@@ -11,6 +13,8 @@ import java.util.List;
  * @since 2022/2/6
  */
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class EvalExamRecordDTO {
 
     /**

+ 29 - 0
src/main/java/com/seecoder/dataanalysis/vo/PortalUserVO.java

@@ -0,0 +1,29 @@
+package com.seecoder.dataanalysis.vo;
+
+import com.seecoder.dataanalysis.enums.UserRole;
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class PortalUserVO {
+    private Integer id;
+
+    private String phone;
+
+    private String username;
+
+    private String name;
+
+    private String email;
+
+    private String photo;
+
+    private UserRole role = UserRole.STUDENT;
+
+    private String signature = "无";
+
+    private String createdTime;
+
+    private Boolean valid = true;
+}

+ 16 - 0
src/main/java/com/seecoder/dataanalysis/vo/UpdateUserVO.java

@@ -0,0 +1,16 @@
+package com.seecoder.dataanalysis.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@AllArgsConstructor
+@ToString
+public class UpdateUserVO {
+    private Integer id;
+
+    private String name;
+
+    private String email;
+}

+ 19 - 0
src/main/java/com/seecoder/dataanalysis/vo/UserVO.java

@@ -0,0 +1,19 @@
+package com.seecoder.dataanalysis.vo;
+
+import com.seecoder.dataanalysis.enums.UserRole;
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class UserVO {
+    private Integer id;
+
+    private UserRole role;
+
+    private String name;
+
+    private String email;
+
+    private String phone;
+}

+ 34 - 0
src/main/java/com/seecoder/dataanalysis/web/Response.java

@@ -0,0 +1,34 @@
+package com.seecoder.dataanalysis.web;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author mars
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Response {
+    private String code;
+    private String msg;
+    private Object result;
+
+    public Response(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public static Response buildSuccess(Object result) {
+        return new Response("00000", "Success", result);
+    }
+
+    public static Response buildFailed(String code, RuntimeException e) {
+        return new Response(code, e.getLocalizedMessage(), null);
+    }
+
+    public static Response buildFailed(String code, String msg) {
+        return new Response(code, msg, null);
+    }
+}

+ 26 - 0
src/main/java/com/seecoder/dataanalysis/web/controller/TestController.java

@@ -0,0 +1,26 @@
+package com.seecoder.dataanalysis.web.controller;
+
+
+import com.seecoder.dataanalysis.aspect.auth.Authorized;
+import com.seecoder.dataanalysis.enums.UserRole;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author uncln
+ */
+@RestController
+@RequestMapping(path = "/test")
+public class TestController {
+
+    @Autowired
+    public TestController(){}
+
+    @Authorized(roles = {UserRole.STUDENT})
+    @GetMapping("/test1")
+    public String testRequest() {
+        return "OK";
+    }
+}

+ 31 - 0
src/main/java/com/seecoder/dataanalysis/web/controller/UserController.java

@@ -0,0 +1,31 @@
+package com.seecoder.dataanalysis.web.controller;
+
+import com.seecoder.dataanalysis.aspect.auth.Authorized;
+import com.seecoder.dataanalysis.data.entity.eval.User;
+import com.seecoder.dataanalysis.logic.user.UserService;
+import com.seecoder.dataanalysis.web.Response;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author mars
+ */
+@RestController
+@RequestMapping(path = "/api/user")
+public class UserController {
+    private final UserService userService;
+    @Autowired
+    public UserController(UserService userService) {
+        this.userService = userService;
+    }
+
+    @GetMapping("")
+    @Authorized()
+    public Response getCurrentUser(User user) {
+        return Response.buildSuccess(userService.getUserById(user.getUserId()));
+    }
+
+}

+ 5 - 1
src/main/resources/application-dev.yml

@@ -6,4 +6,8 @@ spring:
       port: 27017
       username: root
       password: root
-      database: seec_data
+      database: seec_data
+
+jwt:
+  header: Authorization
+  secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW

+ 0 - 1
src/main/resources/application.properties

@@ -1 +0,0 @@
-

+ 33 - 0
src/test/java/com/seecoder/dataanalysis/logic/parser/convertor/LogConvertorTest.java

@@ -0,0 +1,33 @@
+package com.seecoder.dataanalysis.logic.parser.convertor;
+
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
+import com.seecoder.dataanalysis.vo.AnswerDTO;
+import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
+import com.seecoder.dataanalysis.vo.EvalExamRecordDTO;
+import org.assertj.core.util.Lists;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * @author miaomuzhi
+ * @since 2022/2/15
+ */
+class LogConvertorTest {
+
+    @Test
+    public void testConvertToEvalExamRecordEntity(){
+        EvalExamRecord record = LogConvertor.convertToEvalExamRecordEntity(new EvalExamRecordDTO(1,1,null, 0.1, null));
+        assertEquals(1, record.getExamId());
+        assertEquals(0, record.getErrorQuestions().size());
+    }
+
+    @Test
+    public void testConvertToEvalExamInfoEntity(){
+        EvalExamInfoDTO infoDTO = new EvalExamInfoDTO();
+        infoDTO.setQuestionAndScore(Lists.newArrayList(new AnswerDTO("123", 321), new AnswerDTO("aa", 100)));
+        EvalExamInfo info = LogConvertor.convertToEvalExamInfoEntity(infoDTO);
+        assertEquals(2, info.getQuestionAndScore().size());
+    }
+}

+ 16 - 6
src/test/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImplTest.java

@@ -1,5 +1,6 @@
 package com.seecoder.dataanalysis.logic.parser.impl;
 
+import com.seecoder.dataanalysis.logic.parser.ParsingException;
 import com.seecoder.dataanalysis.util.FileUtil;
 import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
 import com.seecoder.dataanalysis.vo.SimpleLog;
@@ -28,8 +29,13 @@ class LogParsingServiceImplTest {
     }
 
     @Test
-    void parseLog() {
-        assertNull(parsingService.parseLog("dsaf"));
+    void parseLog() throws ParsingException{
+        try {
+            parsingService.parseLog("dsaf");
+        } catch (Exception e) {
+            assertEquals(ParsingException.class.getName(), e.getClass().getName());
+        }
+
         String logContent = FileUtil.readFile(getClass().getResource("/sample_logs/gen0.log").getFile());
         SimpleLog simpleLog = parsingService.parseLog(logContent);
         assertEquals(0, simpleLog.getOpType());
@@ -37,7 +43,7 @@ class LogParsingServiceImplTest {
     }
 
     @Test
-    void parseLogData() {
+    void parseLogData() throws ParsingException {
         String logContent = FileUtil.readFile(getClass().getResource("/sample_logs/gen0.log").getFile());
         SimpleLog simpleLog = parsingService.parseLog(logContent);
         Object o = parsingService.parseLogData(simpleLog, false);
@@ -47,8 +53,12 @@ class LogParsingServiceImplTest {
     }
 
     @Test
-    void parseOpType() {
-        assertEquals("com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo", parsingService.parseOpType(0));
-        assertNull(parsingService.parseOpType(-1));
+    void parseOpType() throws ParsingException {
+        assertEquals("com.seecoder.dataanalysis.vo.EvalExamInfoDTO", parsingService.parseOpType(0));
+        try {
+            parsingService.parseOpType(-1);
+        } catch (Exception e) {
+            assertEquals(ParsingException.class.getName(), e.getClass().getName());
+        }
     }
 }

+ 1 - 1
src/test/resources/sample_logs/gen0.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"exam_score\":5,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"exam_score\":10,\"questions\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen1.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"19031\",\"question_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen10.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"3026\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":8,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen11.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0},{\"question_id\":\"3026\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen12.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"exam_score\":5,\"questions\":[{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"exam_score\":7,\"questions\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen13.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"21016\",\"question_score\":0},{\"question_id\":\"19033\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen14.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":6,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"19031\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen15.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"exam_score\":8,\"questions\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"exam_score\":9,\"questions\":[{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen16.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen17.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":7,\"error_ques\":[{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":7,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"19033\",\"question_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen18.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"exam_score\":6,\"questions\":[{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"exam_score\":5,\"questions\":[{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen19.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen2.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":2,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":9,\"error_ques\":[{\"question_id\":\"19035\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen20.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":8,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen21.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"exam_score\":11,\"questions\":[{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"exam_score\":4,\"questions\":[{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen22.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen23.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":9,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"3026\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen24.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"exam_score\":11,\"questions\":[{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"exam_score\":11,\"questions\":[{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen25.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":10,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen26.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":11,\"error_ques\":[]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":10,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":10,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen27.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"exam_score\":11,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"exam_score\":8,\"questions\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen28.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":8,\"error_ques\":[{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen29.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":11,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"21016\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen3.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"exam_score\":11,\"questions\":[{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"exam_score\":8,\"questions\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen30.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"exam_score\":7,\"questions\":[{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"exam_score\":11,\"questions\":[{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen31.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":8,\"error_ques\":[{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"19035\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen32.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"27019\",\"actual_score\":0},{\"question_id\":\"19037\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":12,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":11,\"error_ques\":[]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen33.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"exam_score\":11,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"exam_score\":7,\"questions\":[{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen34.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"19035\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen35.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":13,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen36.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"exam_score\":5,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"exam_score\":8,\"questions\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen37.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":8,\"error_ques\":[]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen38.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":14,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":7,\"error_ques\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen39.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"exam_score\":7,\"questions\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"exam_score\":9,\"questions\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen4.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"27019\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"19033\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen40.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":7,\"error_ques\":[]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen41.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":15,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"3026\",\"question_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"21016\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"19031\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen42.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"exam_score\":11,\"questions\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"exam_score\":11,\"questions\":[{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen43.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":11,\"error_ques\":[]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"19033\",\"question_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0},{\"question_id\":\"3026\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen44.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"19037\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":16,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":9,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0},{\"question_id\":\"3026\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen45.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"exam_score\":8,\"questions\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"exam_score\":5,\"questions\":[{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen46.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen47.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"19033\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":17,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen48.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"exam_score\":8,\"questions\":[{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"exam_score\":7,\"questions\":[{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen49.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":6,\"error_ques\":[{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"27019\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"3026\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen5.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"27019\",\"actual_score\":0},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":3,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"19031\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen50.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"19037\",\"actual_score\":0},{\"question_id\":\"27019\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":18,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":2,\"error_ques\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"19037\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen51.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"exam_score\":9,\"questions\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"exam_score\":11,\"questions\":[{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen52.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"19033\",\"question_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen53.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":7,\"error_ques\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19031\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":19,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":3,\"error_ques\":[{\"question_id\":\"21016\",\"question_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"JL-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen6.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"exam_score\":9,\"questions\":[{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"21016\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"exam_score\":8,\"questions\":[{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"27019\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen7.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":5,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19037\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"student_id\":\"1032\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0},{\"question_id\":\"27019\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen8.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":1,\"error_ques\":[{\"question_id\":\"19037\",\"actual_score\":0},{\"question_id\":\"21016\",\"actual_score\":0},{\"question_id\":\"19035\",\"actual_score\":0},{\"question_id\":\"I7-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"actual_score\":0},{\"question_id\":\"3026\",\"actual_score\":0},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"actual_score\":0},{\"question_id\":\"19030\",\"actual_score\":0}]}","message":""}
+{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":4,\"student_id\":\"1458\",\"submit_time\":\"2021-11-03 00:58:03\",\"score\":4,\"error_ques\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":0},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":0},{\"question_id\":\"Hr-u5nwBGvo2WgFxV3pt\",\"question_score\":0},{\"question_id\":\"19030\",\"question_score\":0}]}","message":""}

+ 1 - 1
src/test/resources/sample_logs/gen9.log

@@ -1 +1 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"exam_score\":7,\"questions\":[{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":1},{\"question_id\":\"Ir-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"19035\",\"question_score\":1},{\"question_id\":\"19033\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}
+{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":5,\"exam_score\":10,\"questions\":[{\"question_id\":\"19030\",\"question_score\":1},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":1},{\"question_id\":\"19037\",\"question_score\":1},{\"question_id\":\"Hb-u5nwBGvo2WgFxV3ps\",\"question_score\":1},{\"question_id\":\"3026\",\"question_score\":1},{\"question_id\":\"Ib-56nwBGvo2WgFx-3pf\",\"question_score\":1},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":1},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":1},{\"question_id\":\"19031\",\"question_score\":1},{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":1}],\"difficulty\":1,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 2 - 2
src/test/resources/sample_logs/gen_data.py

@@ -51,7 +51,7 @@ class Answer(object):
 class ErrorQuestion(object):
 	def __init__(self, question_id, actual_score):
 		self.question_id = question_id
-		self.actual_score = actual_score
+		self.question_score = actual_score
 
 
 def mock():
@@ -92,5 +92,5 @@ def main():
 			total_count += 1
 
 if __name__ == '__main__':
-	mock()
+	# mock()
 	main()

+ 0 - 1
src/test/resources/sample_logs/mock0.log

@@ -1 +0,0 @@
-{"target":1,"source":0,"op_type":0,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":1,\"exam_score\":100,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":12.5},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":12.5},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":12.5},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":12.5},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":12.5},{\"question_id\":\"27019\",\"question_score\":12.5},{\"question_id\":\"21016\",\"question_score\":12.5},{\"question_id\":\"3026\",\"question_score\":12.5}],\"difficulty\":0,\"update_time\":\"2021-09-29 17:15:00\",\"start_time\":\"2021-09-29 17:15:00\",\"end_time\":\"2021-09-29 19:15:00\"}","message":""}

+ 0 - 1
src/test/resources/sample_logs/mock1.log

@@ -1 +0,0 @@
-{"target":1,"source":0,"op_type":1,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":1,\"exam_score\":100,\"questions\":[{\"question_id\":\"d8009eb4-5833-424d-91c3-7dbc160a2a0a\",\"question_score\":12.5},{\"question_id\":\"b58e18a6-18f5-42b6-ab45-3ecbcb4c97ca\",\"question_score\":12.5},{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"question_score\":12.5},{\"question_id\":\"742fa61f-8c6f-4f62-a997-e5900263f77b\",\"question_score\":12.5},{\"question_id\":\"724eddaa-9414-4803-8920-579416eccccc\",\"question_score\":12.5},{\"question_id\":\"27019\",\"question_score\":12.5},{\"question_id\":\"21016\",\"question_score\":12.5},{\"question_id\":\"3026\",\"question_score\":12.5}],\"difficulty\":0,\"update_time\":\"2021-09-29 18:15:00\",\"start_time\":\"2021-11-03 0:15:00\",\"end_time\":\"2021-11-03 19:15:00\"}","message":""}

+ 0 - 1
src/test/resources/sample_logs/mock2.log

@@ -1 +0,0 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":1,\"student_id\":1032,\"submit_time\":\"2021-11-03 10:25:38\",\"score\":62.5,\"error_ques\":[{\"question_id\":\"290dc9de58cd4a37b9a7a52847ccd1ce\",\"actual_score\":0.0},{\"question_id\":\"21016\",\"actual_score\":0.0},{\"question_id\":\"3026\",\"actual_score\":0.0}]}","message":""}

+ 0 - 1
src/test/resources/sample_logs/mock3.log

@@ -1 +0,0 @@
-{"target":1,"source":0,"op_type":2,"created_time":"2021-12-29 17:15:00","data":"{\"exam_id\":1,\"student_id\":1458,\"submit_time\":\"2021-11-03 00:58:03\",\"score\":62.5,\"error_ques\":[{\"question_id\":\"27019\",\"actual_score\":0.0},{\"question_id\":\"21016\",\"actual_score\":0.0}]}","message":""}