Update README and moderation commands for localization and migration support

- Revised README to include database migration steps and a new section for database management.
- Enhanced moderation command responses to utilize localized messages for unknown commands.
- Refactored moderation commands to use centralized command data definitions, improving maintainability and consistency.
- Added localization support for command descriptions and options in both German and English.
- Versioned Prisma migrations for better tracking of database changes.
This commit is contained in:
smueller
2026-07-22 12:06:16 +02:00
parent 405b70bdfc
commit a44f4d6641
12 changed files with 784 additions and 164 deletions

101
docs/DATABASE.md Normal file
View File

@@ -0,0 +1,101 @@
# Nexumi Datenbank
## Migrationen
Prisma-Schema: `apps/bot/prisma/schema.prisma`
Initiale Migration:
- `apps/bot/prisma/migrations/20260722123000_init`
### Lokale Entwicklung
1. Stack starten:
```bash
docker compose up -d postgres redis
```
2. `.env` setzen (Beispiel lokal):
```env
DATABASE_URL=postgresql://nexumi:nexumi@localhost:5432/nexumi
```
Hinweis: Im Compose-Stack ist Postgres absichtlich nicht nach außen veröffentlicht. Für lokale Migrationen außerhalb von Docker entweder temporär einen Port mappen oder Migrationen im Bot-Container ausführen.
3. Migration anwenden:
```bash
pnpm prisma:migrate
```
Alternativ im Bot-Container:
```bash
docker compose run --rm bot pnpm prisma:migrate
```
4. Client generieren:
```bash
pnpm prisma:generate
```
## Backup (automatisch)
- Job: BullMQ `dailyPgDump`
- Cron: `BACKUP_CRON` (Default `0 3 * * *`)
- Zielverzeichnis: `BACKUP_DIR` (Default `/backups`)
- Retention: `BACKUP_RETENTION_DAYS` (Default `14`)
Backups liegen im Docker-Volume `backups`, am Bot-Container unter `/backups`.
### Manuelles Backup
```bash
docker compose exec bot sh -c "pg_dump --dbname \"$DATABASE_URL\" --file /backups/manual-$(date -u +%Y%m%dT%H%M%SZ).sql"
```
## Restore
1. Bot/WebUI stoppen:
```bash
docker compose stop bot webui
```
2. Backup-Datei in den Postgres-Container kopieren (Beispiel):
```bash
docker compose cp ./backups/nexumi-2026-07-22.sql postgres:/tmp/restore.sql
```
3. Restore ausführen:
```bash
docker compose exec -T postgres psql -U nexumi -d nexumi -f /tmp/restore.sql
```
4. Services wieder starten:
```bash
docker compose up -d
```
## Audit-Metadaten (Cases)
Standardisierte Case-Metadaten werden zentral über `buildCaseMetadata()` in `@nexumi/shared` erzeugt.
Pflichtfelder:
- `source` (`slash_command`, `button_confirmation`, `escalation`, `job`)
- `recordedAt` (ISO-Zeitstempel)
Optionale Felder je nach Aktion:
- `channelId`
- `confirmed`
- `escalation`, `warningCount`, `durationMs`
- `purge.requestedAmount`, `purge.deletedCount`, `purge.filters`
- `deletedCaseId`, `deletedCaseNumber`