feat(interfaces): add structured data models and discriminated check configs; migrate tooling and package metadata

This commit is contained in:
2025-12-26 18:20:01 +00:00
parent add4a52635
commit da0bdc0564
23 changed files with 7721 additions and 3689 deletions

View File

@@ -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;
};