Stufe 8 aus dem Plan zur Perfektion: "Loeschkonzept je Datenart ·
IP-Adressen im Protokoll nach 30 Tagen weg. Je mehr Daten, desto teurer
das Nachholen."
WARUM NICHT ALS NOTIZ
Ein Loeschkonzept als Dokument ist nach dem ersten neuen Feld falsch,
und niemand merkt es. workspace-aufbewahrung.js ist beides: die
Uebersicht, was wie lange aufgehoben wird -- UND das Programm, das es
tut. Was dort nicht steht, wird nicht geraeumt; was dort steht, wird
geraeumt.
GEMESSEN, BEVOR ETWAS GEBAUT WURDE
42 Tabellen durchgesehen. Drei halten IP-Adressen:
versuche.ip wird beim Anmelden im Fenster geraeumt ok
sitzungen.ip nur beim Abmelden -- ABGELAUFENE Sitzungen
standen ewig da, samt IP und Browser Luecke
protokoll.ip wurde nirgends geraeumt, wuchs ewig Luecke
Zwei echte Luecken also, nicht fuenf vermutete.
DREI SORTEN EINTRAG, UND DIE DRITTE IST DIE WICHTIGSTE
raeumen Diese Datei loescht selbst.
fremd Eine andere Stelle loescht -- hier wird nur GEZAEHLT.
Bricht die andere Stelle, steht die Zahl trotzdem da.
bleibt Wird absichtlich aufgehoben, mit Begruendung.
Ein Loeschkonzept, das nur Loeschungen auffuehrt, ist ein halbes: Die
begruendete Aufbewahrung ist der Teil, nach dem gefragt wird. Jede
Zeile nennt Frist, Zweck, Rechtsgrundlage und Wirkung.
SICHTBAR, NICHT NUR WIRKSAM
Auf automation.html -- dort steht alles, was ohne Zutun laeuft, und
genau das ist es. Bei jeder Zeile die Zahl, wie viele Datensaetze sie
gerade betrifft, und ein Knopf "Jetzt aufraeumen", damit es kein
schwarzer Kasten ist. Die Sorte steht als WORT daneben, nicht nur als
Farbe.
BEI ETWAS, DAS LOESCHT, IST DIE WICHTIGERE HAELFTE: WAS ES NICHT LOESCHT
Zu jeder Loeschung eine Gegenprobe:
IP nach 30 Tagen weg -> und die von vor 29 Tagen bleibt
IP weg -> und die ZEILE bleibt (nur das Feld)
abgelaufene Sitzung weg -> und die gueltige bleibt
abgelaufene Sitzung weg -> und ich bin danach noch angemeldet
Die letzte ist die unbequemste und die wichtigste: Ein Aufraeumlauf,
der die eigene Anmeldung mitnimmt, wirft im Betrieb alle hinaus -- und
zwar einmal taeglich. Dazu: ein zweiter Lauf muss NICHTS mehr finden
(sonst waere "aufgeraeumt" nicht von "nichts getan" zu unterscheiden),
und eine Zaehlung ueber eine fehlende Tabelle ergibt `null`, nicht 0.
NEBENBEI: EINE EIGENE DOPPLUNG VON GESTERN
Drei der Seitenerklaerungen sagten in "Wofuer" und "Du tust" fast
dasselbe (report 80 %, treff-regeln 67 %, startcheck 50 %). Gestern
hatte ich nur den Fall geprueft, an dem ich mich verbrannt hatte --
"Wofuer" gegen die Unterzeile -- und die naheliegendere Dopplung
uebersehen. Jetzt gemessen, schlechtester Wert 25 %.
PRUEFUNGEN: pruef-aufbewahrung neu mit 41, davon 7 im Browser
(der Knopf muss eine Zahl wirklich fallen lassen, und die IP muss
danach in der Datenbank weg sein). pruef-erklaerung 44 -> 47.
Co-Authored-By: Claude Opus 5 <[email protected]>
120 lines
4.7 KiB
HTML
120 lines
4.7 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Meldungen & Maßnahmen · Der Treff</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609150036" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/treff.css?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609150036" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609150036" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · Meldungen</span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt inhalt--breit">
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke">Der Treff · Moderation</p>
|
||
<h1 class="titel">Meldungen & Maßnahmen</h1>
|
||
<p class="unterzeile">
|
||
Was gemeldet wurde, was entfernt wurde und mit welcher Begründung –
|
||
alles an einer Stelle.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- ==================================================================
|
||
WARUM DIESE SEITE EXISTIERT
|
||
|
||
Die Schnittstellen dafür gab es zuerst, die Seite nicht. Eine
|
||
Meldung, die nur über eine Schnittstelle abrufbar ist, ist keine
|
||
Meldung — sie ist eine Zeile in einer Datenbank, die niemand
|
||
liest. Der DSA verlangt in Artikel 16, dass Meldungen
|
||
BEARBEITET werden; ohne eine Stelle, an der sie erscheinen,
|
||
wäre das ein Versprechen an eine Schublade.
|
||
|
||
DREI ABSCHNITTE, IN DIESER REIHENFOLGE: Was liegt an (Meldungen)
|
||
— was wurde getan (Entfernt) — wer ist gesperrt (Maßnahmen). Wer
|
||
diese Seite öffnet, hat fast immer die erste Frage.
|
||
============================================================== -->
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Offene Meldungen</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Zu jeder Entscheidung gehört ein Satz. Er wird festgehalten –
|
||
auch damit man später weiß, warum etwas so entschieden wurde.
|
||
</p>
|
||
</div>
|
||
<div id="meldungen" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Entfernt</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Was entfernt wurde, und warum. Die Begründung überlebt den Beitrag –
|
||
das ist der Sinn der Sache
|
||
<span class="leise">(Digital Services Act, Artikel 17)</span>.
|
||
</p>
|
||
</div>
|
||
<div id="entfernt" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Die Mitglieder</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Wer da ist, seit wann, auf welcher Stufe – und wer gerade eine Pause
|
||
hat. Von hier aus wird gehandelt; die Stufe steht nur hier und
|
||
<strong>nie</strong> neben dem Namen im Treff.
|
||
</p>
|
||
</div>
|
||
<div id="mitglieder" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Hinweise, Pausen, Ausschlüsse</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p id="leiter">…</p>
|
||
</div>
|
||
<div id="massnahmen" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/wahl.js?v=202609150036" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609150036" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609150036" defer></script>
|
||
<script src="assets/js/erklaerung.js?v=202609150036" defer></script>
|
||
<script src="assets/js/treff-moderation.js?v=202609150036" defer></script>
|
||
</body>
|
||
</html>
|