| Role |
Job type |
Responsibility |
| Recorder |
record |
Logging a CrisisDecision as easy as possible. |
| Writer |
descisions.write |
Securely storing and safekeeping of CrisisDescision. |
| DataExporter |
descisions.export.data |
Export cluster of one or more CrisisDecision into common data formats, ex. json. |
| FileExporter |
descision.export.file |
Export one or more CrisisDescision into common data formats, PDF/A. |
| Analyzer |
descision.analyze |
Analyze cluster of CrisisDecision. |
| Role |
Requirements |
| Recorder |
easy auth, ex. api-key, offline-first, if LAN > send CrisisDecision to Writer. Small node app with backend api and frontend PWA ui. |
| Writer |
validate input, validate correct write, retry functionality, encrypt data? |
| DataExporter |
decrypt data, transform to given data structure |
| FileExporter |
decrypt data, transform to given filr type - PDF/A |
| Analyzer |
Agent network analyzer |
type DecisionStatus = "active" | "superseded" | "revoked" | "expired" | "done";
type DecisionMaker = {
id?: string;
role: string;
organization: string;
department: string;
};
type CrisisDescision = {
id: string; // uuidv4
timestamp: string; // ISO8601
crisis: string; // E.g. the storm Hans
parent: null | string; // Decision id for chaining
status: DecisionStatus;
decidedAt: string; // ISO8601
title: string;
what: string; // What, describes the decision
why: string; // Why, describes the basis on which the decision was made
ttl: null | string; // Until when?
decisionMakers: DecisionMaker[];
scopes: string[]; // E.g. municipality Göteborg, district, school etc
refs: string[]; // Related decisions
};