Files
planer2/daten/Planer/.planung/.pruefung.json
2026-07-29 15:19:41 +02:00

929 lines
32 KiB
JSON

{
"abdeckung": {
"bedienen:ablehnen": {
"abdruck": "e9cce25d92b81ff6",
"funktion": "Vorschlag annehmen",
"trug": "089e774256dcce89"
},
"bedienen:alleAblehnen": {
"abdruck": "ac9262c7cafe9537",
"funktion": "Alle Vorschläge verwerfen",
"trug": "6869d68fdbd6d0a7"
},
"bedienen:alleAnnehmen": {
"abdruck": "94f23cae75fdc531",
"funktion": "Alle Vorschläge annehmen",
"trug": "94ebeec7b03abb70"
},
"bedienen:annehmen": {
"abdruck": "2742ad031b3d3cca",
"funktion": "Vorschlag annehmen",
"trug": "089e774256dcce89"
},
"bedienen:auswaehlen": {
"abdruck": "d061bf62466085ce",
"funktion": "Projekt aufrufen",
"trug": "e24c2ab0a27ace24"
},
"bedienen:bereichsMenue": {
"abdruck": "4277536d43c7bcd5",
"funktion": "Projekt aufrufen",
"trug": "e24c2ab0a27ace24"
},
"bedienen:bestaetigen": {
"abdruck": "db1f954b9ad01749",
"funktion": "Eingabe mit Enter bestätigen",
"trug": "43fca3b0e83b3701"
},
"bedienen:erledige": {
"abdruck": "1b80ae13958bb11a",
"funktion": "Vorgeschlagene Karte anlegen",
"trug": "de2b733c447db595"
},
"bedienen:funktionsMenue": {
"abdruck": "bacdd0a7cc9d0f92",
"funktion": "Funktion verschieben",
"trug": "6a33d1b7b5a7f28c"
},
"bedienen:karteAnnehmen": {
"abdruck": "bf348251763e402a",
"funktion": "Vorgeschlagene Karte anlegen",
"trug": "de2b733c447db595"
},
"bedienen:kartenMenue": {
"abdruck": "d3ba136a562eb1e9",
"funktion": "Feature entfernen",
"trug": "f486bf09c64ebb3a"
},
"bedienen:leeren": {
"abdruck": "f2af432a5ae3b255",
"funktion": "Gespräch verwerfen",
"trug": "1f848fba8b2a5e56"
},
"bedienen:leistenMenue": {
"abdruck": "ed951fbeaaa9bc70",
"funktion": "Projekt anlegen",
"trug": "44b8a59e1dcb20d4"
},
"bedienen:oeffneChat": {
"abdruck": "9bf171761edca141",
"funktion": "Gespräch öffnen",
"trug": "c71610a339bb298e"
},
"bedienen:projektMenue": {
"abdruck": "ea73f8c2597c0443",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"bedienen:schliesse": {
"abdruck": "919b104c012c034d",
"funktion": "",
"trug": ""
},
"bedienen:schliessen": {
"abdruck": "1e12f9ae001e93e1",
"funktion": "Gespräch verwerfen",
"trug": "1f848fba8b2a5e56"
},
"bedienen:senden": {
"abdruck": "8df3402ed3373acc",
"funktion": "Nachricht senden",
"trug": "e61022551a98250f"
},
"bedienen:springe": {
"abdruck": "0b134efa50c03bff",
"funktion": "Problemstelle anspringen",
"trug": "7486526f6867c436"
},
"bedienen:starte": {
"abdruck": "761c2f62c917a3db",
"funktion": "Titel anpassen",
"trug": "d0b7a430e96e2599"
},
"bedienen:startePruefung": {
"abdruck": "31c3fef23c6319d8",
"funktion": "Gespräch öffnen",
"trug": "c71610a339bb298e"
},
"bedienen:umbenennen": {
"abdruck": "6185b6b39708bf02",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"bedienen:wechsleAnsicht": {
"abdruck": "e3193fce50eaa58e",
"funktion": "Anzeigemodus umschalten",
"trug": "fccea553715951de"
},
"bedienen:wechsleArt": {
"abdruck": "67250a1e8d82e960",
"funktion": "Feature einstufen",
"trug": "90b6c77ff0c412e6"
},
"bedienen:wechsleDarkMode": {
"abdruck": "b83524eb0e12a7d7",
"funktion": "Darkmode umschalten",
"trug": "4033fc55c753db3e"
},
"bedienen:wechsleStand": {
"abdruck": "8c2e3bf3be58ec00",
"funktion": "Stand umschalten",
"trug": "37a3835d1d2a3e6c"
},
"bedienen:zurueck": {
"abdruck": "e378014fbce96d10",
"funktion": "Schritt zurücknehmen",
"trug": "10e46c458040a5e3"
},
"hoeren:systemDunkel.change": {
"abdruck": "d3ef681b987557dc",
"funktion": "Darkmode umschalten",
"trug": "4033fc55c753db3e"
},
"hoeren:window.click": {
"abdruck": "620812522ed2d900",
"funktion": "Kontextmenü schließen",
"trug": "87216235bbe42a1a"
},
"hoeren:window.keydown": {
"abdruck": "c3e1df2d60fcc067",
"funktion": "Schritt zurücknehmen",
"trug": "10e46c458040a5e3"
},
"menue:+ Feature erstellen": {
"abdruck": "82c40072137d5757",
"funktion": "Feature anlegen",
"trug": "df7a1452a32da410"
},
"menue:+ Funktion erstellen": {
"abdruck": "b44457d64a5ec9d1",
"funktion": "Feature entfernen",
"trug": "f486bf09c64ebb3a"
},
"menue:+ Projekt erstellen": {
"abdruck": "2be770390433a2ce",
"funktion": "Projekt anlegen",
"trug": "44b8a59e1dcb20d4"
},
"menue:+ Vision erstellen": {
"abdruck": "cb22a654070e58b4",
"funktion": "Feature anlegen",
"trug": "df7a1452a32da410"
},
"menue:→ Feature verschieben": {
"abdruck": "38e6b244668ee164",
"funktion": "Feature entfernen",
"trug": "f486bf09c64ebb3a"
},
"menue:▲ Nach oben": {
"abdruck": "4e6fd1617d817357",
"funktion": "Funktion verschieben",
"trug": "6a33d1b7b5a7f28c"
},
"menue:▼ Nach unten": {
"abdruck": "183651450e546c4f",
"funktion": "Funktion entfernen",
"trug": "885e16a93460f706"
},
"menue:◇ Quelle festlegen": {
"abdruck": "e4bb1781bc375d6d",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"menue:✎ Projekt anpassen": {
"abdruck": "ad505addca45b06c",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"menue:✕ Feature entfernen": {
"abdruck": "bc968582260c45b9",
"funktion": "Funktion anlegen",
"trug": "78d0329cf6eacca9"
},
"menue:✕ Funktion entfernen": {
"abdruck": "d29458b150c55777",
"funktion": "Funktion verschieben",
"trug": "6a33d1b7b5a7f28c"
},
"menue:✕ Projekt entfernen": {
"abdruck": "aca25c0b5feaf752",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"menue:✕ Vision entfernen": {
"abdruck": "88520b1f105d3fb5",
"funktion": "Anzeigemodus umschalten",
"trug": "fccea553715951de"
},
"route:delete /projekte/{name}": {
"abdruck": "b4f871be35d10e5f",
"funktion": "Projekt entfernen",
"trug": "e91a89b8d78dbd2e"
},
"route:delete /projekte/{name}/features/{id}": {
"abdruck": "c1db81de98835c39",
"funktion": "Feature entfernen",
"trug": "f486bf09c64ebb3a"
},
"route:delete /projekte/{name}/pruefung": {
"abdruck": "7a480f33ddf55165",
"funktion": "Prüfung beenden",
"trug": "83435eb3e1394e49"
},
"route:get /health": {
"abdruck": "65257319741edf35",
"funktion": "",
"trug": ""
},
"route:get /projekte": {
"abdruck": "276556054437c303",
"funktion": "",
"trug": ""
},
"route:get /projekte/{name}/chat": {
"abdruck": "fd2a22c36ea85545",
"funktion": "Gespräch öffnen",
"trug": "c71610a339bb298e"
},
"route:get /projekte/{name}/features": {
"abdruck": "122f93cbd0d07881",
"funktion": "Projekt aufrufen",
"trug": "e24c2ab0a27ace24"
},
"route:get /projekte/{name}/pruefung": {
"abdruck": "e651ac90b7b2c520",
"funktion": "",
"trug": ""
},
"route:get /projekte/{name}/quelle": {
"abdruck": "834d3af3203ca3a8",
"funktion": "Quelle festlegen",
"trug": "b8b70dd0ff9817cb"
},
"route:get /projekte/{name}/verlauf": {
"abdruck": "5a3dcc678733fad8",
"funktion": "",
"trug": ""
},
"route:post /projekte": {
"abdruck": "fa1628d7e469885d",
"funktion": "Projekt anlegen",
"trug": "44b8a59e1dcb20d4"
},
"route:post /projekte/{name}/chat": {
"abdruck": "c3edc89cec5d2f6f",
"funktion": "Nachricht senden",
"trug": "e61022551a98250f"
},
"route:post /projekte/{name}/features": {
"abdruck": "00eb9c16560bac73",
"funktion": "Feature anlegen",
"trug": "df7a1452a32da410"
},
"route:post /projekte/{name}/pruefung": {
"abdruck": "6d7444a9dfad7d54",
"funktion": "Stil prüfen",
"trug": "d5019cdafd70efb7"
},
"route:post /projekte/{name}/pruefung/verworfen": {
"abdruck": "a43f7221e01c386f",
"funktion": "Alle Vorschläge verwerfen",
"trug": "6869d68fdbd6d0a7"
},
"route:post /projekte/{name}/verlauf/zurueck": {
"abdruck": "308fec6d21b01d60",
"funktion": "Schritt zurücknehmen",
"trug": "10e46c458040a5e3"
},
"route:put /projekte/{name}": {
"abdruck": "75383ac009961cad",
"funktion": "Projekt umbenennen",
"trug": "40d6954a44fa3240"
},
"route:put /projekte/{name}/features/{id}": {
"abdruck": "b24c7000fd2ec94c",
"funktion": "",
"trug": ""
},
"route:put /projekte/{name}/features/{id}/projekt": {
"abdruck": "fafc7a8a1656f93b",
"funktion": "Feature verschieben",
"trug": "cd2cd705298831e0"
},
"route:put /projekte/{name}/quelle": {
"abdruck": "d342055e3163548a",
"funktion": "Quelle festlegen",
"trug": "b8b70dd0ff9817cb"
}
},
"belege": {
"[\"darkmode\", \"Darkmode umschalten\"]": {
"abdruck": "653c08d0647a7f7b",
"beleg": "function wechsleDarkMode() {\n modus.value = MODI[(MODI.indexOf(modus.value) + 1) % MODI.length]\n localStorage.setItem('darkModus', modus.value)\n wendeAn()\n}",
"datei": "frontend/src/App.vue"
},
"[\"design\", \"Eingabe mit Enter bestätigen\"]": {
"abdruck": "3bace3e9c9f16023",
"beleg": "@keydown.enter.exact.prevent=\"senden\"",
"datei": "frontend/src/components/ChatPanel.vue"
},
"[\"design\", \"Kontextmenü schließen\"]": {
"abdruck": "671fa86bccb2c2c6",
"beleg": "export function schliesseMenue() {\n kontextMenue.value = null\n}",
"datei": "frontend/src/composables/kontextmenue.js"
},
"[\"features\", \"Anzeigemodus umschalten\"]": {
"abdruck": "b22ba2dd122887fa",
"beleg": "function wechsleAnsicht() {\n gross.value = !gross.value\n}",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"features\", \"Feature anlegen\"]": {
"abdruck": "d2968bea16a06b65",
"beleg": "async function erstellen(titel) {",
"datei": "frontend/src/components/FeatureListe.vue"
},
"[\"features\", \"Feature durchsuchen\"]": {
"abdruck": "4f249c42d46d25b5",
"beleg": "function passt(f) {\n const wort = suche.value.trim().toLowerCase()\n if (!wort) return true\n const s = f.sektionen\n const text = [s.titel, s.ziel, s.regeln,\n ...s.funktionen.map(x => `${x.text} ${x.ziel} ${x.regeln} ${x.testen}`)]\n return text.join(' ').toLowerCase().includes(wort)\n}",
"datei": "frontend/src/components/FeatureListe.vue"
},
"[\"features\", \"Feature einstufen\"]": {
"abdruck": "a0ee6590c24456bb",
"beleg": "function wechsleArt() {\n s.value.art = s.value.art === 'kern' ? 'optional' : 'kern'\n speichern()\n}",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"features\", \"Feature entfernen\"]": {
"abdruck": "c6f27381a41a63d7",
"beleg": "async function entfernen() {\n const id = modal.value.feature.id\n try {\n await featureLoeschen(props.projekt, id)\n features.value = features.value.filter(f => f.id !== id)\n modal.value = null\n emit('geaendert')\n } catch (e) {\n meldung.value = e.message\n }\n}",
"datei": "frontend/src/components/FeatureListe.vue"
},
"[\"features\", \"Feature verschieben\"]": {
"abdruck": "a82b97e3d4a1b533",
"beleg": "def verschieben(projekt: str, id: str, ziel: str) -> dict:",
"datei": "backend/features.py"
},
"[\"features\", \"Regeln anpassen\"]": {
"abdruck": "0af0e4eadcaae560",
"beleg": "<div v-else-if=\"s.regeln\" class=\"klickbar\" @click=\"starte('regeln')\">",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"features\", \"Titel anpassen\"]": {
"abdruck": "7f727f71dc555492",
"beleg": "<h3 v-else :title=\"gross ? 'Klicken zum Bearbeiten' : null\" @click=\"starte('titel')\">{{ s.titel }}</h3>",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"features\", \"Ziel anpassen\"]": {
"abdruck": "965b52779fa6aa35",
"beleg": "<div v-else-if=\"s.ziel\" class=\"inhalt klickbar\" v-html=\"md(s.ziel)\" @click=\"starte('ziel')\" />",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Funktion anlegen\"]": {
"abdruck": "6250215b920cf0f0",
"beleg": "async function funktionErstellen(titel) {",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Funktion entfernen\"]": {
"abdruck": "20e8d8e507ee6310",
"beleg": "eintraege.push({ text: '✕ Funktion entfernen', aktion: () => (modal.value = { art: 'entfernen', i }) })",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Funktion verschieben\"]": {
"abdruck": "8435119f0dd5b891",
"beleg": "async function schiebe(i, richtung) {",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Regeln anpassen\"]": {
"abdruck": "303d6988603e3d61",
"beleg": "async function starte(feld, i, j) {\n if (!gross.value) return // Bearbeiten nur in der ausführlichen Ansicht\n const original = wert(feld, i, j)\n aktiv.value = { feld, i, j, original }\n entwurf.value = original\n await nextTick()\n const el = Array.isArray(feldRef.value) ? feldRef.value[0] : feldRef.value\n el?.focus()\n if (feld === 'titel') el?.select()\n}",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Stand umschalten\"]": {
"abdruck": "b66ea5f488899d8f",
"beleg": "@click.stop=\"wechsleStand(i)\"",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Testschritte anpassen\"]": {
"abdruck": "e303ebeaece423de",
"beleg": "<div v-else class=\"klickbar\" @click=\"starte('testen', i)\">",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Titel anpassen\"]": {
"abdruck": "3ceaa19290c793b4",
"beleg": "s.value.funktionen[a.i].text = neu",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"funktionen\", \"Ziel anpassen\"]": {
"abdruck": "4cb617031cbf6ef4",
"beleg": "<div v-else class=\"inhalt klickbar\" v-html=\"md(f.ziel)\" @click=\"starte('ziel', i)\" />",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"karten-besprechen\", \"Gespräch schließen\"]": {
"abdruck": "d6de2c46300fef26",
"beleg": "<button class=\"icon-knopf\" title=\"Gespräch schließen\" @click=\"emit('schliessen')\">✕</button>",
"datei": "frontend/src/components/ChatPanel.vue"
},
"[\"karten-besprechen\", \"Gespräch verwerfen\"]": {
"abdruck": "9e74be976a4d0e15",
"beleg": "@router.delete(\"/projekte/{name}/chat\")\nasync def chat_leeren(name: str):\n try:\n chat.leeren(name)\n except FileNotFoundError as e:\n raise HTTPException(404, str(e))\n return {\"ok\": True}",
"datei": "backend/routes.py"
},
"[\"karten-besprechen\", \"Gespräch öffnen\"]": {
"abdruck": "c84f9a14428a019e",
"beleg": "<button\n class=\"icon-knopf\"\n :class=\"{ an: chatOffen }\"\n title=\"Karten im Gespräch entwickeln\"\n @click=\"oeffneChat\"\n >✎</button>",
"datei": "frontend/src/App.vue"
},
"[\"karten-besprechen\", \"Nachricht senden\"]": {
"abdruck": "308218d682fe3dd9",
"beleg": "async def frage(projekt: str, text: str) -> dict:",
"datei": "backend/chat.py"
},
"[\"karten-besprechen\", \"Vorgeschlagene Karte anlegen\"]": {
"abdruck": "15aa862d2e0f6f6e",
"beleg": "async function karteAnnehmen(p) {",
"datei": "frontend/src/components/FeatureListe.vue"
},
"[\"karten-pruefen\", \"Alle Vorschläge annehmen\"]": {
"abdruck": "52fb2acd3d6945fa",
"beleg": "async function alleAnnehmen() {\n props.probleme.forEach(p => { if (anwenden(p)) erledige(p) })\n await speichern()\n}",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"karten-pruefen\", \"Alle Vorschläge verwerfen\"]": {
"abdruck": "f98fd3fc005b9e56",
"beleg": "<button\n class=\"icon-knopf rot\"\n :title=\"`Alle ${probleme.length} Vorschläge verwerfen`\"\n @click=\"alleAblehnen\"\n >✕</button>",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"karten-pruefen\", \"Code in Features prüfen\"]": {
"abdruck": "daf5820ada5ee059",
"beleg": "async def code_im_feature(features: list, punkte: list, stand: dict,",
"datei": "backend/inhalt.py"
},
"[\"karten-pruefen\", \"Features im Code prüfen\"]": {
"abdruck": "acc652c172671790",
"beleg": "ANKLAGE_AB = 4",
"datei": "backend/inhalt.py"
},
"[\"karten-pruefen\", \"Funktion abnehmen\"]": {
"abdruck": "21095461d6190dec",
"beleg": "if beleg:\n stand[\"belege\"][schluessel] = beleg\n if x.get(\"stand\") == parser.OFFEN:\n # Abnahme: die Karte hat es bestellt, jetzt steht es im Code\n return {\"feature\": feature[\"id\"], \"titel\": x[\"text\"], \"art\": \"gebaut\",\n \"grund\": f'{beleg[\"datei\"]}: {beleg[\"beleg\"].strip()}'}",
"datei": "backend/inhalt.py"
},
"[\"karten-pruefen\", \"Problemstelle anspringen\"]": {
"abdruck": "340a32321fd23834",
"beleg": "karte.classList.add('gesucht')",
"datei": "frontend/src/components/PruefPanel.vue"
},
"[\"karten-pruefen\", \"Prüfung beenden\"]": {
"abdruck": "7400070de29ce762",
"beleg": "<button class=\"icon-knopf\" title=\"Schließen\" @click=\"schliesse\">✕</button>",
"datei": "frontend/src/components/PruefPanel.vue"
},
"[\"karten-pruefen\", \"Stil prüfen\"]": {
"abdruck": "86c4530f5dd0bd52",
"beleg": "async def starte(projekt: str, art: str = \"stil\") -> dict:",
"datei": "backend/pruefung.py"
},
"[\"karten-pruefen\", \"Vorschlag annehmen\"]": {
"abdruck": "e4b81d800fd23fec",
"beleg": "async function annehmen(p) {\n if (anwenden(p)) erledige(p)\n await speichern()\n}",
"datei": "frontend/src/components/FeatureKarte.vue"
},
"[\"karten-pruefen\", \"Vorschlag verwerfen\"]": {
"abdruck": "b37b74ea369ed66c",
"beleg": "export function erledige(problem) {\n probleme.value = probleme.value.filter(p => p !== problem)\n}",
"datei": "frontend/src/composables/pruefung.js"
},
"[\"projekte\", \"Projekt anlegen\"]": {
"abdruck": "9b3598c9081155b2",
"beleg": "def anlegen(name: str):",
"datei": "backend/projekte.py"
},
"[\"projekte\", \"Projekt aufrufen\"]": {
"abdruck": "1071109545496535",
"beleg": "@click=\"emit('auswaehlen', p.name)\"",
"datei": "frontend/src/components/SeitenLeiste.vue"
},
"[\"projekte\", \"Projekt entfernen\"]": {
"abdruck": "e413063557fa0f13",
"beleg": "shutil.rmtree(ordner)",
"datei": "backend/projekte.py"
},
"[\"projekte\", \"Projekt umbenennen\"]": {
"abdruck": "d4e71f8ef907393c",
"beleg": "function projektMenue(e, name) {\n oeffneMenue(e, [\n { text: '✎ Projekt anpassen', aktion: () => starteUmbenennen(name) },\n { text: '◇ Quelle festlegen', aktion: () => starteQuelle(name) },\n { text: '✕ Projekt entfernen', aktion: () => oeffneModal({ art: 'entfernen', name }) },\n ])\n}",
"datei": "frontend/src/components/SeitenLeiste.vue"
},
"[\"projekte\", \"Quelle festlegen\"]": {
"abdruck": "fc6c20f4e8d74fa6",
"beleg": "if ziel == Path(ziel.anchor) or ziel == Path.home():",
"datei": "backend/quelle.py"
},
"[\"schritt-zuruecknehmen\", \"Nächsten Rückschritt anzeigen\"]": {
"abdruck": "6768d8a0b83537a2",
"beleg": "letzterSchritt.value = (await fetchVerlauf(aktivesProjekt.value)).letzter",
"datei": "frontend/src/App.vue"
},
"[\"schritt-zuruecknehmen\", \"Schritt zurücknehmen\"]": {
"abdruck": "c49332e7a679dfda",
"beleg": "def zurueck(projekt: str) -> str:\n \"\"\"Den letzten Schritt zurücknehmen. Gibt zurück, was zurückgenommen wurde.\"\"\"\n schritte = lade(projekt)\n if not schritte:\n raise ValueError(\"Nichts zum Zurücknehmen\")\n schritt = schritte.pop()",
"datei": "backend/verlauf.py"
},
"[\"vision-festhalten\", \"Anzeigemodus umschalten\"]": {
"abdruck": "b983b82c02343560",
"beleg": "const gross = ref(false)",
"datei": "frontend/src/components/VisionKarte.vue"
},
"[\"vision-festhalten\", \"Vision anlegen\"]": {
"abdruck": "58ceb9502d1754bf",
"beleg": "<div class=\"bereich\" @contextmenu.prevent=\"bereichsMenue\">",
"datei": "frontend/src/components/FeatureListe.vue"
},
"[\"vision-festhalten\", \"Vision anpassen\"]": {
"abdruck": "dd527b57b4c9685e",
"beleg": "async function fertig() {\n if (!aktiv.value) return\n aktiv.value = false\n const neu = entwurf.value.trim()\n if (neu === text.value) return\n text.value = neu\n await speichern()\n}",
"datei": "frontend/src/components/VisionKarte.vue"
},
"[\"vision-festhalten\", \"Vision entfernen\"]": {
"abdruck": "0aeb156d13b32b7e",
"beleg": "function kartenMenue(e) {\n oeffneMenue(e, [{ text: '✕ Vision entfernen', aktion: () => emit('entfernen') }])\n}",
"datei": "frontend/src/components/VisionKarte.vue"
}
},
"ohne_code": {},
"ohne_karte": {
"route:delete /projekte/{name}/chat": {
"abdruck": "4ba7a240985a83b4",
"beleg": "backend/routes.py:182",
"feature": "karten-besprechen",
"karten": "41f55589fcff4959",
"stelle": "route:delete /projekte/{name}/chat",
"titel": "Chatverlauf leeren"
}
},
"paare": {
"[\"[\\\"features\\\", \\\"Anzeigemodus umschalten\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Anzeigemodus umschalten\\\"]\"]": {
"abdruck": "d23706be97d6369a",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature anlegen\\\"]\", \"[\\\"features\\\", \\\"Feature entfernen\\\"]\"]": {
"abdruck": "586059671bbfa75b",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature anlegen\\\"]\", \"[\\\"funktionen\\\", \\\"Funktion anlegen\\\"]\"]": {
"abdruck": "3eb9956887005cc4",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature anlegen\\\"]\", \"[\\\"projekte\\\", \\\"Projekt anlegen\\\"]\"]": {
"abdruck": "66a7175c58b703c4",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature entfernen\\\"]\", \"[\\\"funktionen\\\", \\\"Funktion anlegen\\\"]\"]": {
"abdruck": "97a9dde3e968b1eb",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature entfernen\\\"]\", \"[\\\"funktionen\\\", \\\"Funktion entfernen\\\"]\"]": {
"abdruck": "9717a5c6eab69f22",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature entfernen\\\"]\", \"[\\\"projekte\\\", \\\"Projekt entfernen\\\"]\"]": {
"abdruck": "65c43ee10d0d8b4a",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Feature entfernen\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Vision entfernen\\\"]\"]": {
"abdruck": "60434d422bbd2ca3",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"features\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "75e90ff6d5453c2d",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"features\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "a9e849a044a7ee41",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Regeln anpassen\\\"]\"]": {
"abdruck": "827215ea68dcbada",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "ea7185c230fbdd2f",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "bc79858745a7d262",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Titel anpassen\\\"]\", \"[\\\"features\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "69360dc1502aa01f",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Titel anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "01fbbfc1ca91d32a",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Titel anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "414ddf4e7bff9896",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Ziel anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "83a0a87e978c859a",
"gleich": false
},
"[\"[\\\"features\\\", \\\"Ziel anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "5e97e3c6fe9df287",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Funktion anlegen\\\"]\", \"[\\\"funktionen\\\", \\\"Funktion entfernen\\\"]\"]": {
"abdruck": "3e58148f974b6b34",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Funktion anlegen\\\"]\", \"[\\\"projekte\\\", \\\"Projekt anlegen\\\"]\"]": {
"abdruck": "202f51c53a73b452",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Funktion entfernen\\\"]\", \"[\\\"projekte\\\", \\\"Projekt entfernen\\\"]\"]": {
"abdruck": "a9d2c4dd5e70fa2c",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Funktion entfernen\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Vision entfernen\\\"]\"]": {
"abdruck": "4090ee6826466fa3",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "c8321ad2b769d77f",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "7ce003da82080259",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Regeln anpassen\\\"]\", \"[\\\"karten-pruefen\\\", \\\"Funktion abnehmen\\\"]\"]": {
"abdruck": "d2f80684e1be6287",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Testschritte anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\"]": {
"abdruck": "7a51922f327ba28b",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Testschritte anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "97a70c7ecfbb9f30",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\", \"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\"]": {
"abdruck": "17b00db94f54b62d",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Titel anpassen\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Vision anpassen\\\"]\"]": {
"abdruck": "d17a7b7bad8d947a",
"gleich": false
},
"[\"[\\\"funktionen\\\", \\\"Ziel anpassen\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Vision anpassen\\\"]\"]": {
"abdruck": "e25b21ca4183d372",
"gleich": false
},
"[\"[\\\"karten-pruefen\\\", \\\"Alle Vorschläge annehmen\\\"]\", \"[\\\"karten-pruefen\\\", \\\"Alle Vorschläge verwerfen\\\"]\"]": {
"abdruck": "b9c707879cffb7cd",
"gleich": false
},
"[\"[\\\"karten-pruefen\\\", \\\"Alle Vorschläge verwerfen\\\"]\", \"[\\\"karten-pruefen\\\", \\\"Vorschlag verwerfen\\\"]\"]": {
"abdruck": "aed348a776637c4a",
"gleich": false
},
"[\"[\\\"projekte\\\", \\\"Projekt anlegen\\\"]\", \"[\\\"projekte\\\", \\\"Projekt entfernen\\\"]\"]": {
"abdruck": "957ebec8e3096ce6",
"gleich": false
},
"[\"[\\\"projekte\\\", \\\"Projekt entfernen\\\"]\", \"[\\\"vision-festhalten\\\", \\\"Vision entfernen\\\"]\"]": {
"abdruck": "8757fb8b0f89d5a6",
"gleich": false
}
},
"stil": {
"[\"darkmode\", \"\"]": {
"abdruck": "a5b0fd59f25c55ae",
"probleme": []
},
"[\"darkmode\", \"Darkmode umschalten\"]": {
"abdruck": "0dbcca6954cc4d16",
"probleme": []
},
"[\"design\", \"\"]": {
"abdruck": "1ae7985ebcfe6c6a",
"probleme": []
},
"[\"design\", \"Eingabe mit Enter bestätigen\"]": {
"abdruck": "b961f168017fb01e",
"probleme": []
},
"[\"design\", \"Kontextmenü schließen\"]": {
"abdruck": "a3717ea52a012784",
"probleme": []
},
"[\"features\", \"\"]": {
"abdruck": "b4f6fe4cd065e9e9",
"probleme": []
},
"[\"features\", \"Anzeigemodus umschalten\"]": {
"abdruck": "8d468a73bcec5521",
"probleme": []
},
"[\"features\", \"Feature anlegen\"]": {
"abdruck": "7d4d6e36b4f03318",
"probleme": []
},
"[\"features\", \"Feature durchsuchen\"]": {
"abdruck": "3acde68ab76b942c",
"probleme": []
},
"[\"features\", \"Feature einstufen\"]": {
"abdruck": "10e74d934dafacc9",
"probleme": []
},
"[\"features\", \"Feature entfernen\"]": {
"abdruck": "509a1153b2e6382f",
"probleme": []
},
"[\"features\", \"Feature verschieben\"]": {
"abdruck": "5169bc85a796b6a9",
"probleme": []
},
"[\"features\", \"Regeln anpassen\"]": {
"abdruck": "6b4eeed76c631333",
"probleme": []
},
"[\"features\", \"Titel anpassen\"]": {
"abdruck": "de6e2788e24aa230",
"probleme": []
},
"[\"features\", \"Ziel anpassen\"]": {
"abdruck": "f26e4426663b8265",
"probleme": []
},
"[\"funktionen\", \"\"]": {
"abdruck": "adcc38efdb393cf6",
"probleme": []
},
"[\"funktionen\", \"Funktion anlegen\"]": {
"abdruck": "11c59974712619a0",
"probleme": []
},
"[\"funktionen\", \"Funktion entfernen\"]": {
"abdruck": "e55d43e078f1020e",
"probleme": []
},
"[\"funktionen\", \"Funktion verschieben\"]": {
"abdruck": "1bdf3be9b53fdb99",
"probleme": []
},
"[\"funktionen\", \"Regeln anpassen\"]": {
"abdruck": "e354caf2701ee79c",
"probleme": []
},
"[\"funktionen\", \"Stand umschalten\"]": {
"abdruck": "f39b25d34cc6e4c4",
"probleme": []
},
"[\"funktionen\", \"Testschritte anpassen\"]": {
"abdruck": "8fb282300c19c3c2",
"probleme": []
},
"[\"funktionen\", \"Titel anpassen\"]": {
"abdruck": "63e9a78a02d890fe",
"probleme": []
},
"[\"funktionen\", \"Ziel anpassen\"]": {
"abdruck": "a72ce3656c787475",
"probleme": []
},
"[\"karten-besprechen\", \"\"]": {
"abdruck": "8d330c5a71e25e0c",
"probleme": []
},
"[\"karten-besprechen\", \"Gespräch schließen\"]": {
"abdruck": "d1c043cd26a05d69",
"probleme": []
},
"[\"karten-besprechen\", \"Gespräch verwerfen\"]": {
"abdruck": "e6d601409eb48f7a",
"probleme": []
},
"[\"karten-besprechen\", \"Gespräch öffnen\"]": {
"abdruck": "b9a3f8340aa9e266",
"probleme": []
},
"[\"karten-besprechen\", \"Nachricht senden\"]": {
"abdruck": "c3ec1453a9aff541",
"probleme": []
},
"[\"karten-besprechen\", \"Vorgeschlagene Karte anlegen\"]": {
"abdruck": "ca0a5b02f10bbd1e",
"probleme": []
},
"[\"karten-pruefen\", \"\"]": {
"abdruck": "43f92e591142fa95",
"probleme": []
},
"[\"karten-pruefen\", \"Alle Vorschläge annehmen\"]": {
"abdruck": "5afe1e8ec40d8b82",
"probleme": []
},
"[\"karten-pruefen\", \"Alle Vorschläge verwerfen\"]": {
"abdruck": "c44bbe11908637e9",
"probleme": []
},
"[\"karten-pruefen\", \"Code in Features prüfen\"]": {
"abdruck": "ed5da2461b99ddf3",
"probleme": []
},
"[\"karten-pruefen\", \"Features im Code prüfen\"]": {
"abdruck": "c31fcfa6dbc75232",
"probleme": []
},
"[\"karten-pruefen\", \"Funktion abnehmen\"]": {
"abdruck": "dd3cf177204bcf25",
"probleme": []
},
"[\"karten-pruefen\", \"Problemstelle anspringen\"]": {
"abdruck": "0656bbf0d6554c85",
"probleme": []
},
"[\"karten-pruefen\", \"Prüfung beenden\"]": {
"abdruck": "af40481c06d2fd97",
"probleme": []
},
"[\"karten-pruefen\", \"Stil prüfen\"]": {
"abdruck": "8326e792e8383b53",
"probleme": []
},
"[\"karten-pruefen\", \"Vorschlag annehmen\"]": {
"abdruck": "6f8d17b80787b7aa",
"probleme": []
},
"[\"karten-pruefen\", \"Vorschlag verwerfen\"]": {
"abdruck": "cf5bda968428df9f",
"probleme": []
},
"[\"projekte\", \"\"]": {
"abdruck": "a59f6fdfa58188fa",
"probleme": []
},
"[\"projekte\", \"Projekt anlegen\"]": {
"abdruck": "2c3ab4452996ffaf",
"probleme": []
},
"[\"projekte\", \"Projekt aufrufen\"]": {
"abdruck": "2ca7a3ea9e79fc6e",
"probleme": []
},
"[\"projekte\", \"Projekt entfernen\"]": {
"abdruck": "a0c52ceb9605a805",
"probleme": []
},
"[\"projekte\", \"Projekt umbenennen\"]": {
"abdruck": "d41292ff010e7fd3",
"probleme": []
},
"[\"projekte\", \"Quelle festlegen\"]": {
"abdruck": "990ee354f1aa70fa",
"probleme": []
},
"[\"schritt-zuruecknehmen\", \"\"]": {
"abdruck": "f4ecff18e05ff058",
"probleme": []
},
"[\"schritt-zuruecknehmen\", \"Nächsten Rückschritt anzeigen\"]": {
"abdruck": "2d944c3424b6f851",
"probleme": []
},
"[\"schritt-zuruecknehmen\", \"Schritt zurücknehmen\"]": {
"abdruck": "28825333acb1e107",
"probleme": []
},
"[\"vision-festhalten\", \"\"]": {
"abdruck": "e83e9ad5470aa4b1",
"probleme": []
},
"[\"vision-festhalten\", \"Anzeigemodus umschalten\"]": {
"abdruck": "87c494e1e1b0a7b2",
"probleme": []
},
"[\"vision-festhalten\", \"Vision anlegen\"]": {
"abdruck": "7826b26956ba51d2",
"probleme": []
},
"[\"vision-festhalten\", \"Vision anpassen\"]": {
"abdruck": "378ea30c154f7994",
"probleme": []
},
"[\"vision-festhalten\", \"Vision entfernen\"]": {
"abdruck": "340343e51583e86a",
"probleme": []
}
},
"verworfen": {
"route:delete /projekte/{name}/chat": {
"abdruck": "4ba7a240985a83b4",
"titel": "Gespräch schließen\nChatverlauf leeren"
}
}
}