Quiz game - Crie perguntas, respostas e histórico para administradores

Estou trabalhando em um jogo que tem dois tipos de usuário; administrador e usuário, para que o administrador possa gerar quantas perguntas ele quiser, para que essas perguntas possam serNORMAL, MULTICHOICE, BINARI, SMALL_DESCRIPTION, sempre que o administrador desejar criar uma, ele deve decidir qual tipo de resposta deseja esta pergunta, também o tópico desta pergunta (pode ser um subtópico

Ele pode gerar um questionário, a maneira de gerar um questionário é que ele precisa selecionar as perguntas que criou ante

Além disso, ele pode verificar o histórico do usuário, significa que, com uma chamada para um endpoint, ele poderá verificar as perguntas que esse usuário fez (com a pontuação, qual pergunta falhou, o que ele respondeu

Tenho a partir de agora as aulasQuestion eAnswer mas estou meio preso com a pergunta gerar com resposta atribuída a um tópico e, em seguida, criando um questionário, porque também sinto falta do usuário nas duas partes, para saber qual usuário criou a pergunta / questionário e qual usuário respondeu à pergunta / teste e armazene alguns dados para fazer o histórico.

classe @My Question possui:

@Entity(name="question")
public class Question extends DateAudit {
@Id
@Column(name = "question_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "question_seq")
@SequenceGenerator(name = "question_seq", allocationSize = 1)
private Long id;

@Column(name = "text_question")
private String textQuestion; //The question itself "What's the name of ..."

@Column(name = "answerDescription")
@NotBlank(message = "Answer description")
private String answerDescription; //The answer to the question as an explanation

@Column(name = "isExamQuestion", nullable = false) 
private Boolean isExamQuestion; //A flag for the user to filter when he wants to do a question he only will see those that are not isExamQuestion, isExamQuestion are the questions that are going to appear when he wants to create a Quiz

@OneToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set<Answer> answers; //List of answers...

@Column(name = "answer_type", nullable = false) 
private String answerType; //I don't know if it goes here, but the answerType mentioned before NORMAL,MULTICHOICE,.... is to render on the user app

E a resposta

@Entity(name = "answer")
public class Answer extends DateAudit {

    @Id
    @Column(name = "answer_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "answer_seq")
    @SequenceGenerator(name = "answer_seq", allocationSize = 1)
    private Long id;

    @Column(name = "answerToQuestion") 
    @NotBlank(message = "Answer to question name can not be blank") 
    private String answerToQuestion; //If the questions is what's 2*2 this could be 3

    @ManyToOne 
    private Question question; //In what question appear that answer

    //Here I'm wondering if I have to add a flag saying isCorrect to detect if it's the correct answer or not

Como você pode ver, estou sentindo falta do material do tópico, do histórico e do questionário, e não estou fazendo referência a qual usuário fez a pergunta, ou questionário, ou resolveu o questionário, por favor, me guie como fazer isso ?

EDITA

Perguntas que recebi:

a pergunta é direcionada apenas a um usuário ou a um grupo de usuários?

A mesma pergunta ou questionário pode ser respondida para usuários diferentes, o que significa que o primeiro trimestre pode ser feito por 40 usuário

o questionário está relacionado ao tópico?

Ao criar um teste, você seleciona um tópico para selecionar as perguntas que possuem esse tópico. Exemplo: Criando um questionário de Aprenda a somar Vou ter que filtrar por tópico: Matemática e, em seguida, um SubTópico, para poder escolher as perguntas a serem inseridas no Questionário.

como planeja criar um tópico ou subtópico?

@Admin deve ter um ponto de extremidade para criar tópico ou subtópico, a partir de agora só existe um subtópico, não há subtópico de um subtópico, a partir de agora é Tópico: Matemática Subtópico: raiz quadrada. Portanto, antes de criar uma pergunta ou um questionário, o administrador deve primeiro criar um Tópico e, se ele quiser adicionar um subtópico, crie um. Assim, quando ele tentar criar uma Pergunta, ele poderá dizer que essa pergunta é do X topic / subtópico e essa pergunta pode ser atribuída a iss

O que você quer dizer com "histórico"?

Bem, isso é algo para o lado do administrador, o administrador deve ter um ponto de extremidade que, com um ID ou nome do usuário, retorne todo o questionário (primeiro ponto de extremidade) ou todas as perguntas (segundo ponto de extremidade) que o usuário fez, com a pontuação, número de falhas / número de corretas, mas estou imaginando que esse deve ser o front end. Faça o cálculo, ou seja, o endpoint retorna todas essas informações, Total de perguntas / teste realizado, Pontuação, que pergunta falhou, etc .. e, em seguida, no front-end, faça mais cálculo

questionAnswers(1)

yourAnswerToTheQuestion