Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dbupdates/patch20240116.sql =================================================================== diff -u --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dbupdates/patch20240116.sql (revision 0) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dbupdates/patch20240116.sql (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -0,0 +1,14 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +-- LAI-9 Add column to store AI review +ALTER TABLE tl_ladoku11_session ADD COLUMN ai_review TEXT; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java =================================================================== diff -u -rdbb83a20e36def6c8cb9763e542714cef162e0a2 -rc22dc7a368dcb33d2500603a3595a540bee1d695 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision dbb83a20e36def6c8cb9763e542714cef162e0a2) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -37,6 +37,7 @@ private ItemRatingDTO itemRatingDto; private int numberOfLearners; private boolean sessionFinished; + private String aiReview; private final Map galleryWalkClusterMembers = new LinkedHashMap<>(); public Long getSessionId() { @@ -103,6 +104,14 @@ this.sessionFinished = sesssionFinished; } + public String getAiReview() { + return aiReview; + } + + public void setAiReview(String aiReview) { + this.aiReview = aiReview; + } + public Map getGalleryWalkClusterMembers() { return galleryWalkClusterMembers; } Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java =================================================================== diff -u -r305246a229ea020cd0677daa6fc7953772f7ed54 -rc22dc7a368dcb33d2500603a3595a540bee1d695 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java (.../DokumaranSession.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java (.../DokumaranSession.java) (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -81,6 +81,9 @@ @Column(name = "etherpad_read_only_id") private String etherpadReadOnlyId; + @Column(name = "ai_review") + private String aiReview; + @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "tl_ladoku11_gallery_walk_cluster", joinColumns = { @JoinColumn(name = "source_session_uid") }, inverseJoinColumns = { @@ -200,6 +203,14 @@ return EtherpadUtil.getPadId(etherpadGroupId); } + public String getAiReview() { + return aiReview; + } + + public void setAiReview(String aiReview) { + this.aiReview = aiReview; + } + public Set getGalleryWalkCluster() { return galleryWalkCluster; } Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -r6e27c5c2349b310d7259708c2b49314c91c01605 -rc22dc7a368dcb33d2500603a3595a540bee1d695 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 6e27c5c2349b310d7259708c2b49314c91c01605) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -530,6 +530,7 @@ group.setSessionFinished(DokumaranConstants.COMPLETED == session.getStatus()); group.setPadId(session.getPadId()); group.setReadOnlyPadId(session.getEtherpadReadOnlyId()); + group.setAiReview(session.getAiReview()); //mark all session that has had problems with pad initializations so that they could be fixed in monitoring by a teacher if (StringUtils.isEmpty(session.getEtherpadReadOnlyId()) || StringUtils.isEmpty( Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -r4db0ed7356ee080eed8914ef7b01fc7cc51e5c9f -rc22dc7a368dcb33d2500603a3595a540bee1d695 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 4db0ed7356ee080eed8914ef7b01fc7cc51e5c9f) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -579,9 +579,9 @@ return formattedDate; } - @RequestMapping(path = "/aiReview", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + @RequestMapping(path = "/getAiReviewPromptData", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody - public String aiReview(@RequestParam Long toolSessionId) { + public String getAiReviewPromptData(@RequestParam Long toolSessionId) { boolean isAiEnabled = Configuration.isLamsModuleAvailable(Configuration.AI_MODULE_CLASS); if (!isAiEnabled) { throw new UnsupportedOperationException("AI module is not enabled"); @@ -595,9 +595,8 @@ .append(dokumaran.getInstructions()).append("\n\n").toString()); } if (StringUtils.isNotBlank(dokumaran.getDescription())) { - responseJSON.put("description", - new StringBuilder("\n").append(AI_REVIEW_TEMPLATE_DESCRIPTION).append("\n").append(dokumaran.getDescription()) - .append("\n\n").toString()); + responseJSON.put("description", new StringBuilder("\n").append(AI_REVIEW_TEMPLATE_DESCRIPTION).append("\n") + .append(dokumaran.getDescription()).append("\n\n").toString()); } try { String padContent = dokumaranService.getPadText(toolSessionId); @@ -611,6 +610,22 @@ return responseJSON.toString(); } + @RequestMapping(path = "/saveAiReview", method = RequestMethod.POST) + @ResponseBody + @ResponseStatus(HttpStatus.OK) + public void saveAiReview(@RequestParam Long toolSessionId, @RequestParam(required = false) String review) { + boolean isAiEnabled = Configuration.isLamsModuleAvailable(Configuration.AI_MODULE_CLASS); + if (!isAiEnabled) { + throw new UnsupportedOperationException("AI module is not enabled"); + } + DokumaranSession session = dokumaranService.getDokumaranSessionBySessionId(toolSessionId); + if (StringUtils.isBlank(review)) { + review = null; + } + session.setAiReview(review); + dokumaranService.saveOrUpdate(session); + } + private Integer getUserId() { HttpSession ss = SessionManager.getSession(); UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); Index: lams_tool_doku/web/pages/monitoring/summary.jsp =================================================================== diff -u -r4db0ed7356ee080eed8914ef7b01fc7cc51e5c9f -rc22dc7a368dcb33d2500603a3595a540bee1d695 --- lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 4db0ed7356ee080eed8914ef7b01fc7cc51e5c9f) +++ lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision c22dc7a368dcb33d2500603a3595a540bee1d695) @@ -502,7 +502,7 @@ container.children('.ai-review-button-clearfix').remove(); $.ajax({ - 'url': '', + 'url': '', 'type': 'get', 'dataType': 'json', 'cache': 'false', @@ -528,9 +528,19 @@ }, success: function (response) { content.html(response); + $.ajax({ + 'url': '', + 'type': 'post', + 'dataType': 'text', + 'cache': 'false', + 'data': { + 'toolSessionId': toolSessionId, + 'review' : response + } + }); }, error: function () { - content.text('') + content.text(''); }, complete: function (){ content.removeClass('hidden'); @@ -780,12 +790,16 @@ title=''>   -
-

- +
+ +