CrazyIter_Bin 1 年之前
父节点
当前提交
d37e22dfbb

+ 1 - 1
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -1552,7 +1552,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                     }
 
                                 }
-                                // await BIStats.SetTypeAddStats(client, _dingDing,lessonRecord.school, "Less", 0, 1, lessonRecord.clientInteractionCount);//BI统计增/减量
+                                await BIStats.SetTypeAddStats(client, _dingDing,lessonRecord.school, "Less", 0, 1, lessonRecord.clientInteractionCount);//BI统计增/减量
                                 break;
                             //更新 时间线
                             case "up-TimeLine":

+ 156 - 142
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -339,6 +339,10 @@ namespace TEAMModelOS.SDK.Models
         /// periodAndSubject同时匹配学科和学段
         /// </summary>
         public string distribute { get; set; }
+        /// <summary>
+        /// 是否需要进行细项评分0,不需要对细项评分 1 需要对细项评分,细项评分自动计为总分。
+        /// </summary>
+        public int scoreDetail { get; set; } = 0;
     }
     public class RuleConfig {
         public string id { get; set; }
@@ -390,6 +394,10 @@ namespace TEAMModelOS.SDK.Models
         /// periodAndSubject同时匹配学科和学段
         /// </summary>
         public string distribute { get; set; }
+        /// <summary>
+        /// 是否需要进行细项评分0,不需要对细项评分 1 需要对细项评分,细项评分自动计为总分。
+        /// </summary>
+        public int scoreDetail { get; set; }
 
     }
     public class RuleConfigTree : RuleConfig
@@ -471,148 +479,6 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public List<string> item { get; set; } = new List<string>();
     }
-    /// <summary>
-    /// 在线培训模块的数据结构
-    /// </summary>
-    public class Training : CosmosEntity
-    {
-        //id  活动id,
-        public Training()
-        {
-            code = "Training";
-            pk = "Training";
-        }
-        /// <summary>
-        ///  //参加活动获得积分。根据最后评委打分,0-100的比例获得积分,不足一分按一分计算。
-        /// </summary>
-        public int balance { get; set; }
-        /// <summary>
-        /// "online", "submit", "exam"模块
-        /// </summary>
-        public List<string> modules { get; set; } = new List<string>();
-        public List<TrainingAbility> abilities { get; set; } = new List<TrainingAbility>();
-        public TrainingOnline online { get; set; }
-        public TrainingSubmit submit { get; set; }
-        public TrainingExam exam { get; set; }
-        public long stime { get; set; }
-        public long etime { get; set; }
-    }
-
-    public class TrainingOnline
-    {
-        /// <summary>
-        /// //最少学习多少积分 
-        /// </summary>
-        public int least { get; set; }
-        /// <summary>
-        ///  //至少修三个能力点
-        /// </summary>
-        public int limit { get; set; }
-    }
-    public class TrainingSubmit
-    {
-        public int balance { get; set; } //单个认证合格获得的积分0-5
-    }
-    public class TrainingExam
-    {
-        public int balance { get; set; } //单个认证合格获得的积分0-5
-    }
-    /// <summary>
-    /// 教研中心技能点
-    /// </summary>
-    public class TrainingAbility
-    {
-        /// <summary>
-        /// //学习完成获得积分,0-10
-        /// </summary>
-        public int balance { get; set; }
-        public string id { get; set; }
-        /// <summary>
-        ///新建字段 维度 对应 原来的 subjectId 学科
-        /// </summary>
-        public string dimension { get; set; }
-        /// <summary>
-        /// 标号 A1  A2 A3....
-        /// </summary>
-        public string no { get; set; }
-
-        /// <summary>
-        /// 册别name
-        /// </summary>
-        [Required(ErrorMessage = "{0} 必须填写")]
-        public string name { get; set; }
-        public List<AbilityTask> abilityTasks { get; set; } = new List<AbilityTask>();
-
-        public string desc { get; set; }
-        public string sug { get; set; }
-        public List<AbilityStds> stds { get; set; } = new List<AbilityStds>();
-        /// <summary>
-        ///自测练习题试卷 blob地址
-        /// </summary>
-        public string blob { get; set; }
-        /// <summary>
-        ///默认未设置0 必修1 通识2 选修3
-        /// </summary>
-        public int currency { get; set; }
-    }
-
-    public class Research : CosmosEntity
-    {
-        //id  活动id,
-        public Research()
-        {
-            code = "Research";
-            pk = "Research";
-        }
-        /// <summary>
-        ///  "sign", //关联HiTeach课例的时候,可自动关联。   "homework", //作业   "examLite", //评测   "vote", //投票  "survey" //问卷,  此处几个活动的id是 赛课大活动的id
-        /// </summary>
-        public List<string> modules { get; set; } = new List<string>();
-        public long stime { get; set; }
-        public long etime { get; set; }
-        public ResearchSign sign { get; set; }
-        public ResearchExamLite examLite { get; set; }
-        public ResearchHomework homework { get; set; }
-        public ResearchSurvey survey { get; set; }
-        public ResearchVote vote { get; set; }
-    }
-    public class ResearchSign
-    {
-        /// <summary>
-        /// //活动签到活得0-5
-        /// </summary>
-        public int balance { get; set; }
-    }
-    public class ResearchHomework
-    {
-        public List<string> type { get; set; } = new List<string>();
-
-        /// <summary>
-        /// //活动签到活得0-5
-        /// </summary>
-        public int balance { get; set; }
-    }
-    public class ResearchExamLite
-    {
-        /// <summary>
-        /// //完成评测练习,可获取0-5
-        /// </summary>
-        public int balance { get; set; }
-    }
-    public class ResearchVote
-    {
-        /// <summary>
-        /// //完成评测练习,可获取0-5
-        /// </summary>
-        public int balance { get; set; }
-    }
-    public class ResearchSurvey
-    {
-        /// <summary>
-        /// //完成评测练习,可获取0-5
-        /// </summary>
-        public int balance { get; set; }
-    }
 
     /// <summary>
     /// 本次活动的评审专家
@@ -859,6 +725,10 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public int status { get; set; } = -1;
         public double score { get; set; } = -1;
+        /// <summary>
+        /// 评分依据规则的细项得分,score 专家对细项的评分
+        /// </summary>
+        public List<RuleConfig> detailScore { get; set; }= new List<RuleConfig>();
 
     }
     
@@ -965,4 +835,148 @@ namespace TEAMModelOS.SDK.Models
         public string val { get; set; }
       
     }
+
+
+    /// <summary>
+    /// 在线培训模块的数据结构
+    /// </summary>
+    public class Training : CosmosEntity
+    {
+        //id  活动id,
+        public Training()
+        {
+            code = "Training";
+            pk = "Training";
+        }
+        /// <summary>
+        ///  //参加活动获得积分。根据最后评委打分,0-100的比例获得积分,不足一分按一分计算。
+        /// </summary>
+        public int balance { get; set; }
+        /// <summary>
+        /// "online", "submit", "exam"模块
+        /// </summary>
+        public List<string> modules { get; set; } = new List<string>();
+        public List<TrainingAbility> abilities { get; set; } = new List<TrainingAbility>();
+        public TrainingOnline online { get; set; }
+        public TrainingSubmit submit { get; set; }
+        public TrainingExam exam { get; set; }
+        public long stime { get; set; }
+        public long etime { get; set; }
+    }
+
+    public class TrainingOnline
+    {
+        /// <summary>
+        /// //最少学习多少积分 
+        /// </summary>
+        public int least { get; set; }
+        /// <summary>
+        ///  //至少修三个能力点
+        /// </summary>
+        public int limit { get; set; }
+    }
+    public class TrainingSubmit
+    {
+        public int balance { get; set; } //单个认证合格获得的积分0-5
+    }
+    public class TrainingExam
+    {
+        public int balance { get; set; } //单个认证合格获得的积分0-5
+    }
+    /// <summary>
+    /// 教研中心技能点
+    /// </summary>
+    public class TrainingAbility
+    {
+        /// <summary>
+        /// //学习完成获得积分,0-10
+        /// </summary>
+        public int balance { get; set; }
+        public string id { get; set; }
+        /// <summary>
+        ///新建字段 维度 对应 原来的 subjectId 学科
+        /// </summary>
+        public string dimension { get; set; }
+        /// <summary>
+        /// 标号 A1  A2 A3....
+        /// </summary>
+        public string no { get; set; }
+
+        /// <summary>
+        /// 册别name
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string name { get; set; }
+        public List<AbilityTask> abilityTasks { get; set; } = new List<AbilityTask>();
+
+        public string desc { get; set; }
+        public string sug { get; set; }
+        public List<AbilityStds> stds { get; set; } = new List<AbilityStds>();
+        /// <summary>
+        ///自测练习题试卷 blob地址
+        /// </summary>
+        public string blob { get; set; }
+        /// <summary>
+        ///默认未设置0 必修1 通识2 选修3
+        /// </summary>
+        public int currency { get; set; }
+    }
+
+    public class Research : CosmosEntity
+    {
+        //id  活动id,
+        public Research()
+        {
+            code = "Research";
+            pk = "Research";
+        }
+        /// <summary>
+        ///  "sign", //关联HiTeach课例的时候,可自动关联。   "homework", //作业   "examLite", //评测   "vote", //投票  "survey" //问卷,  此处几个活动的id是 赛课大活动的id
+        /// </summary>
+        public List<string> modules { get; set; } = new List<string>();
+        public long stime { get; set; }
+        public long etime { get; set; }
+        public ResearchSign sign { get; set; }
+        public ResearchExamLite examLite { get; set; }
+        public ResearchHomework homework { get; set; }
+        public ResearchSurvey survey { get; set; }
+        public ResearchVote vote { get; set; }
+    }
+    public class ResearchSign
+    {
+        /// <summary>
+        /// //活动签到活得0-5
+        /// </summary>
+        public int balance { get; set; }
+    }
+    public class ResearchHomework
+    {
+        public List<string> type { get; set; } = new List<string>();
+
+        /// <summary>
+        /// //活动签到活得0-5
+        /// </summary>
+        public int balance { get; set; }
+    }
+    public class ResearchExamLite
+    {
+        /// <summary>
+        /// //完成评测练习,可获取0-5
+        /// </summary>
+        public int balance { get; set; }
+    }
+    public class ResearchVote
+    {
+        /// <summary>
+        /// //完成评测练习,可获取0-5
+        /// </summary>
+        public int balance { get; set; }
+    }
+    public class ResearchSurvey
+    {
+        /// <summary>
+        /// //完成评测练习,可获取0-5
+        /// </summary>
+        public int balance { get; set; }
+    }
 }

+ 114 - 8
TEAMModelOS.SDK/Models/Service/Common/ActivityService.cs

@@ -193,7 +193,7 @@ namespace TEAMModelOS.SDK
             return activities;
         }
 
-        public static async Task<ReviewRule> UpsertReviewRule(ReviewRuleTree reviewRuleTree,Activity activity,AzureCosmosFactory _azureCosmos) 
+        public static async Task<(ReviewRule reviewRule, int invalidCode, string msg)> UpsertReviewRule(ReviewRuleTree reviewRuleTree,Activity activity, Contest contest, AzureCosmosFactory _azureCosmos) 
         {
             var nodes = new List<RuleConfig>();
             nodes= TreeToList(reviewRuleTree.trees, nodes);
@@ -209,15 +209,121 @@ namespace TEAMModelOS.SDK
                 sourceName=activity.name,
                 taskCount=reviewRuleTree.taskCount,
                 scoreRule=reviewRuleTree.scoreRule,
-                distribute=reviewRuleTree.distribute
+                distribute=reviewRuleTree.distribute,
+                scoreDetail=reviewRuleTree.scoreDetail,
             };
-            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS,Constant.Normal).UpsertItemAsync(reviewRule,new Azure.Cosmos.PartitionKey(reviewRule.code));
-            if (reviewRuleTree.upsertAsTemplate==1) {
-                reviewRule.code="ReviewRule-template";
-                reviewRule.type="template";
-             await   _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync(reviewRule,new Azure.Cosmos.PartitionKey(reviewRule.code));
+            //代码顺序不能动
+            var checkReult = CheckReviewRule(reviewRule, contest);
+            if (checkReult.invalidCode==200) {
+                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync(reviewRule, new Azure.Cosmos.PartitionKey(reviewRule.code));
+                if (reviewRuleTree.upsertAsTemplate==1)
+                {
+                    reviewRule.code="ReviewRule-template";
+                    reviewRule.type="template";
+                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync(reviewRule, new Azure.Cosmos.PartitionKey(reviewRule.code));
+                }
+            }
+            return (reviewRule,checkReult.invalidCode,checkReult.msg);
+        }
+
+        public static (int invalidCode, string msg) CheckReviewRule(ReviewRule reviewRule,Contest contest)
+        {
+            int invalidCode = -1;
+            string msg = "";
+            if (reviewRule.taskCount<=0) {
+                invalidCode=28;
+                msg="作品分配次数至少一次!";
+            }
+            if (reviewRule.taskCount==1  && reviewRule.scoreRule.Equals("only"))
+            {
+                invalidCode=200;
+            }
+            else
+            {
+                invalidCode=21;//分配次数一次,必须匹配only
+                msg="分配次数1次,必须匹配【默认统分】规则";
+            }
+            if (reviewRule.taskCount>=2  && (reviewRule.scoreRule.Equals("avg")||reviewRule.scoreRule.Equals("top")))
+            {
+                invalidCode=200;
+            }
+            else {
+                invalidCode=22;//分配次数2次,必须匹配avg,top
+                msg="分配次数2次,必须匹配【按平均分】,【按最高分】";
+            }
+            if (reviewRule.taskCount>=3  && (reviewRule.scoreRule.Equals("avg")||reviewRule.scoreRule.Equals("top")||reviewRule.scoreRule.Equals("rmLowAvg")||reviewRule.scoreRule.Equals("rmTopAvg")))
+            {
+                invalidCode=200;
+            }
+            else
+            {
+                invalidCode=23;//分配次数2次,必须匹配avg,top,rmLowAvg,rmTopAvg
+                msg="分配次数3次,必须匹配必须匹配【按平均分】,【按最高分】,【去掉最低分的平均分】,【去掉最高分的平均分】";
+            }
+            if (reviewRule.taskCount>=4  && (reviewRule.scoreRule.Equals("avg")||reviewRule.scoreRule.Equals("top")||reviewRule.scoreRule.Equals("rmLowAvg")||reviewRule.scoreRule.Equals("rmTopAvg")||reviewRule.scoreRule.Equals("rmLowTopAvg")))
+            {
+                invalidCode=200;
+            }
+            else
+            {
+                invalidCode=24;//分配次数2次,必须匹配avg,top,rmLowAvg,rmTopAvg,rmLowTopAvg
+                msg="分配次数4次,必须匹配必须匹配【按平均分】,【按最高分】,【去掉最低分的平均分】,【去掉最高分的平均分】,【去掉最高分和最低分的平均分】";
+            }
+            if (invalidCode==200) {
+                if (!string.IsNullOrWhiteSpace(reviewRule.distribute))
+                {
+                    if (reviewRule.distribute.Equals("period"))
+                    {
+                        var period = contest.sign?.fields?.Find(z => z.field.Equals("period"));
+                        if (period!= null)
+                        {
+                            invalidCode = 200;
+                        }
+                        else
+                        {
+                            invalidCode=25;
+                            msg="作品分配匹配规则为【学段】,但报名填写表单未配置。";
+                        }
+                    }
+                    else if (reviewRule.distribute.Equals("subject"))
+                    {
+                        var subject = contest.sign?.fields?.Find(z => z.field.Equals("subject"));
+                        if (subject!= null)
+                        {
+                            invalidCode = 200;
+                        }
+                        else
+                        {
+                            invalidCode=26;
+                            msg="作品分配匹配规则为【学科】,但报名填写表单未配置。";
+                        }
+                    }
+                    else if (reviewRule.distribute.Equals("periodAndSubject"))
+                    {
+                        var period = contest.sign?.fields?.Find(z => z.field.Equals("period"));
+                        var subject = contest.sign?.fields?.Find(z => z.field.Equals("subject"));
+                        if (subject!= null && period!= null)
+                        {
+                            invalidCode = 200;
+                        }
+                        else
+                        {
+                            invalidCode=27;
+                            msg="作品分配匹配规则为【学段,学科】,但报名填写表单未配置。";
+                        }
+                    }
+                    else {
+                        invalidCode=30;
+                        msg=$"作品分配匹配规则未识别【{reviewRule.distribute}】。";
+                    }
+                }
+                else {
+                    invalidCode=29;
+                    msg="作品分配匹配规则不能为空。";
+                }
+                
             }
-            return reviewRule;
+            return (invalidCode,msg);
         }
 
         public static List<RuleConfig> TreeToList(List<RuleConfigTree> trees, List<RuleConfig> nodes) {

+ 52 - 12
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -702,9 +702,13 @@ namespace TEAMModelOS.Controllers
                                                                 return Ok(new { code = 4, msg = "评审未配置" });
                                                             }
                                                             ReviewRuleTree ruleTree = _reviewConfig.ToObject<ReviewRuleTree>();
-                                                            var reviewRule = await ActivityService.UpsertReviewRule(ruleTree, activity, _azureCosmos);
-                                                            contest.review.ruleId = reviewRule.id;
-                                                            contest.review.ruleName = reviewRule.name;
+                                                            var reviewRuleResult = await ActivityService.UpsertReviewRule(ruleTree, activity,contest, _azureCosmos);
+                                                            if (reviewRuleResult.invalidCode!=200) 
+                                                            {
+                                                                return Ok(new {code = reviewRuleResult.invalidCode,msg = reviewRuleResult.msg });
+                                                            }
+                                                            contest.review.ruleId =reviewRuleResult. reviewRule.id;
+                                                            contest.review.ruleName = reviewRuleResult.reviewRule.name;
                                                         }
                                                         await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey(contest.code));
                                                         break;
@@ -954,16 +958,26 @@ namespace TEAMModelOS.Controllers
                             if (!string.IsNullOrWhiteSpace(ruleTree.id))
                             {
                                 Activity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemAsync<Activity>(ruleTree.id, new PartitionKey("Activity"));
-                                var reviewRuleDB = await ActivityService.UpsertReviewRule(ruleTree, activity, _azureCosmos);
-                                var tree = ActivityService.ListToTree(reviewRuleDB.configs);
+                                Contest contest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemAsync<Contest>(ruleTree.id, new PartitionKey("Contest"));
+                                var reviewRuleResult = await ActivityService.UpsertReviewRule(ruleTree, activity,contest, _azureCosmos);
+
+                                if (reviewRuleResult.invalidCode!=200)
+                                {
+                                    return Ok(new { code = reviewRuleResult.invalidCode, msg = reviewRuleResult.msg });
+                                }
+                                var tree = ActivityService.ListToTree(reviewRuleResult.reviewRule.configs);
                                 var reviewRule = new ReviewRuleTree
                                 {
-                                    id=reviewRuleDB.id,
-                                    name= reviewRuleDB.name,
-                                    owner= reviewRuleDB.owner,
-                                    sourceName= reviewRuleDB.sourceName,
+                                    id=reviewRuleResult.reviewRule.id,
+                                    name= reviewRuleResult.reviewRule.name,
+                                    owner= reviewRuleResult.reviewRule.owner,
+                                    sourceName= reviewRuleResult.reviewRule.sourceName,
                                     trees=tree,
-                                    desc=reviewRuleDB.desc
+                                    desc=reviewRuleResult.reviewRule.desc,
+                                    distribute=reviewRuleResult.reviewRule.distribute,
+                                    scoreDetail=reviewRuleResult.reviewRule.scoreDetail,
+                                    scoreRule=reviewRuleResult.reviewRule.scoreRule,
+                                    taskCount=reviewRuleResult.reviewRule.taskCount,
                                 };
                                 return Ok(new { reviewRule });
                             }
@@ -1689,13 +1703,39 @@ namespace TEAMModelOS.Controllers
                     //分配评审作品任务-检查
                     case bool when $"{grant_type}".Equals("allocation-task-check", StringComparison.OrdinalIgnoreCase): {
                             if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
-
+                            Azure.Response responseReviewRule =  await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("ReviewRule-disposable"));
+                            if (responseReviewRule.Status==200) {
+                                ReviewRule reviewRule = JsonDocument.Parse(responseReviewRule.Content).RootElement.ToObject<ReviewRule>();
+                                Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
+                                if (responseContest.Status==200) 
+                                {
+                                    Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
+                                    var result = ActivityService.CheckReviewRule(reviewRule, contest);
+                                    if (result.invalidCode==200)
+                                    {
+                                        Azure.Response responseActivityExpert = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync($"{_activityId}", new PartitionKey("ActivityExpert"));
+                                        if (responseActivityExpert.Status==200) {
+                                            ActivityExpert activityExpert = JsonDocument.Parse(responseActivityExpert.Content).RootElement.ToObject<ActivityExpert>();
+                                            if (activityExpert.experts.Count() >=reviewRule.taskCount)
+                                            {
+                                            }
+                                            else {
+                                                return Ok(new { code = 1, msg = "评审专家人数不应少于作品分配次数" });
+                                            }
+                                        }
+                                    }
+                                    else {
+                                        return Ok(new { code = 200, msg = result.msg });
+                                    }
+                                }
+                                //专家人数>=每个作品分配次数,同一作品才不会多次被分配到分配给同一个专家。
+                            }
                             break;
                         }
                     //分配评审作品任务-自动
                     case bool when $"{grant_type}".Equals("allocation-task-auto", StringComparison.OrdinalIgnoreCase):
                         {
-                            //专家人数>=每个作品分配次数,同一才不会多次被分配到分配给同一个专家。
+                          
                             break;
                         }
                     //分配评审作品任务-手动

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

@@ -181,7 +181,9 @@ namespace TEAMModelOS.Controllers
         [AuthToken(Roles = "teacher,admin")]
         [HttpPost("review")]
 
+# if !DEBUG
         [Authorize(Roles = "IES")]
+#endif
 
         public async Task<IActionResult> Review(JsonElement request)
         {
@@ -286,6 +288,12 @@ namespace TEAMModelOS.Controllers
                             if (ids.Any())
                             {
                                 string query = $" select value c from c where c.id in({string.Join(",", ids.Select(x => $"'{x}'"))}) ";
+
+                                //var result=   await client.GetContainer(Constant.TEAMModelOS, Constant.Student).GetList<StudentArtResult>(query, $"ArtResult-{_artId}", continuationToken, pageCount);
+                                //if (result.list.IsNotEmpty()) {
+                                //    results.AddRange(result.list);
+                                //    continuationToken=result.continuationToken;
+                                //}
                                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, Constant.Student).GetItemQueryStreamIterator
                                     (queryText: query, continuationToken: continuationToken, requestOptions: new QueryRequestOptions { MaxItemCount = pageCount, PartitionKey = new PartitionKey($"ArtResult-{_artId}") }))
                                 {