吸收数字员工管理端日报审批裁决回写预览
This commit is contained in:
@@ -109,6 +109,16 @@ public class DigitalEmployeeAdminWorkbenchRowDto {
|
||||
private String sendRecordId;
|
||||
@JsonProperty("approval_decision_status")
|
||||
private String approvalDecisionStatus;
|
||||
@JsonProperty("daily_report_approval_id")
|
||||
private String dailyReportApprovalId;
|
||||
@JsonProperty("daily_report_approval_action")
|
||||
private String dailyReportApprovalAction;
|
||||
@JsonProperty("daily_report_approval_actor")
|
||||
private String dailyReportApprovalActor;
|
||||
@JsonProperty("daily_report_approval_reason")
|
||||
private String dailyReportApprovalReason;
|
||||
@JsonProperty("daily_report_approval_recorded_at")
|
||||
private String dailyReportApprovalRecordedAt;
|
||||
@JsonProperty("route_decision_id")
|
||||
private String routeDecisionId;
|
||||
@JsonProperty("service_id")
|
||||
|
||||
@@ -71,7 +71,7 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
"notification:mark_read", "notification:dismiss",
|
||||
"notification_policy:pull_policy", "notification_policy:mark_reviewed", "notification_policy:dismiss",
|
||||
"artifact:mark_keep", "artifact:mark_expire", "artifact:mark_reviewed", "artifact:record_cleanup_request",
|
||||
"daily_report:mark_delivered", "daily_report:mark_confirmed", "daily_report:request_approval",
|
||||
"daily_report:mark_delivered", "daily_report:mark_confirmed", "daily_report:request_approval", "daily_report:record_approval_decision",
|
||||
"memory:archive_memory", "memory:restore_memory", "memory:mark_reviewed",
|
||||
"skill:mark_reviewed", "skill:dismiss",
|
||||
"policy_snapshot:pull_policy", "policy_snapshot:mark_reviewed", "policy_snapshot:dismiss",
|
||||
@@ -1123,6 +1123,11 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
.dailyReportFactId(firstString(businessView.get("daily_report_fact_id"), businessView.get("dailyReportFactId"), payload.get("daily_report_fact_id"), payload.get("dailyReportFactId")))
|
||||
.sendRecordId(firstString(businessView.get("send_record_id"), businessView.get("sendRecordId"), payload.get("send_record_id"), payload.get("sendRecordId")))
|
||||
.approvalDecisionStatus(firstString(businessView.get("approval_decision_status"), businessView.get("approvalDecisionStatus"), payload.get("approval_decision_status"), payload.get("approvalDecisionStatus")))
|
||||
.dailyReportApprovalId(firstString(businessView.get("daily_report_approval_id"), businessView.get("dailyReportApprovalId"), payload.get("daily_report_approval_id"), payload.get("dailyReportApprovalId")))
|
||||
.dailyReportApprovalAction(firstString(businessView.get("daily_report_approval_action"), businessView.get("dailyReportApprovalAction"), payload.get("daily_report_approval_action"), payload.get("dailyReportApprovalAction")))
|
||||
.dailyReportApprovalActor(firstString(businessView.get("daily_report_approval_actor"), businessView.get("dailyReportApprovalActor"), payload.get("daily_report_approval_actor"), payload.get("dailyReportApprovalActor")))
|
||||
.dailyReportApprovalReason(firstString(businessView.get("daily_report_approval_reason"), businessView.get("dailyReportApprovalReason"), payload.get("daily_report_approval_reason"), payload.get("dailyReportApprovalReason")))
|
||||
.dailyReportApprovalRecordedAt(firstString(businessView.get("daily_report_approval_recorded_at"), businessView.get("dailyReportApprovalRecordedAt"), payload.get("daily_report_approval_recorded_at"), payload.get("dailyReportApprovalRecordedAt")))
|
||||
.routeDecisionId(firstString(businessView.get("route_decision_id"), payload.get("route_decision_id")))
|
||||
.serviceId(firstString(businessView.get("service_id"), businessView.get("serviceId"), payload.get("service_id"), payload.get("serviceId")))
|
||||
.serviceLeaseId(firstString(businessView.get("service_lease_id"), businessView.get("serviceLeaseId"), payload.get("service_lease_id"), payload.get("serviceLeaseId")))
|
||||
@@ -1321,7 +1326,9 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
private boolean isDailyReportRow(DigitalEmployeeAdminWorkbenchRowDto row) {
|
||||
return StringUtils.equals(row.getCategory(), "daily_report")
|
||||
|| startsWithAny(row.getKind(), "daily_report")
|
||||
|| StringUtils.isNotBlank(row.getReportId());
|
||||
|| StringUtils.isNotBlank(row.getReportId())
|
||||
|| StringUtils.isNotBlank(row.getDailyReportApprovalId())
|
||||
|| StringUtils.isNotBlank(row.getDailyReportApprovalAction());
|
||||
}
|
||||
|
||||
private boolean isGovernanceCommandRow(DigitalEmployeeAdminWorkbenchRowDto row) {
|
||||
|
||||
@@ -1719,16 +1719,32 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
"confirmed_at", "2026-06-13T10:00:00+08:00"
|
||||
),
|
||||
Map.of("id", "event-daily-report-2", "kind", "daily_report_confirmed")),
|
||||
record("outbox-task", "task", "task-1", 101L, new Date(13_000),
|
||||
record("outbox-daily-report-approval", "event", "event-daily-report-3", 101L, new Date(13_000),
|
||||
Map.ofEntries(
|
||||
Map.entry("entity_type", "event"),
|
||||
Map.entry("category", "daily_report"),
|
||||
Map.entry("kind", "daily_report_approval_decision_recorded"),
|
||||
Map.entry("status", "approved"),
|
||||
Map.entry("title", "日报审批裁决已记录"),
|
||||
Map.entry("report_id", "report-4"),
|
||||
Map.entry("daily_report_approval_id", "daily-report-approval-1"),
|
||||
Map.entry("daily_report_approval_action", "approved"),
|
||||
Map.entry("daily_report_approval_actor", "operator-1"),
|
||||
Map.entry("daily_report_approval_reason", "content_reviewed"),
|
||||
Map.entry("daily_report_approval_recorded_at", "2026-06-13T10:30:00+08:00"),
|
||||
Map.entry("approval_decision_status", "approved")
|
||||
),
|
||||
Map.of("id", "event-daily-report-3", "kind", "daily_report_approval_decision_recorded")),
|
||||
record("outbox-task", "task", "task-1", 101L, new Date(14_000),
|
||||
Map.of("entity_type", "task", "title", "普通任务", "status", "running"),
|
||||
Map.of("id", "task-1", "status", "running")),
|
||||
record("outbox-approval", "approval", "approval-1", 101L, new Date(14_000),
|
||||
record("outbox-approval", "approval", "approval-1", 101L, new Date(15_000),
|
||||
Map.of("entity_type", "approval", "title", "普通审批", "status", "pending"),
|
||||
Map.of("id", "approval-1", "status", "pending")),
|
||||
record("outbox-notification", "notification", "notification-1", 101L, new Date(15_000),
|
||||
record("outbox-notification", "notification", "notification-1", 101L, new Date(16_000),
|
||||
Map.of("entity_type", "notification", "title", "普通通知", "status", "unread"),
|
||||
Map.of("id", "notification-1", "status", "unread")),
|
||||
record("outbox-audit", "event", "event-audit-1", 101L, new Date(16_000),
|
||||
record("outbox-audit", "event", "event-audit-1", 101L, new Date(17_000),
|
||||
Map.of("entity_type", "event", "category", "tool_call_audit", "title", "审计", "status", "warn"),
|
||||
Map.of("id", "event-audit-1", "status", "warn"))
|
||||
)));
|
||||
@@ -1737,9 +1753,9 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
"daily_reports", null, null, null, null, null, null, null, null, null, null, null, 1L, 20L
|
||||
);
|
||||
|
||||
assertThat(result.getTotal()).isEqualTo(3);
|
||||
assertThat(result.getTotal()).isEqualTo(4);
|
||||
assertThat(result.getRecords()).extracting(DigitalEmployeeAdminWorkbenchRowDto::getEntityId)
|
||||
.containsExactly("report-1", "event-daily-report-1", "event-daily-report-2");
|
||||
.containsExactly("report-1", "event-daily-report-1", "event-daily-report-2", "event-daily-report-3");
|
||||
assertThat(result.getRecords().get(0).getView()).isEqualTo("daily_reports");
|
||||
assertThat(result.getRecords().get(0).getReportId()).isEqualTo("report-1");
|
||||
assertThat(result.getRecords().get(0).getCategory()).isEqualTo("daily_report");
|
||||
@@ -1751,6 +1767,11 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
assertThat(result.getRecords().get(1).getReportId()).isEqualTo("report-2");
|
||||
assertThat(result.getRecords().get(1).getBusinessView()).containsEntry("delivery_status", "delivered");
|
||||
assertThat(result.getRecords().get(2).getBusinessView()).containsEntry("confirmed_at", "2026-06-13T10:00:00+08:00");
|
||||
assertThat(result.getRecords().get(3).getDailyReportApprovalId()).isEqualTo("daily-report-approval-1");
|
||||
assertThat(result.getRecords().get(3).getDailyReportApprovalAction()).isEqualTo("approved");
|
||||
assertThat(result.getRecords().get(3).getDailyReportApprovalActor()).isEqualTo("operator-1");
|
||||
assertThat(result.getRecords().get(3).getDailyReportApprovalReason()).isEqualTo("content_reviewed");
|
||||
assertThat(result.getRecords().get(3).getDailyReportApprovalRecordedAt()).isEqualTo("2026-06-13T10:30:00+08:00");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user