CrazyIter_Bin 2 lat temu
rodzic
commit
284fee79ce

+ 1 - 1
TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

@@ -628,7 +628,7 @@ namespace TEAMModelOS.FunctionV4
                 }
                 info.standard = Math.Round(total > 0 ? Math.Pow(powSum / total, 0.5) : 0, 2);
                 double NewsRate = allScore > 0 ? Math.Round(NewsRateScore / allScore * 100, 2) : 0;
-                double qrate = Math.Round(qk / total * 100, 2);
+                double qrate = Math.Round(total >0?qk / total * 100:0, 2);
                 settlement.rate = NewsRate;
                 settlement.score = NewsRateScore;
                 settlement.stus = losStu;

+ 6 - 2
TEAMModelOS.FunctionV4/Lang/en-us.json

@@ -20,6 +20,10 @@
   "create-school": [ "Create schools in batches", "{tmdname}You successfully created schools in batch with Bi" ],
   "copy-file_area": [ "Batch copy file start", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }

+ 6 - 2
TEAMModelOS.FunctionV4/Lang/zh-cn.json

@@ -20,6 +20,10 @@
   "create-school": [ "批量创建学校", "{tmdname}您用BI批量创建学校成功" ],
   "copy-file_area": [ "批复制文件开始", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }

+ 6 - 2
TEAMModelOS.FunctionV4/Lang/zh-tw.json

@@ -20,6 +20,10 @@
   "create-school": [ "批量創建學校", "{tmdname}您用BI批量創建學校成功" ],
   "copy-file_area": [ "批復制文件開始", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }

+ 53 - 1
TEAMModelOS.SDK/Models/Cosmos/Student/StudentArtResult.cs

@@ -84,9 +84,61 @@ namespace TEAMModelOS.SDK.Models
         /// 评语
         /// </summary>
         public string comment { get; set; }
-        public List<ArtQuotaPdf> allSubjectQuotas { get; set; }
+        public List<ArtQuotaPdf> allSubjectQuotas { get; set; } = new List<ArtQuotaPdf>();
+        public List<ArtSubjectPdf> subjectPdfs { get; set; } = new List<ArtSubjectPdf>();
         public string blob { get; set;}
     }
+    /// <summary>
+    /// 艺术评测科目PDF
+    /// </summary>
+    public class ArtSubjectPdf {
+        /// <summary>
+        /// 科目id
+        /// </summary>
+        public string subjectId { get; set; }
+        /// <summary>
+        /// 科目id
+        /// </summary>
+        public string subjectName { get; set; }
+        /// <summary>
+        /// 知识点
+        /// </summary>
+        public List<ArtPointPdf> pointPdfs { get; set; } = new List<ArtPointPdf>();
+        public string comment { get; set; }
+    }
+
+    /// <summary>
+    /// 艺术评测知识点PDF
+    /// </summary>
+    public class ArtPointPdf
+    {
+        /// <summary>
+        /// 艺术评测考核维度
+        /// </summary>
+        public string dimension { get; set; }
+        /// <summary>
+        /// 艺术评测考核知识块
+        /// </summary>
+        public string block { get; set; }
+        /// <summary>
+        /// 艺术评测考核知识点
+        /// </summary>
+        public string point { get; set; }
+        /// <summary>
+        /// 得分
+        /// </summary>
+        public double score { get; set; }
+        /// <summary>
+        /// 得分率
+        /// </summary>
+        public double percent { get; set; }
+        /// <summary>
+        /// 知识点配分
+        /// </summary>
+        public double totalScore { get; set; }
+    }
+
+
     /// <summary>
     /// 艺术评测指标维度PDF输出。
     /// </summary>

+ 138 - 8
TEAMModelOS/Controllers/School/ArtReviewController.cs

@@ -1,7 +1,6 @@
 using Azure;
 using Azure.Cosmos;
 using DinkToPdf.Contracts;
-using DocumentFormat.OpenXml.Drawing.Charts;
 using HTEXLib.COMM.Helpers;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
@@ -124,6 +123,10 @@ namespace TEAMModelOS.Controllers
             string comment1 = "";
             string comment2 = "";
             string comment3 = "";
+            string comment4 = "";
+            string comment5 = "";
+            string comment_subject_music = "";
+            string comment_subject_painting = "";
             var jsonDoc = readFileJson(path);
             if (jsonDoc != null)
             {
@@ -139,7 +142,24 @@ namespace TEAMModelOS.Controllers
                 {
                     comment3 = $"{_c3}";
                 }
+                if (jsonDoc.RootElement.TryGetProperty("art-template-comment4", out JsonElement _c4))
+                {
+                    comment4 = $"{_c4}";
+                }
+                if (jsonDoc.RootElement.TryGetProperty("art-template-comment5", out JsonElement _c5))
+                {
+                    comment5 = $"{_c5}";
+                }
+                if (jsonDoc.RootElement.TryGetProperty("art-template-subject_music", out JsonElement _subject_music))
+                {
+                    comment_subject_music = $"{_subject_music}";
+                }
+                if (jsonDoc.RootElement.TryGetProperty("art-template-subject_painting", out JsonElement _subject_painting))
+                {
+                    comment_subject_painting = $"{_subject_painting}";
+                }
             }
+
             var client = _azureCosmos.GetCosmosClient();
             string query = $" select value c from c where c.school  = '{_schoolId}' ";
             List<StudentArtResult> artResults = new List<StudentArtResult>();
@@ -150,7 +170,48 @@ namespace TEAMModelOS.Controllers
             {
                 artResults.Add(item);
             }
+            var allExamIds= art.settings.SelectMany(x => x.task).Where(z => z.type==1);
             var subjects = art.subjects;
+            //获取学校的所有艺术科目的uuid,并映射找到相应的知识点,知识块。
+            var schoolSubjects= school.period.SelectMany(x => x.subjects).Where(s => !string.IsNullOrWhiteSpace(s.bindId) && subjects.Select(z=>z.id).Contains(s.bindId));
+            StringBuilder sql = new StringBuilder($"select value(c) from c");
+            List<KeyValuePair<string, List<Block>>> subjectBindBlocks = new List<KeyValuePair<string, List<Block>>>();
+            foreach (var schSub in schoolSubjects) {
+                List<Block> blocks = new List<Block>();
+                string code = $"Knowledge-{_schoolId}-{schSub.id}";
+                await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School")
+                    .GetItemQueryIterator<Knowledge>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{code}") }))
+                {
+                    item.blocks.ForEach(x =>
+                    {
+                        var block = blocks.Find(z => z.name.Equals(x.name));
+                        if (block != null)
+                        {
+                            block.points.AddRange(x.points);
+                        }
+                        else {
+                            blocks.Add(x);
+                        }
+                    });
+                }
+                subjectBindBlocks.Add(new KeyValuePair<string, List<Block>>(schSub.bindId, blocks));
+            }
+            List<ExamInfo> exams = new List<ExamInfo>();
+            List<ExamResult> examResults = new();
+            if (allExamIds.Any()) {
+                var queryExam = $"select  value c  from c where c.id  in  ({string.Join(",",allExamIds.Select(x=>$"'{x.acId}'"))}) ";
+                await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamInfo>(queryText: queryExam, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Exam-{_schoolId}") }))
+                {
+                    exams.Add(item);
+                }
+                foreach (var allexamId in allExamIds) {
+                    var queryResult = $"select c.id,c.name,c.subjectId,c.studentScores,c.studentIds,c.paper,c.classes,c.sRate,c.average,c.standard,c.lostStus,c.record,c.phc,c.plc,c.examId from c where c.examId = '{allexamId.acId}' and c.subjectId = '{allexamId.subject}' ";
+                    await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<ExamResult>(queryText: queryResult, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ExamResult-{allexamId.acId}") }))
+                    {
+                        examResults.Add(item);
+                    }
+                }
+            }
             (List<RMember> rmembers, List<RGroupList> groups) = await GroupListService.GetMemberByListids(_coreAPIHttpService, client, _dingDing, art.classes, art.school);
             List<ArtStudentPdf> studentPdfs = new List<ArtStudentPdf>();
             artResults.ForEach(x =>
@@ -347,7 +408,6 @@ namespace TEAMModelOS.Controllers
                 }
                 string periodId = "";
                 string periodName = "";
-                string schoolName = "";
                 if (periodIds.Any())
                 {
                     var ps = school.period.FindAll(x => periodIds.Contains(x.id));
@@ -357,7 +417,43 @@ namespace TEAMModelOS.Controllers
                         periodId = String.Join(",", ps.Select(x => x.id));
                     }
                 }
-
+                List<ArtSubjectPdf> subjectPdfs = new List<ArtSubjectPdf>();
+                exams.ForEach(exam => {
+                    var result= examResults.FindAll(e => e.examId.Equals(exam.id));
+                    if (result.Any()) {
+                        var datas =  DoKnowledgePoint(result.First(), exam, x.studentId);
+                        if (exam.subjects.Any()) {
+                            ArtSubjectPdf artSubjectPdf = new ArtSubjectPdf() {
+                                subjectId= exam.subjects.First().id,
+                                subjectName=exam.subjects.First().name
+                            };
+                           
+                            datas.pointScores.Value.ForEach(k => {
+                                var  artPointPdfs=GetBlockAndDimension(k.score,k.tscore ,artSubjectPdf.subjectId,k.name,subjectBindBlocks,artSetting);
+                                artSubjectPdf.pointPdfs.AddRange(artPointPdfs);
+                            });
+                            var pointHigh= artSubjectPdf.pointPdfs.Where(z => z.percent >= 0.8).Select(z=>z.point).ToHashSet();
+                            var pointLow = artSubjectPdf.pointPdfs.Where(z => z.percent < 0.6).Select(z => z.point).ToHashSet();
+                            StringBuilder comment = new StringBuilder();
+                            if (pointHigh.Any()) {
+                                comment.Append(comment4.Replace("{pointHigh}", string.Join("、", pointHigh)));
+                            }
+                            if (pointLow.Any())
+                            {
+                                comment.Append(comment5.Replace("{pointLow}", string.Join("、", pointLow)));
+                            }
+                            if (artSubjectPdf.subjectId.Equals("subject_music")) {
+                                comment.Append(comment_subject_music);
+                            }
+                            if (artSubjectPdf.subjectId.Equals("subject_painting"))
+                            {
+                                comment.Append(comment_subject_painting);
+                            }
+                            artSubjectPdf.comment = comment.ToString();
+                            subjectPdfs.Add(artSubjectPdf);
+                        }
+                    }
+                });
                 ArtStudentPdf studentPdf = new ArtStudentPdf
                 {
                     artId = art.id,
@@ -374,6 +470,7 @@ namespace TEAMModelOS.Controllers
                     score = allScore,
                     allSubjectQuotas = allSubjectQuotas.ToList(),
                     comment = comment.ToString(),
+                    subjectPdfs= subjectPdfs,
                 };
                 studentPdfs.Add(studentPdf);
             });
@@ -381,6 +478,33 @@ namespace TEAMModelOS.Controllers
             return Ok(new { studentPdfs = studentPdfs });
         }
 
+        private List<ArtPointPdf> GetBlockAndDimension(double score,double tscore ,string subjectId , string point, List<KeyValuePair<string, List<Block>>> subjectBindBlocks, ArtSetting artSetting) {
+            var block=  subjectBindBlocks.Find(z => z.Key.Equals(subjectId));
+            List<ArtPointPdf> artPointPdfs = new List<ArtPointPdf>();
+            if (!string.IsNullOrWhiteSpace(block.Key)) {
+                block.Value.ForEach(z => {
+                    if (z.points.Contains(point)) {
+                        var dims = artSetting.dimensions.FindAll(m => m.blocks.Contains(z.name));
+                        if (dims.Any()) {
+                            foreach (var dim in dims) {
+                                artPointPdfs.Add(
+                                    new ArtPointPdf
+                                    {
+                                        dimension = dim.dimension,
+                                        block = z.name,
+                                        point = point,
+                                        totalScore = score,
+                                        score = tscore,
+                                        percent = score > 0 ? tscore * 1.0 / score : 0,
+                                    }
+                                );
+                            }
+                        }
+                    }
+                });
+            }
+            return artPointPdfs;
+        }
         private JsonDocument readFileJson(string path)
         {
             var sampleJson = System.IO.File.ReadAllBytes(path).AsSpan();
@@ -671,7 +795,10 @@ namespace TEAMModelOS.Controllers
                 {
                     examResults.Add(item);
                 }*/
-    private static (KeyValuePair<string, List<string>>, KeyValuePair<string, List<(string name, double score)>>, KeyValuePair<string, List<(string name, double score)>>) DoKnowledgePoint(ExamResult exam, ExamInfo info, string studentId)
+    private static (KeyValuePair<string, List<string>> knowledgeName, 
+            KeyValuePair<string, List<(string name, double score)>> pointScore,
+            KeyValuePair<string, List<(string name, double score)>> pointTScore,
+            KeyValuePair<string, List<(string name, double score,double tscore)>> pointScores) DoKnowledgePoint(ExamResult exam, ExamInfo info, string studentId)
         {
             HashSet<string> knowledge = new();
             List<double> point = new();
@@ -703,7 +830,7 @@ namespace TEAMModelOS.Controllers
             }
             else
             {
-                return (default, default, default);
+                return (default, default, default,default);
             }
             point = info.papers[index].point;
             result = exam.studentScores;
@@ -725,6 +852,7 @@ namespace TEAMModelOS.Controllers
             //学生得分情况
             List<(string name, double score)> pointScore = new();
             List<(string name, double score)> pointTScore = new();
+            List<(string name, double score,double tscore)> pointScores = new();
             for (int k = 0; k < knowledgeName.Count; k++)
             {
                 double OnePoint = 0;
@@ -747,13 +875,15 @@ namespace TEAMModelOS.Controllers
                 });
                 //单个知识点的配分
                 pointScore.Add((knowledgeName[k], OnePoint));
-                pointScore.Add((knowledgeName[k], scores));
+                pointTScore.Add((knowledgeName[k], scores));
+                pointScores.Add((knowledgeName[k], OnePoint, scores));
 
             }
             KeyValuePair<string, List<string>> key1 = new(exam.subjectId, knowledgeName);
             KeyValuePair<string, List<(string name, double score)>> key2 = new(exam.subjectId, pointScore);
-            KeyValuePair<string, List<(string name, double score)>> key3 = new(exam.subjectId, pointTScore);      
-            return (key1, key2, key3);
+            KeyValuePair<string, List<(string name, double score)>> key3 = new(exam.subjectId, pointTScore);
+            KeyValuePair<string, List<(string name, double score,double  tscore)>> key4 = new(exam.subjectId, pointScores);
+            return (key1, key2, key3, key4 );
         }
     }
 

+ 110 - 0
TEAMModelOS/Controllers/School/OverallEducationController.cs

@@ -0,0 +1,110 @@
+using Azure;
+using Azure.Cosmos;
+using DinkToPdf.Contracts;
+using DocumentFormat.OpenXml.Drawing.Charts;
+using FastJSON;
+using HTEXLib.COMM.Helpers;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using TEAMModelOS.Filter;
+using TEAMModelOS.Models;
+using TEAMModelOS.SDK;
+using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.Extension;
+using TEAMModelOS.SDK.Models;
+using TEAMModelOS.SDK.Models.Cosmos.Common;
+using TEAMModelOS.SDK.Models.Service;
+namespace TEAMModelOS.Controllers
+{
+
+    [ProducesResponseType(StatusCodes.Status200OK)]
+    [ProducesResponseType(StatusCodes.Status400BadRequest)]
+
+    [Route("school/overall-education")]
+    [ApiController]
+    public class OverallEducationController : ControllerBase
+    {
+        public IWebHostEnvironment _environment { get; set; }
+        private readonly AzureCosmosFactory _azureCosmos;
+        private readonly SnowflakeId _snowflakeId;
+        private readonly AzureServiceBusFactory _serviceBus;
+        private readonly DingDing _dingDing;
+        private readonly Option _option;
+        private readonly AzureStorageFactory _azureStorage;
+        private readonly AzureRedisFactory _azureRedis;
+        private readonly IConverter _converter;
+        public IConfiguration _configuration { get; set; }
+        private readonly CoreAPIHttpService _coreAPIHttpService;
+        private readonly HttpTrigger _httpTrigger;
+        public OverallEducationController(HttpTrigger httpTrigger, IConverter converter, CoreAPIHttpService coreAPIHttpService, AzureCosmosFactory azureCosmos, AzureServiceBusFactory serviceBus, SnowflakeId snowflakeId, DingDing dingDing,
+           IOptionsSnapshot<Option> option, AzureStorageFactory azureStorage, AzureRedisFactory azureRedis, IConfiguration configuration, IWebHostEnvironment env)
+        {
+            _environment = env;
+            _coreAPIHttpService = coreAPIHttpService;
+            _azureCosmos = azureCosmos;
+            _serviceBus = serviceBus;
+            _snowflakeId = snowflakeId;
+            _dingDing = dingDing;
+            _option = option?.Value;
+            _azureStorage = azureStorage;
+            _azureRedis = azureRedis;
+            _configuration = configuration;
+            _converter = converter;
+            _httpTrigger = httpTrigger;
+        }
+        /// <summary>
+        /// 获取看板的基本条件
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
+        [HttpPost("overview-cond")]
+        [AuthToken(Roles = "teacher,admin")]
+        [Authorize(Roles = "IES")]
+        public async Task<IActionResult> OverviewCond(JsonElement json)
+        {
+            json.TryGetProperty("schoolId", out JsonElement schoolId);
+            json.TryGetProperty("periodId", out JsonElement periodId);
+            var client = _azureCosmos.GetCosmosClient();
+            StringBuilder classsql = new StringBuilder($"SELECT count(1)  FROM c where  ( c.graduate = 0 or  IS_DEFINED(c.graduate) = false )");
+            if (!string.IsNullOrEmpty($"{periodId}"))
+            {
+                classsql.Append($" and  c.periodId='{periodId}' ");
+            }
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<ClassInfo>(queryText: classsql.ToString(),
+                           requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{schoolId}") }))
+            {
+            }
+            return Ok();
+        }
+        [HttpPost("overview")]
+        [AuthToken(Roles = "teacher,admin")]
+        [Authorize(Roles = "IES")]
+        public async Task<IActionResult> Overview(JsonElement json)
+        {
+            json.TryGetProperty("schoolId", out JsonElement schoolId);
+            json.TryGetProperty("periodId", out JsonElement periodId);
+            var client = _azureCosmos.GetCosmosClient();
+            StringBuilder classsql = new StringBuilder($"SELECT count(1)  FROM c where  ( c.graduate = 0 or  IS_DEFINED(c.graduate) = false )");
+            if (!string.IsNullOrEmpty($"{periodId}"))
+            {
+                classsql.Append($" and  c.periodId='{periodId}' ");
+            }
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<ClassInfo>(queryText: classsql.ToString(),
+                           requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{schoolId}") })) { 
+            }
+                return Ok();
+        }
+    }
+}

+ 6 - 2
TEAMModelOS/Lang/en-us.json

@@ -20,6 +20,10 @@
   "create-school": [ "Create schools in batches", "{tmdname}You successfully created schools in batch with Bi" ],
   "copy-file_area": [ "Batch copy file start", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }

+ 6 - 2
TEAMModelOS/Lang/zh-cn.json

@@ -20,6 +20,10 @@
   "create-school": [ "批量创建学校", "{tmdname}您用BI批量创建学校成功" ],
   "copy-file_area": [ "批复制文件开始", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }

+ 6 - 2
TEAMModelOS/Lang/zh-tw.json

@@ -20,6 +20,10 @@
   "create-school": [ "批量創建學校", "{tmdname}您用BI批量創建學校成功" ],
   "copy-file_area": [ "批復制文件開始", "{tmdname}您用BI创区成功开始复制区域文件" ],
   "art-template-comment1": "{studentName}同学,你在本次艺术评测活动中整体{level}。",
-  "art-template-comment2": "你在本次活动中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
-  "art-template-comment3": "你在本次活动中{quotasLow}等指标有待提高,希望进一步加强。"
+  "art-template-comment2": "你在本次考核中{quotasHigh}等指标取得很好的成绩,希望继续保持。",
+  "art-template-comment3": "你在本次考核中{quotasLow}等指标有待提高,希望进一步加强。",
+  "art-template-comment4": "你在本次考核中{pointHigh}等知识点取得很好的成绩,希望继续保持。",
+  "art-template-comment5": "你在本次考核中{pointLow}等知识有待提高,希望进一步加强。",
+  "art-template-subject_music": "其实音乐殿堂的门槛并没有你想的那么高,对吧?希望你继续努力能够在这里欣赏到更美丽的风景!跳动的音符充满魅力,每个人的生活都离不开音乐,加油吧,相信你在音乐中会有所收获的。",
+  "art-template-subject_painting": "你敢于探素,乐于欣赏,在五彩的画笔中快乐成长,如果你再多一点耐心、仔细刻画,一定会更棒!你积极热爱美术,总是充满快乐,希望你能够坚持美术学习,永不放弃,在美术的道路上快乐地成长!"
 }