/
home
/
techb158
/
cosmic.abdallabala.com
/
docs
/
/home/techb158/cosmic.abdallabala.com/docs
mkdir
upload
Name
Size
Mode
Actions
00-design-study.md
3678
0666
edit
dl
rm
01-uml-class-diagram.puml
11869
0666
edit
dl
rm
02-use-case-diagram.puml
3763
0666
edit
dl
rm
03-sequence-diagrams.puml
9732
0666
edit
dl
rm
04-database-entity-model.mmd
7051
0666
edit
dl
rm
05-database-schema.sql
13372
0666
edit
dl
rm
06-diagram-preview.html
5021
0666
edit
dl
rm
07-design-checklist.md
3256
0666
edit
dl
rm
08-step-2-storage-layer.md
5325
0666
edit
dl
rm
09-step-3-risk-crud-ui.md
3380
0666
edit
dl
rm
10-step-4-mitigation-workflow.md
3996
0666
edit
dl
rm
11-step-5-deployment-gate-workflow.md
2292
0666
edit
dl
rm
12-step-6-multi-pm-integration.md
3770
0666
edit
dl
rm
13-step-6-1-microsoft-planner-integration.md
2335
0666
edit
dl
rm
14-step-7-reporting-export.md
4158
0666
edit
dl
rm
15-step-7-1-oauth-live-connectors.md
4545
0666
edit
dl
rm
16-step-8-user-roles-access-control.md
3297
0666
edit
dl
rm
17-step-9-production-deployment-security.md
4228
0666
edit
dl
rm
18-step-10-final-academic-submission.md
3199
0666
edit
dl
rm
19-final-report-draft.md
6814
0666
edit
dl
rm
20-instructor-submission-checklist.md
3639
0666
edit
dl
rm
21-demo-script.md
3948
0666
edit
dl
rm
22-traceability-matrix.md
4847
0666
edit
dl
rm
23-testing-evidence.md
2961
0666
edit
dl
rm
24-evaluation-rubric-mapping.md
2910
0666
edit
dl
rm
25-final-deployment-runbook.md
3214
0666
edit
dl
rm
26-known-limitations-and-future-work.md
2632
0666
edit
dl
rm
27-final-qa-checklist.md
2893
0666
edit
dl
rm
28-demo-rehearsal-script.md
3618
0666
edit
dl
rm
29-submission-freeze-report.md
2769
0666
edit
dl
rm
30-final-known-issues.md
1876
0666
edit
dl
rm
dashboard-spec.md
3691
0666
edit
dl
rm
Edit:
/home/techb158/cosmic.abdallabala.com/docs/01-uml-class-diagram.puml
(11869B)
@startuml skinparam classAttributeIconSize 0 skinparam shadowing false skinparam classFontSize 12 skinparam packageStyle rectangle title COSMIC AI-Risk Dashboard, UML Class Diagram package "Domain Model" { class Project { +id: string +name: string +subtitle: string +projectType: ProjectType +currentLifecyclePhase: LifecyclePhaseName +riskAppetite: number +assessmentDate: date +status: ProjectStatus } class LifecyclePhase { +id: string +projectId: string +name: LifecyclePhaseName +status: PhaseStatus +readinessScore: number } class Risk { +id: string +projectId: string +title: string +description: string +dimension: RiskDimension +domain: RiskDomain +lifecyclePhase: LifecyclePhaseName +probability: number +impact: number +detectability: number +status: RiskStatus +approvalStatus: ApprovalStatus +ownerId: string +dueDate: date +calculateRawScore(): number } class RiskScore { +id: string +riskId: string +rawScore: number +normalizedScore: number +residualScore: number +riskLevel: RiskLevel +calculatedAt: datetime } class MitigationAction { +id: string +riskId: string +title: string +description: string +ownerId: string +status: MitigationStatus +progressPercent: number +effectivenessPercent: number +dueDate: date } class Indicator { +id: string +name: string +measurand: string +unit: string +thresholdMin: number +thresholdMax: number +interpretationRule: string +dimension: RiskDimension } class MeasurementRecord { +id: string +projectId: string +indicatorId: string +value: string +numericValue: number +status: IndicatorStatus +measuredAt: datetime +evidenceId: string } class Experiment { +id: string +projectId: string +name: string +modelName: string +datasetVersion: string +selected: boolean +reproducibilityStatus: ReproducibilityStatus +createdAt: datetime } class ModelMetric { +id: string +experimentId: string +metricName: string +metricValue: number +threshold: number +status: MetricStatus } class DeploymentGate { +id: string +projectId: string +status: GateStatus +reviewStatus: ReviewStatus +evaluatedAt: datetime +evaluatedByUserId: string +reviewedByDisplayName: string +reviewedAt: datetime +summary: string +evaluate(): GateStatus } class GateCriterion { +id: string +gateId: string +name: string +actualValue: string +expectedRule: string +status: CriterionStatus +blocking: boolean +evidence: string +evidenceUri: string +reviewerStatus: CriterionReviewStatus +reviewerNote: string } class GateDecision { +id: string +gateId: string +decision: ReviewerDecision +reason: string +approvedByUserId: string +reviewerDisplayName: string +approvedAt: datetime +createdAt: datetime } class EvidenceArtifact { +id: string +projectId: string +riskId: string +type: EvidenceType +title: string +uri: string +createdByUserId: string +createdAt: datetime } class User { +id: string +displayName: string +email: string +roleId: string +active: boolean } class Role { +id: string +name: RoleName +permissions: string[] } class AuditEvent { +id: string +projectId: string +actorUserId: string +entityType: string +entityId: string +action: string +beforeJson: object +afterJson: object +createdAt: datetime } class TrelloMapping { +id: string +projectId: string +trelloBoardId: string +trelloListId: string +trelloCardId: string +localEntityType: string +localEntityId: string +syncStatus: SyncStatus +lastSyncedAt: datetime } class ProjectManagementIntegration { +id: string +provider: string +workspaceName: string +externalProjectKey: string +baseUrl: string +authMode: string +connectionStatus: string +syncDirection: string +lastSyncAt: datetime } class ExternalWorkItemMapping { +id: string +localEntityType: string +localEntityId: string +externalItemType: string +externalItemId: string +externalStatus: string +syncStatus: string +lastSyncedAt: datetime } class ProjectManagementSyncRun { +id: string +provider: string +status: string +createdCount: int +updatedCount: int +failedCount: int +summary: string } } package "Application Services" { class RiskScoringService { +calculateRiskScore(risk: Risk): RiskScore +calculateResidualRisk(risk: Risk, mitigations: MitigationAction[]): number +calculateProjectRisk(projectId: string): number +calculateDimensionScores(projectId: string): map } class GateEvaluationService { +evaluateProjectGate(projectId: string): DeploymentGate +buildCriteria(projectId: string): GateCriterion[] +blockIfCriticalCriteriaFail(criteria: GateCriterion[]): GateStatus } class GateWorkflowService { +listGateHistory(projectId: string): DeploymentGate[] +recordDecision(gateId: string, decision: GateDecision): GateDecision +updateCriterionReview(criterionId: string): GateCriterion +listAuditEvents(projectId: string): AuditEvent[] } class IndicatorService { +recordMeasurement(record: MeasurementRecord): MeasurementRecord +evaluateIndicator(record: MeasurementRecord): IndicatorStatus } class ProjectManagementIntegrationService { +listSupportedProviders(): Provider[] +createIntegration(projectId: string): ProjectManagementIntegration +syncIntegration(integrationId: string): ProjectManagementSyncRun +createRiskMapping(integrationId: string, riskId: string): ExternalWorkItemMapping } interface ProjectManagementAdapter { +mapRiskToWorkItem(risk: Risk): object +mapMitigationToExternalItem(mitigation: MitigationAction): object +sync(): ProjectManagementSyncRun } class TrelloAdapter class JiraAdapter class AsanaAdapter class MicrosoftPlannerAdapter class ReportExport { +id: string +projectId: string +reportType: string +format: string +generatedByUserId: string +generatedAt: datetime } class ReportingService { +getExecutiveReport(projectId: string): object +getFullReport(projectId: string): object +getRiskRegisterCsv(projectId: string): string +getMitigationCsv(projectId: string): string +renderExecutiveHtml(projectId: string): string } } Project "1" o-- "6" LifecyclePhase Project "1" o-- "0..*" Risk Project "1" o-- "0..*" Indicator Project "1" o-- "0..*" MeasurementRecord Project "1" o-- "0..*" Experiment Project "1" o-- "0..*" DeploymentGate Project "1" o-- "0..*" EvidenceArtifact Project "1" o-- "0..*" AuditEvent Project "1" o-- "0..*" TrelloMapping Project "1" o-- "0..*" ProjectManagementIntegration Project "1" o-- "0..*" ExternalWorkItemMapping Project "1" o-- "0..*" ProjectManagementSyncRun Project "1" o-- "0..*" ReportExport ProjectManagementIntegration "1" o-- "0..*" ExternalWorkItemMapping ProjectManagementIntegration "1" o-- "0..*" ProjectManagementSyncRun ExternalWorkItemMapping "0..*" --> "0..1" Risk : local risk Risk "1" o-- "0..*" MitigationAction Risk "1" o-- "0..*" RiskScore Risk "1" o-- "0..*" EvidenceArtifact Risk "0..*" --> "1" User : owner MitigationAction "0..*" --> "1" User : owner Indicator "1" o-- "0..*" MeasurementRecord MeasurementRecord "0..*" --> "0..1" EvidenceArtifact Experiment "1" o-- "0..*" ModelMetric DeploymentGate "1" o-- "1..*" GateCriterion DeploymentGate "1" o-- "0..*" GateDecision User "0..*" --> "1" Role RiskScoringService ..> Risk RiskScoringService ..> RiskScore RiskScoringService ..> MitigationAction GateEvaluationService ..> DeploymentGate GateEvaluationService ..> GateCriterion GateWorkflowService ..> DeploymentGate GateWorkflowService ..> GateDecision GateWorkflowService ..> GateCriterion GateWorkflowService ..> AuditEvent IndicatorService ..> Indicator IndicatorService ..> MeasurementRecord ProjectManagementIntegrationService ..> ProjectManagementIntegration ProjectManagementIntegrationService ..> ExternalWorkItemMapping ProjectManagementIntegrationService ..> ProjectManagementSyncRun ProjectManagementAdapter <|.. TrelloAdapter ProjectManagementAdapter <|.. JiraAdapter ProjectManagementAdapter <|.. AsanaAdapter ProjectManagementAdapter <|.. MicrosoftPlannerAdapter ReportingService ..> Project ReportingService ..> ReportExport ReportingService ..> DeploymentGate ReportingService ..> ExternalWorkItemMapping note right of Risk Core measurable risk object. Uses probability, impact, and detectability. The formula is an implementation extension. end note note right of Indicator ISO-style measurement concept. Stores measurand, unit, threshold, and interpretation rule. end note ' Step 7.1 extension, OAuth and live PM clients class OAuthService { +listProviders() +buildAuthorizePayload(provider, integrationId, actorUserId) +exchangeAuthorizationCode(provider, code, state) +storeOAuthToken(provider, tokenResponse, context) +getAccessToken(provider, integrationId) } class OAuthState { +id: string +provider: string +state: string +integrationId: string +status: string +expiresAt: datetime } class OAuthToken { +id: string +provider: string +integrationId: string +accessTokenEncrypted: string +accessTokenRedacted: string +refreshTokenEncrypted: string +expiresAt: datetime } class TokenVault { +encryptToken(token) +decryptToken(payload) +redactToken(token) } interface LiveProjectManagementClient { +testConnection() +createRiskWorkItem(risk, mitigations, integration) +updateRiskWorkItem(mapping, risk, mitigations) } class TrelloClient class JiraClient class AsanaClient class PlannerClient OAuthService --> OAuthState OAuthService --> OAuthToken OAuthService --> TokenVault IntegrationService --> LiveProjectManagementClient LiveProjectManagementClient <|.. TrelloClient LiveProjectManagementClient <|.. JiraClient LiveProjectManagementClient <|.. AsanaClient LiveProjectManagementClient <|.. PlannerClient class AccessControlService { +listPermissions(): string[] +listUsers(): User[] +listRoles(): Role[] +createUser(payload, actorUserId): User +updateUser(userId, payload, actorUserId): User +createRole(payload, actorUserId): Role +updateRole(roleId, payload, actorUserId): Role +requirePermission(userId, permission, context): User } class AuthorizationError { +status: number +details: object } AccessControlService --> User AccessControlService --> Role AccessControlService --> AuditEvent AccessControlService ..> AuthorizationError ' Step 9 extension, production operations class RuntimeConfig { +nodeEnv: string +port: number +databaseFile: string +backupDir: string +securityHeadersEnabled: boolean +forceHttps: boolean +hstsEnabled: boolean +allowedOrigins: string[] +frameAncestors: string[] } class OperationsService { +getHealth(): object +getReadiness(): object +getSecurityStatus(): object +createBackup(actorUserId): BackupManifest +listBackups(): BackupManifest[] } class BackupManifest { +id: string +actorUserId: string +sourceFile: string +backupFile: string +createdAt: datetime +sizeBytes: number +sha256: string } class SecurityHeaders { +buildSecurityHeaders(req, config): object +buildContentSecurityPolicy(config): string +isHttpsRequest(req, config): boolean } OperationsService --> RuntimeConfig OperationsService --> BackupManifest OperationsService --> AuditEvent SecurityHeaders --> RuntimeConfig @enduml
Save
cmd:
run