소스 검색

fix(s8): capture related object for manual reports

YY968XX 2 달 전
부모
커밋
19e3dbfb00

+ 1 - 0
Web/src/views/aidop/s8/api/s8ReportApi.ts

@@ -14,6 +14,7 @@ export interface S8ReportCreate {
 	occurrenceDeptId: number;
 	responsibleDeptId: number;
 	reporterId?: number | null;
+	relatedObjectCode?: string;
 }
 
 export interface S8AttachmentCreate {

+ 1 - 1
Web/src/views/aidop/s8/dashboard/S8DashboardPage.vue

@@ -279,7 +279,7 @@ async function renderMainChart() {
 		const src = distributions.value?.byObject ?? [];
 		categories = src.map(x => x.key);
 		values     = src.map(x => x.count);
-		title = '受影响订单';
+		title = '受影响对象';
 		barColor = '#6366f1';
 	} else if (panel === 'occurrence') {
 		const src = distributions.value?.byOccurrenceDept ?? [];

+ 10 - 0
Web/src/views/aidop/s8/report/S8ManualReportPage.vue

@@ -33,6 +33,7 @@ const form = reactive({
 	responsibleDeptId: undefined as number | undefined,
 	tenantId: 1,
 	factoryId: 1,
+	relatedObjectCode: '',
 });
 
 async function loadOptions() {
@@ -122,6 +123,15 @@ onMounted(() => {
 					<el-option v-for="item in formOptions.scenes" :key="item.value" :label="item.label" :value="item.value" />
 				</el-select>
 			</el-form-item>
+			<el-form-item label="关联对象编码">
+				<el-input
+					v-model="form.relatedObjectCode"
+					placeholder="如订单项/订单/工单编码,可留空"
+					maxlength="64"
+					show-word-limit
+					clearable
+				/>
+			</el-form-item>
 			<el-form-item label="严重度">
 				<el-select v-model="form.severity" style="width: 240px">
 					<el-option v-for="item in formOptions.severities" :key="item.value" :label="item.label" :value="item.value" />

+ 2 - 0
server/Plugins/Admin.NET.Plugin.AiDOP/Dto/S8/AdoS8Dtos.cs

@@ -99,6 +99,8 @@ public class AdoS8ManualReportCreateDto
     public long OccurrenceDeptId { get; set; }
     public long ResponsibleDeptId { get; set; }
     public long? ReporterId { get; set; }
+    /// <summary>关联对象编码:当前按订单项 / 类订单项对象理解,允许重复,可为空。最长 64 字符(与 ado_s8_exception.related_object_code 一致)。</summary>
+    public string? RelatedObjectCode { get; set; }
 }
 
 public class AdoS8ManualReportResultDto

+ 3 - 0
server/Plugins/Admin.NET.Plugin.AiDOP/Service/S8/S8ManualReportService.cs

@@ -491,6 +491,9 @@ public class S8ManualReportService : ITransient
             // S8-PROCESS-NODE-MODULE-CODE-ALIGNMENT-EXEC-1:当前阶段 process_node_code 留空,
             // module_code 承担 S1-S7 主流程归属;process_node_code 留给未来更细流程节点。
             ProcessNodeCode = null,
+            // S8-MANUAL-RELATED-OBJECT-FILL-1:手工提报支持自由文本关联对象编码(订单项/类订单项),
+            // 空白归 null;不写 source_object_type / source_object_id / dedup_key(仍由自动监控链路独占)。
+            RelatedObjectCode = string.IsNullOrWhiteSpace(dto.RelatedObjectCode) ? null : dto.RelatedObjectCode.Trim(),
             CreatedAt = now,
             // S8-SLA-TIMEOUT-RUNTIME-1:sla_deadline 由 exception_type.sla_minutes 决定;缺配置 → null。
             SlaDeadline = slaDeadline,