224 lines
18 KiB
TypeScript
224 lines
18 KiB
TypeScript
import type { Letter, Regulation, Route } from '../types.ts';
|
||
|
||
export const ROUTES: Record<Route, { label: string; stamp: string; description: string }> = {
|
||
deliver: { label: 'VIDAREBEFORDRA', stamp: 'VIDARE', description: 'Adressen är giltig. Låt någon annan få problemet.' },
|
||
return: { label: 'ÅTERSÄND', stamp: 'RETUR', description: 'Avsändaren finns och bör få tillbaka sin försändelse.' },
|
||
archive: { label: 'ARKIV 9', stamp: 'ARKIV', description: 'Försändelser som gäller det förflutna. Eller kommer därifrån.' },
|
||
quarantine: { label: 'KARANTÄN', stamp: 'SPÄRRA', description: 'Öppna inte igen. Särskilt inte om brevet ber snällt.' },
|
||
};
|
||
|
||
export const REGULATIONS: Regulation[] = [
|
||
{ id: 'r1', fromDay: 1, number: '1.1', text: 'Fullständig gatuadress och nutida mottagare: vidarebefordra.' },
|
||
{ id: 'r2', fromDay: 1, number: '1.4', text: 'Saknad eller uppenbart ogiltig adress: återsänd om avsändare finns.' },
|
||
{ id: 'r3', fromDay: 1, number: '2.2', text: 'Poststämplar äldre än femtio år tillhör Arkiv 9.' },
|
||
{ id: 'r4', fromDay: 1, number: '3.1', text: 'Försändelser som uttryckligen ber att inte öppnas placeras i karantän.' },
|
||
{ id: 'r5', fromDay: 2, number: '4.3', text: 'Mottagare registrerade som avlidna behandlas som historiska ärenden: Arkiv 9.' },
|
||
{ id: 'r6', fromDay: 2, number: '4.7', text: 'Om den avlidne själv anges som avsändare gäller karantän.', note: 'Senare föreskrift har företräde.' },
|
||
{ id: 'r6b', fromDay: 2, number: '4.9', text: 'Försändelser som saknar både giltig avsändare och adress placeras i karantän.' },
|
||
{ id: 'r7', fromDay: 3, number: '5.2', text: 'Adresser med negativt gatunummer är ogiltiga och skall återsändas.' },
|
||
{ id: 'r8', fromDay: 3, number: '5.9', text: 'Internpost från Avdelning Noll får alltid vidarebefordras.', note: 'Även när adressen i övrigt är otillåten.' },
|
||
{ id: 'r9', fromDay: 4, number: '6.6', text: 'Brev vars text förändras mellan läsningar placeras i karantän.' },
|
||
{ id: 'r10', fromDay: 4, number: '6.8', text: 'Tre eller fler svarta stämplar innebär Arkiv 9, utom när §6.6 gäller.' },
|
||
{ id: 'r11', fromDay: 5, number: '7.1', text: 'Post från ett framtida datum skall återsändas till avsändaren.' },
|
||
{ id: 'r12', fromDay: 5, number: '7.4', text: 'Framtida post som beskriver den pågående arbetsdagen skall sättas i karantän.', note: 'Läs inte sista stycket.' },
|
||
];
|
||
|
||
export const LETTERS: Letter[] = [
|
||
{
|
||
id: 'l01', day: 1, sender: 'Britta Nilsson', recipient: 'Ture Andersson', address: 'Bokgatan 14, Malmö', postmark: '2026-07-21',
|
||
body: 'Ture, din kofta ligger fortfarande här. Jag skickar den inte igen. Hämta den innan torsdag.', marks: ['Porto betalt'],
|
||
correctRoute: 'deliver', explanation: 'Fullständig adress och inget annat anmärkningsvärt. Det är nästan misstänkt normalt.',
|
||
},
|
||
{
|
||
id: 'l02', day: 1, sender: 'K. Lund', recipient: 'Den som bor ovanför vinden', address: 'Huset med den gröna dörren', postmark: '2026-07-20',
|
||
body: 'Ni har fått fel nyckel. Använd den inte i källardörren.', marks: ['Adress saknas'],
|
||
correctRoute: 'return', explanation: 'Adressen är ogiltig och avsändaren finns. Återsänd. Nyckeln nämns inte i föreskrifterna.',
|
||
},
|
||
{
|
||
id: 'l03', day: 1, sender: 'Ester Malm', recipient: 'Oskar Malm', address: 'Södra Förstadsgatan 81', postmark: '1912-11-03',
|
||
body: 'Käre Oskar. De knackar under golvet igen. Far säger att huset sätter sig.', marks: ['BLEKINGE BATALJON', 'Öppnat av censuren'],
|
||
correctRoute: 'archive', explanation: 'Poststämpeln är äldre än femtio år. Arkiv 9 hanterar resten.',
|
||
},
|
||
{
|
||
id: 'l04', day: 1, sender: 'Fastighetskontoret', recipient: 'Nattvakt 3', address: 'Förvaltningen, internfack 12', postmark: '2026-07-21',
|
||
body: 'ÖPPNA INTE I BELYST RUM. Förvaras svalt. Om innehållet börjar nynna, kontakta ingen.', marks: ['ÖPPNA EJ'],
|
||
correctRoute: 'quarantine', explanation: 'Brevet säger uttryckligen att det inte skall öppnas. Det var generöst av det.',
|
||
},
|
||
{
|
||
id: 'l05', day: 2, sender: 'Malmö Stad', recipient: 'Signe Persson (1888–1961)', address: 'Föreningsgatan 32', postmark: '2026-07-22',
|
||
body: 'Påminnelse om utebliven närvaro vid den årliga medborgardialogen.', marks: ['ANDRA PÅMINNELSEN'],
|
||
correctRoute: 'archive', explanation: 'Mottagaren är registrerad som avliden. Historiskt ärende, trots kommunens optimism.',
|
||
},
|
||
{
|
||
id: 'l06', day: 2, sender: 'Signe Persson (1888–1961)', recipient: 'Malmö Stad', address: 'August Palms plats 1', postmark: '2026-07-22',
|
||
body: 'Jag har fått era båda påminnelser. Jag kommer inte. Vänligen uppdatera era register.', marks: ['JORD UNDER FRIMÄRKET'],
|
||
correctRoute: 'quarantine', explanation: 'Den avlidne är avsändare. Den senare föreskriften §4.7 har företräde.',
|
||
},
|
||
{
|
||
id: 'l07', day: 2, sender: 'Lars Dahl', recipient: 'Lars Dahl', address: 'Regementsgatan 19', postmark: '2026-07-22',
|
||
body: 'Till mig själv: glöm inte att köpa mjölk. Och svara inte när telefonen ringer 03:14.', marks: ['EGENPOST'],
|
||
correctRoute: 'deliver', explanation: 'Självkorrespondens är beklaglig men inte förbjuden.',
|
||
},
|
||
{
|
||
id: 'l08', day: 2, sender: '— SAKNAS —', recipient: 'Föreståndaren', address: '', postmark: '2026-07-22',
|
||
body: 'Det finns inget returkontor på plan fyra. Sluta skicka personal dit.', marks: ['AVSÄNDARE SAKNAS'],
|
||
correctRoute: 'quarantine', explanation: 'Både giltig avsändare och adress saknas. §4.9 tar över returregeln.',
|
||
},
|
||
{
|
||
id: 'l09', day: 3, sender: 'Asta Berg', recipient: 'Hjalmar Berg', address: 'Kyrkogatan -4, Malmö', postmark: '2026-07-23',
|
||
body: 'Trappan fortsätter fyra våningar nedanför källaren. Ta med lampan den här gången.', marks: ['FELVÄNT FRIMÄRKE'],
|
||
correctRoute: 'return', explanation: 'Negativa gatunummer är ogiltiga. Var trappan leder är inte ert ansvarsområde.',
|
||
},
|
||
{
|
||
id: 'l10', day: 3, sender: 'Avdelning Noll', recipient: 'Arkivarien', address: 'Korridor -2, dörr 0', postmark: '2026-07-23',
|
||
body: 'Inventeringen är slutförd. Vi saknar fortfarande en anställd. Namnet är ditt.', marks: ['INTERNPOST', '0'],
|
||
correctRoute: 'deliver', explanation: 'Internpost från Avdelning Noll går alltid vidare, även till negativa adresser.',
|
||
},
|
||
{
|
||
id: 'l11', day: 3, sender: 'PostNord Kundservice', recipient: 'PostNord Kundservice', address: 'Ej utdelningsbart', postmark: '2026-07-23',
|
||
body: 'Vi beklagar att ditt brev inte kunde levereras. Ditt ärende är viktigt för oss.', marks: ['AUTOMATISKT SVAR'],
|
||
correctRoute: 'return', explanation: 'Ogiltig adress, giltig avsändare. Kretsloppet är inte ert problem.',
|
||
},
|
||
{
|
||
id: 'l12', day: 3, sender: 'Avdelning Noll', recipient: 'Ingen särskild', address: '', postmark: '2026-07-23',
|
||
body: 'Vidarebefordra detta. Det behöver inte komma fram.', marks: ['INTERNPOST', '0'],
|
||
correctRoute: 'deliver', explanation: '§5.9 säger alltid. Myndigheten har fetmarkerat ordet i originalet.',
|
||
},
|
||
{
|
||
id: 'l13', day: 4, sender: 'M. Ek', recipient: 'M. Ek', address: 'Amiralsgatan 7', postmark: '2026-07-24',
|
||
body: 'Första läsningen: Lägg brevet i Arkiv 9. Andra läsningen: Du gjorde inte det.', marks: ['TEXTEN HAR ÄNDRATS'],
|
||
correctRoute: 'quarantine', explanation: 'Föränderlig text omfattas av §6.6. Följ inte brevets egen sorteringsinstruktion.',
|
||
},
|
||
{
|
||
id: 'l14', day: 4, sender: 'Riksarkivet', recipient: 'Lokalkontoret', address: 'Arkivgatan 9', postmark: '1948-02-09',
|
||
body: 'Överföring av handlingar rörande det rum som avlägsnades ur ritningen.', marks: ['SVART STÄMPEL', 'SVART STÄMPEL', 'SVART STÄMPEL'],
|
||
correctRoute: 'archive', explanation: 'Både ålder och tre svarta stämplar pekar mot Arkiv 9. För en gångs skull är reglerna överens.',
|
||
},
|
||
{
|
||
id: 'l15', day: 4, sender: 'Någon bakom dig', recipient: 'Du', address: 'Sorteringsbordet', postmark: '2026-07-24',
|
||
body: 'Vänd dig inte om. Texten kommer vara annorlunda när du tittar tillbaka.', marks: ['SVART STÄMPEL', 'SVART STÄMPEL', 'SVART STÄMPEL', 'TEXTEN HAR ÄNDRATS'],
|
||
correctRoute: 'quarantine', explanation: '§6.6 undantar brevet från trestämpelregeln. Du vände dig väl inte om?',
|
||
},
|
||
{
|
||
id: 'l16', day: 4, sender: 'Kammarkollegiet', recipient: 'Vederbörande', address: 'Stora Nygatan 1', postmark: '2026-07-24',
|
||
body: 'Härmed översändes blankett 14-C. Blanketten bekräftar att blankett 14-C saknas.', marks: ['DIARIEFÖRD'],
|
||
correctRoute: 'deliver', explanation: 'Fullständig adress, nutida mottagare, vanlig svensk förvaltning.',
|
||
},
|
||
{
|
||
id: 'l17', day: 5, sender: 'Ture Andersson', recipient: 'Britta Nilsson', address: 'Bokgatan 12, Malmö', postmark: '2037-07-25',
|
||
body: 'Skicka inte koftan. Det är så den hittar hit.', marks: ['PORTO GÄLLER FRÅN 2037'],
|
||
correctRoute: 'return', explanation: 'Framtida post återsänds. Familjens koftproblem får lösas kronologiskt.',
|
||
},
|
||
{
|
||
id: 'l18', day: 5, sender: 'Du', recipient: 'Du', address: 'Avdelningen för obeställbara försändelser', postmark: '2026-07-26',
|
||
body: 'Klockan är 16:42. Du har två brev kvar. Lägg inte detta i returhögen. Det är där handen finns.', marks: ['IMORGON', 'TEXTEN HAR ÄNDRATS'],
|
||
correctRoute: 'quarantine', explanation: 'Framtida post som beskriver den pågående arbetsdagen omfattas av §7.4.',
|
||
},
|
||
{
|
||
id: 'l19', day: 5, sender: 'Avdelning Noll', recipient: 'Föreståndaren', address: 'Kontor 4', postmark: '2031-01-01',
|
||
body: 'Gratulerar till fem års prickfri tjänst. Beklagar resten.', marks: ['INTERNPOST', '0', 'FRAMTIDA'],
|
||
correctRoute: 'deliver', explanation: '§5.9 säger alltid. Avdelning Noll har företräde även framför framtiden.',
|
||
},
|
||
{
|
||
id: 'l20', day: 5, sender: 'Föreståndaren', recipient: 'Ny handläggare', address: 'Sorteringsbordet', postmark: '1956-07-25',
|
||
body: 'Om du läser detta har jag fått gå hem. Det händer sällan här. Bordet behöver någon.', marks: ['PERSONALAKT', 'SVART STÄMPEL', 'SVART STÄMPEL', 'SVART STÄMPEL'],
|
||
correctRoute: 'archive', explanation: 'Äldre än femtio år och tre svarta stämplar. Arkiv 9 tar hand om företrädaren. Förmodligen.',
|
||
},
|
||
{
|
||
id: 'l21', day: 1, sender: 'MKB Fastighets AB', recipient: 'Boende, lgh 1302', address: 'Grönegatan 8, Malmö', postmark: '2026-07-21',
|
||
body: 'Planerat vattenavbrott torsdag 09:00–15:00. Knackningar i ledningarna under övrig tid ingår inte i felanmälan.', marks: ['SAMHÄLLSINFORMATION'],
|
||
correctRoute: 'deliver', explanation: 'Fullständig adress och nutida mottagare. Fastighetens rörsystem ligger utanför uppdraget.',
|
||
correctConsequence: 'Meddelandet gick vidare. Klockan 09:01 på torsdag blev hela huset tyst.',
|
||
},
|
||
{
|
||
id: 'l22', day: 1, sender: 'Havet', recipient: 'Den som öppnade sist', address: '', postmark: '2026-07-21',
|
||
body: 'ÖPPNA INTE. Jag har redan kommit in genom kuvertets hörn.', marks: ['SALTFLÄCKAR', 'ÖPPNA EJ'],
|
||
correctRoute: 'quarantine', explanation: 'Brevet ber uttryckligen att inte öppnas. §3.1 gäller oavsett avsändarens geografiska omfång.',
|
||
correctConsequence: 'Karantänskåpets nedersta låda började droppa. Golvbrunnen tog hand om det mesta.',
|
||
wrongConsequences: {
|
||
deliver: 'Brevbäraren kom tillbaka genomblöt och utan skugga. Händelsen registrerades som arbetsrelaterad.',
|
||
return: 'Kustbevakningen hittade retursäcken flytande utanför Limhamn. Den var varm.',
|
||
archive: 'Arkiv 9 stängde för sanering. Din signatur fanns på insidan av samtliga kuvert.',
|
||
},
|
||
penalty: { deliver: { composure: 2, suspicion: 2 }, return: { suspicion: 2 }, archive: { composure: 2 } },
|
||
},
|
||
{
|
||
id: 'l23', day: 2, sender: 'Folkbokföringen', recipient: 'Karl-Gustav Holm (1901–1974)', address: 'Rönneholmsvägen 44', postmark: '2026-07-22',
|
||
body: 'Bekräftelse av adressändring. Ny folkbokföringsadress: samma plats, cirka två meter längre ned.', marks: ['PERSONBEVIS'],
|
||
correctRoute: 'archive', explanation: 'Mottagaren är avliden. Formulärets exakta djup förändrar inte §4.3.',
|
||
correctConsequence: 'Arkiv 9 lade handlingen i en mapp märkt FAST BOENDE. Mappen var redan full.',
|
||
},
|
||
{
|
||
id: 'l24', day: 2, sender: 'Karl-Gustav Holm (1901–1974)', recipient: 'Folkbokföringen', address: 'Kattsundsgatan 7', postmark: '2026-07-22',
|
||
body: 'Adressändringen godkänns inte. Det är trångt här nere och grannen spelar radio hela natten.', marks: ['LUKT AV FUKT', 'HANDSKRIVET'],
|
||
correctRoute: 'quarantine', explanation: 'En avliden person står som avsändare. §4.7 är den specifika och senare föreskriften.',
|
||
correctConsequence: 'Brevet låstes in. Radion hördes ändå svagt från ventilationsgallret resten av dagen.',
|
||
wrongConsequences: {
|
||
deliver: 'Folkbokföringen registrerade Karl-Gustav som levande. Systemet registrerade samtidigt dig som avliden.',
|
||
return: 'Kuvertet återkom med tillägget NEKAS: MOTTAGAREN EJ HEMMA, skrivet med din handstil.',
|
||
archive: 'Arkiv 9 vägrade ta emot avsändaren två gånger. Den tredje gången tog de emot budet i stället.',
|
||
},
|
||
penalty: { deliver: { composure: 1, suspicion: 2 }, return: { composure: 2 }, archive: { suspicion: 2 } },
|
||
},
|
||
{
|
||
id: 'l25', day: 3, sender: 'Avdelning Noll', recipient: 'Vaktmästeriet', address: 'Källarplan -6', postmark: '2026-07-23',
|
||
body: 'Byt lampan i korridoren. Den nuvarande belyser sådant som inte längre är anställt.', marks: ['INTERNPOST', '0', 'BRÅDSKANDE'],
|
||
correctRoute: 'deliver', explanation: 'Avdelning Nolls internpost skall alltid vidare enligt §5.9, trots det negativa våningsplanet.',
|
||
correctConsequence: 'Vaktmästaren tog med en stege och kom tillbaka utan den. Lampan fungerar nu.',
|
||
},
|
||
{
|
||
id: 'l26', day: 3, sender: 'Bostadsrättsföreningen Eken', recipient: 'Innehavaren', address: 'Östra Rönneholmsvägen -1', postmark: '2026-07-23',
|
||
body: 'Kallelse till extra föreningsstämma angående den nya lägenheten under tvättstugan.', marks: ['REKOMMENDERAT'],
|
||
correctRoute: 'return', explanation: 'Negativa gatunummer är ogiltiga enligt §5.2. Det gäller även bostadsrättsföreningar med expansionsplaner.',
|
||
correctConsequence: 'Föreningen strök lägenheten ur röstlängden. Avgiften drogs fortfarande via autogiro.',
|
||
wrongConsequences: {
|
||
deliver: 'En ny namnskylt dök upp under hissens nedersta knapp. Föreningen kräver nu att du betalar medlemsavgift.',
|
||
archive: 'Arkiv 9 registrerade fastigheten. Kommunens karta fick ett hål där kvarteret brukade ligga.',
|
||
quarantine: 'Karantänskåpet kallades till föreningsstämman och fick två röster.',
|
||
},
|
||
penalty: { deliver: { suspicion: 2 }, archive: { composure: 2 }, quarantine: { suspicion: 2 } },
|
||
},
|
||
{
|
||
id: 'l27', day: 4, sender: 'Arkiv 9', recipient: 'Sorteringen', address: 'Internfack 9', postmark: '2026-07-24',
|
||
body: 'Den här försändelsen har tre svarta stämplar. Den här försändelsen har fyra svarta stämplar.', marks: ['SVART STÄMPEL', 'SVART STÄMPEL', 'SVART STÄMPEL', 'TEXTEN HAR ÄNDRATS'],
|
||
correctRoute: 'quarantine', explanation: 'Textförändring enligt §6.6 har uttryckligt företräde framför trestämpelregeln.',
|
||
correctConsequence: 'Skåpet svalde brevet utan att öppnas. En fjärde svart stämpel syntes kort på din handrygg.',
|
||
wrongConsequences: {
|
||
archive: 'Arkiv 9 skickade tillbaka brevet tillsammans med ett fotografi av dig när du fattade beslutet.',
|
||
},
|
||
penalty: { archive: { composure: 2, suspicion: 2 } },
|
||
},
|
||
{
|
||
id: 'l28', day: 4, sender: 'Länsstyrelsen', recipient: 'Arkiv 9', address: 'Internleverans', postmark: '2026-07-24',
|
||
body: 'Slutrapport rörande tre försvunna brunnar, två felplacerade vittnen och ett godkänt avsteg.', marks: ['SVART STÄMPEL', 'SVART STÄMPEL', 'SVART STÄMPEL'],
|
||
correctRoute: 'archive', explanation: 'Tre svarta stämplar innebär Arkiv 9. Texten har inte förändrats, hur mycket man än önskar det.',
|
||
correctConsequence: 'Rapporten arkiverades. En av brunnarna ströks från bilagan och från verkligheten.',
|
||
},
|
||
{
|
||
id: 'l29', day: 5, sender: 'Skatteverket 2041', recipient: 'Skatteverket 2026', address: 'Kungsgatan 15', postmark: '2041-03-18',
|
||
body: 'Förhandsbesked: dödsboet efter Staten Sverige saknar behörig firmatecknare.', marks: ['FRAMTIDA', 'TJÄNSTEPOST'],
|
||
correctRoute: 'return', explanation: 'Framtida post skall återsändas enligt §7.1. Innehållets skattemässiga betydelse är inte ert ansvar.',
|
||
correctConsequence: 'Returen accepterades femton år i förväg. Ett automatiskt dröjsmålsbrev skrevs ut omedelbart.',
|
||
},
|
||
{
|
||
id: 'l30', day: 5, sender: 'Föreståndaren, måndag', recipient: 'Du, fredag', address: 'Ditt sorteringsbord', postmark: '2026-07-27',
|
||
body: 'Du läser det sista brevet nu. När du har stämplat hör du hissen stanna på plan fyra. Ta inte med nyckeln.', marks: ['NÄSTA VECKA', 'PERSONLIGT'],
|
||
correctRoute: 'quarantine', explanation: 'Framtida post som beskriver den pågående arbetsdagen omfattas av §7.4. Det räcker att beskrivningen är korrekt.',
|
||
correctConsequence: 'Brevet låstes in. Hissen stannade ändå på plan fyra. Någon därute provade din dörr tre gånger.',
|
||
wrongConsequences: {
|
||
deliver: 'Du vidarebefordrade brevet till dig själv. Hissen öppnades och nästa arbetsvecka började genast.',
|
||
return: 'Föreståndaren tog emot returen i måndags och skrev ditt namn på fredagens frånvarolista.',
|
||
archive: 'Arkiv 9 registrerade dagen som redan avslutad. Alla klockor i huset hoppade till 17:01.',
|
||
},
|
||
penalty: { deliver: { composure: 2, suspicion: 2 }, return: { suspicion: 2 }, archive: { composure: 2 } },
|
||
},
|
||
];
|
||
|
||
export const DAY_BRIEFINGS = [
|
||
'Vanliga brev. Vanliga regler. Försök att inte vänja dig.',
|
||
'Personalregistret har uppdaterats. Några mottagare invände skriftligen.',
|
||
'Avdelning Noll har åter öppnat för internpost. Avdelning Noll finns inte.',
|
||
'Nattpersonalen rapporterar att vissa brev behöver läsas mer än en gång. Gör inte det.',
|
||
'Fredag. Framtiden har börjat svara. Stäng luckan 17:00, oavsett vem som knackar.',
|
||
];
|