Den Daten durch eine Funktion folgen
Eine Datenflussprüfung folgt personenbezogenen Daten von dort, wo sie hereinkommen, bis dorthin, wo sie enden. Sie fragt, wohin sie gehen, wer sie sieht, wie lange sie bleiben und warum.
Eine Prüfung findet Probleme auf dem Papier, bevor eine Funktion live geht. Sie ist eine Denkweise und kein Zertifikat dafür, dass etwas rechtmäßig ist.
Am Ende dieser Lektion
Notiz
Ich kann den Datenfluss einer Funktion anhand einer Checkliste prüfen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Datenfluss | der Weg, den personenbezogene Daten durch eine Funktion nehmen | |
| Checkliste | eine Liste von Fragen, die jeder Schritt beantworten muss | |
| Freigegebener Ort | ein Ort, an den Daten nach Ihrer Entscheidung gehen dürfen | unsere Datenbank |
| Leser | eine Person oder Gruppe, die die Daten sehen kann | |
| Zweck | der Grund, warum ein Schritt die Daten nutzt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Datenfluss ist eine Liste von Schritten
Schreiben Sie jeden Schritt des Weges als eine Zeile. Ein Schritt hat einen Namen, die Daten, die er nutzt, den Ort, an den sie gehen, und wer sie dort lesen kann.
Er hat außerdem die Tage der Aufbewahrung, ob vorher geschwärzt wurde, und den Grund der Nutzung. Fünf Fragen machen aus diesen Zeilen eine Prüfung.
Die fünf Prüfungen
| Prüfung | Sie fällt durch, wenn | Beispiel aus dem Run |
|---|---|---|
| Ungeschwärzt nach außen | Daten gehen ungeschwärzt an einen nicht freigegebenen Ort | App zum Modell |
| Zu viele Leser | Zu den Lesern gehören alle | Protokoll schreiben |
| Keine Frist | Es ist keine Zahl von Tagen festgelegt | Protokoll schreiben |
| Zu lange aufbewahrt | Die Tage liegen über Ihrer Grenze | Wöchentlicher Export, 400 Tage |
| Kein Zweck | Es ist kein Grund aufgeschrieben | Wöchentlicher Export |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Prüfung meldet jeden Mangel
Prüfen Sie jeden Schritt der Reihe nach und listen Sie jeden Mangel auf. Ein Schritt kann mehrere Prüfungen nicht bestehen. Ein Schritt ohne Mangel fügt der Liste nichts hinzu.
Zählen Sie die Mängel nach Prüfung. Dann sehen Sie zum Beispiel, dass drei Schritte keine Frist haben, und beheben sie gemeinsam.
Ein häufiger Fehler
Warnung
Viele denken, ein Datenfluss, der die Checkliste besteht, entspreche dem Gesetz. Das stimmt nicht. Er zeigt nur, dass fünf Fragen Antworten haben. Die Regeln unterscheiden sich nach Ort und Nutzung, also entscheidet eine Person mit der nötigen Sachkunde. Diese Lektion ist keine Rechtsberatung.
Die Modellhilfe schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' ' return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Modellhilfe schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' ' try {' ' const res = await fetch(basis + \"/v1/chat/completions\", {' ' method: \"POST\",' ' headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' ' body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"Status \" + res.status);' ' const d = await res.json();' ' return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' ' } catch (fehler) {' ' console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' ' return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' ' }' '}' 'module.exports = { fragen };' >> model.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datenflussprüfung schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const freigegeben = [\"unsere App\", \"unsere Datenbank\"];' 'const grenze = 90;' 'const ablauf = [' ' { schritt: \"Formular zur App\", daten: [\"E-Mail\", \"Nachricht\"], ziel: \"unsere App\", wer: [\"Support\"], tage: 30, geschwaerzt: false, zweck: \"Kundschaft antworten\" },' ' { schritt: \"App zum Modell\", daten: [\"Nachricht\"], ziel: \"Modellanbieter\", wer: [\"Modellanbieter\"], tage: 0, geschwaerzt: false, zweck: \"Antwort schreiben\" },' ' { schritt: \"Protokoll schreiben\", daten: [\"E-Mail\"], ziel: \"unsere Datenbank\", wer: [\"alle\"], tage: null, geschwaerzt: false, zweck: \"Fehlersuche\" },' '];' > review.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datenflussprüfung schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'ablauf.push({ schritt: \"Wöchentlicher Export\", daten: [\"E-Mail\"], ziel: \"Analyseanbieter\", wer: [\"Analyst\"], tage: 400, geschwaerzt: true, zweck: \"\" });' 'ablauf.push({ schritt: \"Zwischenspeicher\", daten: [], ziel: \"unsere App\", wer: [\"Support\"], tage: 1, geschwaerzt: false, zweck: \"Tempo\" });' 'function pruefen(s) {' ' const aus = [];' ' if (s.daten.length > 0 && freigegeben.indexOf(s.ziel) < 0 && s.geschwaerzt === false) aus.push(\"ungeschwärzt nach außen\");' ' if (s.wer.indexOf(\"alle\") >= 0) aus.push(\"zu viele Leser\");' ' if (s.tage === null) aus.push(\"keine Frist\");' ' else if (s.tage > grenze) aus.push(\"zu lange aufbewahrt\");' ' if (s.zweck.trim().length === 0) aus.push(\"kein Zweck\");' ' return aus;' '}' >> review.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datenflussprüfung schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' let durchgefallen = 0;' ' ablauf.forEach(function (s) {' ' const f = pruefen(s);' ' if (f.length > 0) durchgefallen = durchgefallen + 1;' ' console.log(s.schritt + \" -> \" + (f.length === 0 ? \"besteht\" : f.join(\", \")));' ' });' ' console.log(\"Schritte, die durchfallen: \" + durchgefallen + \" von \" + ablauf.length);' ' const q = \"Schreiben Sie in einem kurzen Satz, warum man für jeden Schritt, der personenbezogene Daten nutzt, den Zweck aufschreibt.\";' ' const probe = \"Ein aufgeschriebener Zweck zeigt, warum die Daten genutzt werden, und ein Schritt ohne Grund fällt auf.\";' ' const antwort = await fragen([{ role: \"user\", content: q }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> review.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datenflussprüfung ausführen
docker exec -w /home/node/project agent node review.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Run ausgibt
| Zeile | Was sie zeigt |
|---|---|
| Formular zur App -> besteht | Freigegebener Ort, ein Grund und eine Frist |
| App zum Modell -> ungeschwärzt nach außen | Eine Nachricht ging ohne Schwärzen hinaus |
| Protokoll schreiben -> zu viele Leser, keine Frist | Zwei Mängel in einem Schritt |
| Wöchentlicher Export -> zu lange aufbewahrt, kein Zweck | Zwei weitere Mängel |
| Schritte, die durchfallen: 3 von 5 | Die Zusammenfassung |
| Das Modell sagte: ... | Ein Satz. Die Worte ändern sich bei jedem Lauf |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.