feat(Moderation): implement moderation reports feature
All checks were successful
Deploy to production / deploy (push) Successful in 2m1s
All checks were successful
Deploy to production / deploy (push) Successful in 2m1s
- Added moderationRouter to handle moderation-related API routes. - Introduced new methods in AdminController for fetching all regions, region types, and creating regions. - Enhanced adminRouter with routes for moderation reports and status updates. - Updated navigationController to include moderation reports in the admin menu. - Implemented frontend components for reporting messages in the forum and managing moderation reports. - Added internationalization support for moderation-related texts in multiple languages.
This commit is contained in:
30
docs/ADSENSE_PREAPPLY_REVIEW_2026-04-27.md
Normal file
30
docs/ADSENSE_PREAPPLY_REVIEW_2026-04-27.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# AdSense Pre-Apply Review (ohne Live-Verifizierung)
|
||||
|
||||
Datum: 2026-04-27
|
||||
|
||||
## Gepruefte Seiten (Content/SEO/Policy)
|
||||
|
||||
1. `/`
|
||||
2. `/blogs`
|
||||
3. `/blogs/:slug` (Route vorhanden, contentbasiert)
|
||||
4. `/vokabeltrainer`
|
||||
5. `/bisaya-lernen`
|
||||
6. `/deutsch-fuer-bisaya`
|
||||
7. `/falukant`
|
||||
8. `/minigames`
|
||||
9. Footer-Dialogpfade: Impressum
|
||||
10. Footer-Dialogpfade: Datenschutz
|
||||
11. Footer-Dialogpfade: Kontakt
|
||||
12. Header-Ad-Placement in App-Layout
|
||||
|
||||
## Ergebnis
|
||||
|
||||
- Header-Ad ist technisch korrekt eingebunden und route-gesteuert.
|
||||
- `ads.txt` ist im Build-Input vorhanden.
|
||||
- Pflichtlinks (Impressum/Datenschutz/Kontakt) sind global im Footer erreichbar.
|
||||
- SEO-Basis (Sitemap, Canonical, Meta-Title/Description) ist fuer Kernseiten vorhanden.
|
||||
- Moderations-/Adminpfade fuer UGC sind vorhanden und dokumentiert (`docs/ADSENSE_UGC_MODERATION.md`).
|
||||
|
||||
## Ausdruecklich ausgenommen
|
||||
|
||||
- Live-Verifizierung auf produktiver Domain (`https://www.your-part.de/ads.txt`) wurde bewusst nicht ausgefuehrt.
|
||||
89
docs/ADSENSE_READINESS.md
Normal file
89
docs/ADSENSE_READINESS.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# AdSense Readiness Checkliste
|
||||
|
||||
Diese Checkliste hilft, YourPart vor und nach der AdSense-Anmeldung policy-sicher zu betreiben.
|
||||
|
||||
## 1) Pflichtseiten und Vertrauen
|
||||
|
||||
- [x] `Impressum` ist von jeder Seite aus erreichbar (Footer oder Header).
|
||||
- [x] `Datenschutzerklaerung` ist von jeder Seite aus erreichbar.
|
||||
- [x] `Kontakt` ist klar sichtbar (Formular oder E-Mail).
|
||||
- [x] Seiten sind nicht im "Baustellen"-Status (keine "coming soon"-Texte auf Hauptseiten).
|
||||
- [x] Navigation ist konsistent und fuehrt auf reale Inhalte.
|
||||
|
||||
## 2) Content-Mindestqualitaet
|
||||
|
||||
- [x] Es gibt ausreichend indexierbare Inhalte mit Substanz (Blog, Forum, Lerninhalte, Falukant-Texte).
|
||||
- [x] Landing-Pages enthalten mehr als nur kurze Marketingtexte.
|
||||
- [x] Keine duennen Seiten mit nur 1-2 Zeilen Text.
|
||||
- [x] Keine automatisch erzeugten, redundanten oder fast identischen Seiten.
|
||||
- [x] Sprachversionen sind gepflegt (keine groesseren Mischungen aus Fallback-Texten).
|
||||
|
||||
## 3) Ad-Platzierung und UX
|
||||
|
||||
- [x] Anzeigen stoeren nicht zentrale Navigation/Funktionen.
|
||||
- [x] Im Header bleibt genug Abstand zu interaktiven Elementen (z. B. Sprachwahl).
|
||||
- [x] Auf kleinen Screens bleibt die Anzeige responsive ohne Layout-Bruch.
|
||||
- [x] Keine irrefuehrenden Labels wie "Download", "Start", "Weiter" direkt neben Ads.
|
||||
- [x] Keine Anzeige auf Seiten mit sehr wenig Content.
|
||||
|
||||
## 4) Technische Anforderungen
|
||||
|
||||
- [x] AdSense Script einmalig im `head` eingebunden (`frontend/public/index.html`).
|
||||
- [ ] `ads.txt` unter `https://www.your-part.de/ads.txt` erreichbar.
|
||||
- [x] AdSlot-ID ist gesetzt (`VITE_ADSENSE_HEADER_SLOT`).
|
||||
- [x] In Produktion wird nur mit echter Slot-ID ausgeliefert.
|
||||
- [x] Keine JS-Fehler durch wiederholtes `adsbygoogle.push`.
|
||||
|
||||
## 5) Policy-Risiko und Moderation
|
||||
|
||||
- [x] UGC-Bereiche (Forum, Kommentare, Chat) haben Moderation/Reporting.
|
||||
- [x] Erotik-/18+-Bereiche sind klar getrennt und nicht AdSense-besetzt.
|
||||
- [x] Keine Anzeigen auf Seiten mit potentiell problematischem Inhalt.
|
||||
- [x] Keine gekauften Klicks/Traffic-Anreize auf Anzeigen.
|
||||
- [x] Kein "Klick auf Werbung, um zu unterstuetzen"-Wording.
|
||||
|
||||
## 6) SEO und Crawling-Basis
|
||||
|
||||
- [x] `robots.txt` blockiert nicht versehentlich wichtige Content-Seiten.
|
||||
- [x] `sitemap.xml` ist aktuell und liefert relevante URLs.
|
||||
- [x] Canonical-Tags sind auf Kernseiten korrekt gesetzt.
|
||||
- [x] Titles/Descriptions sind sinnvoll und nicht generisch leer.
|
||||
|
||||
## 7) Vor Antrag (finaler Durchlauf)
|
||||
|
||||
- [x] Mindestens 10-20 qualitativ starke, oeffentliche Inhaltsseiten pruefen.
|
||||
- [x] Manuell Mobile + Desktop testen (Header-Ad sichtbar, aber nicht stoerend).
|
||||
- [x] Kein sichtbarer Platzhaltertext in Kernbereichen.
|
||||
- [x] Impressum/Datenschutz/Kontakt von Startseite in max. 1 Klick erreichbar.
|
||||
- [ ] `ads.txt` im Browser geoeffnet und korrekt.
|
||||
|
||||
## 8) Nach Freischaltung (Betrieb)
|
||||
|
||||
- [ ] Einnahmen + RPM beobachten, aber UX nicht verschlechtern.
|
||||
- [ ] Ads nur auf Seiten mit ausreichend Inhalt ausrollen.
|
||||
- [ ] Regelmaessig Policy Center in AdSense pruefen.
|
||||
- [ ] Bei neuen Features vor Livegang kurz gegen diese Liste testen.
|
||||
|
||||
---
|
||||
|
||||
## Projekt-Hinweise fuer aktuellen Stand
|
||||
|
||||
- Header-Slot ist bereits eingebaut in `frontend/src/components/AppHeader.vue`.
|
||||
- Script ist in `frontend/public/index.html` eingebunden.
|
||||
- `ads.txt` liegt unter `frontend/public/ads.txt`.
|
||||
- Der Header-Slot wird aktuell nur auf inhaltlich staerkeren Routen angezeigt und benoetigt `VITE_ADSENSE_HEADER_SLOT`.
|
||||
|
||||
## Ergebnis dieser Pruefung (heute)
|
||||
|
||||
### Erfuellt
|
||||
|
||||
- Footer verlinkt `Impressum`, `Datenschutz`, `Kontakt` global (`frontend/src/components/AppFooter.vue`).
|
||||
- AdSense Script ist im Head eingebunden (`frontend/public/index.html`).
|
||||
- `ads.txt` ist im Repo vorhanden (`frontend/public/ads.txt`).
|
||||
- Header-Ad ist zwischen Logo und Sprachwahl und route-gebunden eingebaut (`frontend/src/components/AppHeader.vue`).
|
||||
- Slot-Init ist gegen mehrfaches Push abgesichert (`adInitialized`-Guard).
|
||||
|
||||
### Offen vor Antrag
|
||||
|
||||
- Deployment-Check: `https://www.your-part.de/ads.txt` oeffnen und Inhalt verifizieren.
|
||||
- Deployment-Check der produktiven ENV-Variablen nach Rollout.
|
||||
51
docs/ADSENSE_UGC_MODERATION.md
Normal file
51
docs/ADSENSE_UGC_MODERATION.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# UGC Moderation & AdSense Safety
|
||||
|
||||
Stand: 2026-04-27
|
||||
|
||||
## Ziel
|
||||
|
||||
Sicherstellen, dass nutzergenerierte Inhalte (UGC) fuer AdSense policy-konform betrieben werden:
|
||||
|
||||
- keine Monetarisierung direkt auf problematischen Inhalten
|
||||
- nachvollziehbare Moderations- und Eskalationspfade
|
||||
- klare Trennung zwischen oeffentlichen Landing-Inhalten und geschuetzten Community-Bereichen
|
||||
|
||||
## Geltungsbereich
|
||||
|
||||
- Forum / Themen
|
||||
- Chat-Raeume
|
||||
- Kontaktanfragen / Support-Kommunikation
|
||||
- Erotik-Bereiche (mit separater Moderation)
|
||||
|
||||
## Bereits vorhandene Moderations-Werkzeuge im Projekt
|
||||
|
||||
- Admin-Forumverwaltung (`frontend/src/dialogues/admin/ForumAdminView.vue`)
|
||||
- Loesch- und Verwaltungsaktionen fuer Foreninhalte.
|
||||
- Admin-Chatraumverwaltung (`frontend/src/views/admin/ChatRoomsView.vue`, `frontend/src/views/admin/RoomsView.vue`)
|
||||
- Loeschen und Verwalten von Raeumen.
|
||||
- Kontaktanfragen-Backoffice (`frontend/src/views/admin/ContactsView.vue`)
|
||||
- Moderierbare/anwaltbare Kontaktprozesse.
|
||||
- Erotik-Moderationsbereich in Navigation (`navigation.*.admin.eroticmoderation`).
|
||||
|
||||
## AdSense-Betriebsregeln (verbindlich)
|
||||
|
||||
1. Anzeigen nur auf inhaltlich starken, stabilen Seiten schalten.
|
||||
2. Keine Anzeigen in UGC-Bereichen mit erhoehtem Risiko ohne aktive Moderation.
|
||||
3. Keine Anzeigen in/nahe 18+-Bereichen.
|
||||
4. Keine CTA-Texte, die Klicks auf Anzeigen nahelegen.
|
||||
5. Bei Policy-Hinweisen aus AdSense sofort Placement temporär reduzieren.
|
||||
|
||||
## Operativer Ablauf
|
||||
|
||||
1. Neue Community-Funktion vor Livegang auf UGC-Risiko pruefen.
|
||||
2. Entscheiden, ob Ads dort zugelassen werden oder nicht.
|
||||
3. Moderationsweg dokumentieren (zustandiges Admin-Panel).
|
||||
4. Nach Go-Live kurzfristig Inhalte/Reports beobachten.
|
||||
|
||||
## Nachweis fuer AdSense-Readiness
|
||||
|
||||
Diese Datei dient als interne, revisionsfaehige Dokumentation, dass:
|
||||
|
||||
- Moderationsoberflaechen vorhanden sind,
|
||||
- Risikozonen erkannt sind,
|
||||
- und Anzeigenplatzierung bewusst eingeschraenkt wird.
|
||||
Reference in New Issue
Block a user