/home/techb158/cosmic.abdallabala.com/src/services
NameSizeModeActions
dashboardService.js21770666editdlrm
gateWorkflowService.js72960666editdlrm
integrationService.js274610666editdlrm
oauthService.js92820666editdlrm
reportingService.js186700666editdlrm
Edit: /home/techb158/cosmic.abdallabala.com/src/services/dashboardService.js (2177B)
const engine = require("../../public/risk-engine.js"); const { ProjectRepository } = require("../repositories/projectRepository.js"); const { insert } = require("../storage/jsonDatabase.js"); const { scoredRiskToScoreRecord } = require("../domain/dataMapper.js"); const { toGateView } = require("./gateWorkflowService.js"); class DashboardService { constructor(database) { this.database = database; this.projects = new ProjectRepository(database); } getDashboard(projectId) { const data = this.projects.getAggregate(projectId); if (!data) return null; const dashboard = engine.calculateDashboard(data); return { data, dashboard }; } calculateRisk(payload) { return engine.scoreRisk(payload); } evaluateGate(projectId, actorUserId = "system") { const result = this.getDashboard(projectId); if (!result) return null; const gate = result.dashboard.gate; const persistedGate = this.database.transaction(db => { const gateRecord = insert(db, "deployment_gates", { project_id: projectId, status: gate.status, review_status: "Pending review", summary: gate.message, evaluated_by_user_id: actorUserId, evaluated_at: new Date().toISOString(), reviewed_by_display_name: null, reviewed_at: null }, "GATE"); gate.criteria.forEach(item => { insert(db, "gate_criteria", { gate_id: gateRecord.id, name: item.name, actual_value: String(item.actual), expected_rule: item.required, status: item.status === "Blocked" ? "Fail" : item.status, blocking: item.status === "Blocked", evidence: item.evidence || "", evidence_title: item.evidence || "", evidence_uri: "", reviewer_status: "Open", reviewer_note: "" }, "GCR"); }); result.dashboard.scoredRisks.forEach(risk => { insert(db, "risk_scores", scoredRiskToScoreRecord(risk.id, risk), "RSCORE"); }); return toGateView(db, gateRecord); }); return Object.assign({}, gate, { persistedGate }); } } module.exports = { DashboardService };