compliance.model.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * 合规检查模块 — 数据模型定义
  3. *
  4. * 对应规范文档 §七「模块 4:沟通记录合规检查模块」
  5. *
  6. * 核心概念:
  7. * - compliance_issue:合规问题记录(缺表、未置顶、格式错误、内容太简等)
  8. * - compliance_scan:巡检任务记录
  9. * - audit_log:操作审计日志
  10. *
  11. * 问题类型枚举(issue type):
  12. * - missing_doc :群还没有沟通记录表
  13. * - not_pinned :记录表未在群内置顶
  14. * - no_doc_in_notice :群公告中无文档链接
  15. * - multi_doc :群内出现多张表
  16. * - required_empty :必填项为空
  17. * - format_error :日期/格式/版式不规范
  18. * - stale_doc :记录表很久没更新
  19. * - too_brief :内容过于简略
  20. * - suspected_miss_log:群里聊过但表没更新
  21. */
  22. /** 合规问题类型 */
  23. export type ComplianceIssueType =
  24. | 'missing_doc'
  25. | 'not_pinned'
  26. | 'no_doc_in_notice'
  27. | 'multi_doc'
  28. | 'required_empty'
  29. | 'format_error'
  30. | 'stale_doc'
  31. | 'too_brief'
  32. | 'suspected_miss_log';
  33. /** 合规问题类型中文标签 */
  34. export const ComplianceIssueTypeLabel: Record<ComplianceIssueType, string> = {
  35. missing_doc: '缺少沟通记录表',
  36. not_pinned: '记录表未置顶',
  37. no_doc_in_notice: '群公告无文档链接',
  38. multi_doc: '群内存在多张表',
  39. required_empty: '必填项为空',
  40. format_error: '格式或版式不规范',
  41. stale_doc: '记录表长期未更新',
  42. too_brief: '内容过于简略',
  43. suspected_miss_log: '疑似漏记(群内聊天但表未更新)',
  44. };
  45. /** 合规问题状态 */
  46. export type IssueStatus = 'open' | 'in_progress' | 'resolved' | 'closed';
  47. /** 合规问题记录 */
  48. export interface ComplianceIssue {
  49. /** 主键 */
  50. id: number;
  51. /** 群 ID */
  52. roomId: string;
  53. /** 群名称(冗余) */
  54. roomName: string;
  55. /** 问题类型 */
  56. type: ComplianceIssueType;
  57. /** 问题描述 */
  58. description: string;
  59. /** 严重程度:1=低, 2=中, 3=高 */
  60. severity: 1 | 2 | 3;
  61. /** 状态 */
  62. status: IssueStatus;
  63. /** 负责人 ID */
  64. assigneeId: number;
  65. /** 关联的文档 ID(如有) */
  66. docId: string;
  67. /** 发现时间 */
  68. foundAt: string;
  69. /** 解决时间 */
  70. resolvedAt: string;
  71. /** 创建时间 */
  72. createdAt: string;
  73. }
  74. /** 合规巡检任务 */
  75. export interface ComplianceScan {
  76. /** 主键 */
  77. id: number;
  78. /** 巡检时间 */
  79. scannedAt: string;
  80. /** 巡检群数 */
  81. totalRooms: number;
  82. /** 新发现问题数 */
  83. newIssues: number;
  84. /** 已自动关闭的问题数 */
  85. resolvedIssues: number;
  86. /** 巡检状态 */
  87. status: 'running' | 'completed' | 'failed';
  88. }
  89. /** 合规汇总报表 */
  90. export interface ComplianceReport {
  91. /** 总群数 */
  92. totalRooms: number;
  93. /** 达标群数 */
  94. compliantRooms: number;
  95. /** 待整改群数 */
  96. pendingRooms: number;
  97. /** 按问题类型分组统计 */
  98. issuesByType: Record<ComplianceIssueType, number>;
  99. /** 按严重程度分组统计 */
  100. issuesBySeverity: Record<number, number>;
  101. /** 报表生成时间 */
  102. generatedAt: string;
  103. }