feat(interfaces): add structured data models and discriminated check configs; migrate tooling and package metadata
This commit is contained in:
@@ -1,21 +1,80 @@
|
||||
import * as plugins from '../ul-interfaces.plugins.js';
|
||||
import type { TIncidentSeverity, TIncidentStatus } from './types.js';
|
||||
|
||||
// ============================================
|
||||
// Incident Update
|
||||
// ============================================
|
||||
|
||||
/**
|
||||
* A single update within an incident timeline.
|
||||
*/
|
||||
export interface IIncidentUpdate {
|
||||
id: string;
|
||||
incidentId: string;
|
||||
status: TIncidentStatus;
|
||||
message: string;
|
||||
createdAt: number;
|
||||
createdBy?: string;
|
||||
type?: 'comment' | 'status_change' | 'automatic';
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// Incident
|
||||
// ============================================
|
||||
|
||||
/**
|
||||
* Represents an incident affecting one or more services.
|
||||
*/
|
||||
export interface IIncident {
|
||||
id: string;
|
||||
title: string;
|
||||
description: string;
|
||||
severity: TIncidentSeverity;
|
||||
status: TIncidentStatus;
|
||||
|
||||
// Affected services
|
||||
affectedServiceIds: string[];
|
||||
|
||||
// Timeline
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
resolvedAt?: number;
|
||||
firstResponseAt?: number;
|
||||
|
||||
// Updates history
|
||||
updates: IIncidentUpdate[];
|
||||
|
||||
// Metadata
|
||||
createdBy?: string;
|
||||
assignedUserId?: string;
|
||||
creationMode?: 'monitor' | 'manual';
|
||||
|
||||
// Scheduled maintenance
|
||||
isScheduled?: boolean;
|
||||
scheduledStartTime?: number;
|
||||
scheduledEndTime?: number;
|
||||
|
||||
// Post-incident
|
||||
postMortemLink?: string;
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// Legacy Interface (for backward compatibility)
|
||||
// ============================================
|
||||
|
||||
/**
|
||||
* @deprecated Use IIncident instead
|
||||
*/
|
||||
export interface IIncidentLegacy {
|
||||
timestamp: number;
|
||||
firstResponseTimestamp?: number;
|
||||
/**
|
||||
* indicates
|
||||
*/
|
||||
status: 'discovered' | 'investigating' | 'fixing' | 'fixImplemented' | 'watching' | 'resolved';
|
||||
creationMode: 'monitor' | 'manual';
|
||||
assignedUserId?: string;
|
||||
postMortemLink?: string;
|
||||
|
||||
updates: {
|
||||
markdownText: string;
|
||||
type: 'comment' | 'manualUpdate' | 'automaticUpdate';
|
||||
}[];
|
||||
|
||||
justForLooks: {
|
||||
isoTimestamp: string;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user