diff --git a/src/app/pages/workspace-dashboard/workspace-dashboard.css b/src/app/pages/workspace-dashboard/workspace-dashboard.css
index 97b72b4..849f54f 100644
--- a/src/app/pages/workspace-dashboard/workspace-dashboard.css
+++ b/src/app/pages/workspace-dashboard/workspace-dashboard.css
@@ -235,3 +235,21 @@
.connector.active {
background: var(--color-success);
}
+
+/* Report Filter and Status Styles */
+.badge.active-filter {
+ background: var(--color-warning);
+ color: white;
+ border-color: var(--color-warning);
+}
+
+.status-badge {
+ font-size: 11px;
+}
+.status-badge.archived {
+ color: var(--color-text-tertiary);
+}
+.status-badge.unarchived {
+ color: var(--color-error);
+ font-weight: 600;
+}
diff --git a/src/app/pages/workspace-dashboard/workspace-dashboard.html b/src/app/pages/workspace-dashboard/workspace-dashboard.html
index 00a3416..9388c96 100644
--- a/src/app/pages/workspace-dashboard/workspace-dashboard.html
+++ b/src/app/pages/workspace-dashboard/workspace-dashboard.html
@@ -2,8 +2,14 @@
@@ -24,7 +30,9 @@
{{ task.patientName }}
-
· {{ task.doctorName }}
+
+ {{ task.isArchived ? '(已归档)' : '(未归档)' }}
+
diff --git a/src/app/pages/workspace-dashboard/workspace-dashboard.ts b/src/app/pages/workspace-dashboard/workspace-dashboard.ts
index a34311b..66386b7 100644
--- a/src/app/pages/workspace-dashboard/workspace-dashboard.ts
+++ b/src/app/pages/workspace-dashboard/workspace-dashboard.ts
@@ -14,6 +14,7 @@ import { ApiService } from '../../core/api.service';
})
export class WorkspaceDashboard implements OnInit {
reports: any[] = [];
+ filterState: 'all' | 'unarchived' = 'all';
private api = inject(ApiService);
ngOnInit() {
@@ -25,14 +26,18 @@ export class WorkspaceDashboard implements OnInit {
try {
const res = await this.api.getReportsList();
if (res && res.reports) {
- completedReports = res.reports.map((r: any) => ({
- id: r.id,
- coreDemand: r.data?.module1?.insight?.substring(0, 20) + '...' || '面诊分析报告(AI)',
- createdAt: new Date(r.createdAt * 1000).toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }),
- patientName: r.data?._meta?.patientName || r.contextId.split('/')[0].replace('recording:', '') || '未知客户',
- doctorName: r.data?._meta?.doctorName || '深维面诊专属医生',
- status: r.status // 'processing', 'completed', 'failed'
- }));
+ completedReports = res.reports.map((r: any) => {
+ const rawName = r.data?._meta?.patientName || r.contextId.split('/')[0].replace('recording:', '') || '未知客户';
+ const isArchived = !rawName.includes('unknown_client') && rawName !== '未知客户';
+ return {
+ id: r.id,
+ coreDemand: r.data?.module1?.insight?.substring(0, 20) + '...' || '面诊分析报告(AI)',
+ createdAt: new Date(r.createdAt * 1000).toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }),
+ patientName: isArchived ? rawName : '访客体验号',
+ isArchived: isArchived,
+ status: r.status // 'processing', 'completed', 'failed'
+ };
+ });
}
} catch (e) {
console.error('Failed to load reports from API', e);
@@ -43,9 +48,16 @@ export class WorkspaceDashboard implements OnInit {
}
get recentReports(): any[] {
+ if (this.filterState === 'unarchived') {
+ return this.reports.filter(r => !r.isArchived);
+ }
return this.reports;
}
+ toggleFilter() {
+ this.filterState = this.filterState === 'all' ? 'unarchived' : 'all';
+ }
+
encodeId(id: string): string {
return encodeURIComponent(id);
}