feat(feedback): separater Gitea-Bot-Account fuer Feedback-Issues
Bisher wurden Issues aus dem Feedback-Widget unter Tobias' Identitaet angelegt (GITEA_TOKEN ist sein persoenlicher Token). Folge: echte Tobias-Issues und User-Feedback waren in der Authoren-Spalte nicht mehr unterscheidbar. Neuer Gitea-Account 'gwoe-feedback' (Display: Gast-Feedback) bekommt seinen eigenen Token mit Scope write:issue+write:repository, ist Collaborator mit write-Perm auf das Repo. Code nimmt diesen Token bevorzugt; wenn er leer ist, faellt er auf gitea_token zurueck (Rueckwaerts-Kompat fuer noch-nicht-konfigurierte Umgebungen). ENV: GITEA_FEEDBACK_TOKEN — in beide Compose-Files reingereicht, in beide .env-Files eingetragen.
This commit is contained in:
parent
468d7d508f
commit
238f99023c
@ -54,10 +54,18 @@ class Settings(BaseSettings):
|
||||
# Token für Unsubscribe-Links (HMAC-Secret)
|
||||
unsubscribe_secret: str = "change-me-in-prod"
|
||||
|
||||
# Gitea-API-Token für Feedback-Issues (Issue #feedback-widget)
|
||||
# Gitea-API-Token (Tobias' persoenlicher Token) — fuer alle internen
|
||||
# Operationen ausser User-Feedback (siehe gitea_feedback_token).
|
||||
# Wert in .env: GITEA_TOKEN=<token>
|
||||
# Token-Quelle: cat ~/.claude/.gitea-token
|
||||
gitea_token: str = ""
|
||||
# Separater Token fuer das Feedback-Widget. Authentisiert sich als
|
||||
# eigener Account (z.B. `gwoe-feedback`), damit User-Feedback-Issues
|
||||
# nicht unter Tobias' Identitaet erscheinen — saubere Trennung
|
||||
# zwischen Owner und externen Eingaben.
|
||||
# Wert in .env: GITEA_FEEDBACK_TOKEN=<token>
|
||||
# Fallback: wenn leer, wird gitea_token verwendet (Rueckwaerts-Kompat).
|
||||
gitea_feedback_token: str = ""
|
||||
gitea_api_url: str = "https://repo.toppyr.de/api/v1"
|
||||
gitea_repo_owner: str = "tobias"
|
||||
gitea_repo_name: str = "gwoe-antragspruefer"
|
||||
|
||||
10
app/main.py
10
app/main.py
@ -4336,8 +4336,13 @@ async def submit_feedback(
|
||||
|
||||
issue_body = "\n".join(body_parts)
|
||||
|
||||
if not settings.gitea_token:
|
||||
logger.warning("GITEA_TOKEN nicht gesetzt — Feedback-Issue kann nicht angelegt werden")
|
||||
# Bevorzugt den Feedback-Bot-Token (Account gwoe-feedback), faellt
|
||||
# auf Tobias' persoenlichen Token nur zurueck, wenn der Bot-Token
|
||||
# leer ist (Migrations-Phase). Damit erscheinen Feedback-Issues unter
|
||||
# einer eigenen Identitaet, statt unter Tobias' Namen.
|
||||
token = settings.gitea_feedback_token or settings.gitea_token
|
||||
if not token:
|
||||
logger.warning("GITEA_FEEDBACK_TOKEN/GITEA_TOKEN nicht gesetzt — Feedback-Issue kann nicht angelegt werden")
|
||||
raise HTTPException(
|
||||
status_code=503,
|
||||
detail="Feedback-Funktion ist derzeit nicht konfiguriert (kein Gitea-Token)."
|
||||
@ -4346,7 +4351,6 @@ async def submit_feedback(
|
||||
base_url = settings.gitea_api_url
|
||||
owner = settings.gitea_repo_owner
|
||||
repo = settings.gitea_repo_name
|
||||
token = settings.gitea_token
|
||||
headers = {"Authorization": f"token {token}", "Content-Type": "application/json"}
|
||||
|
||||
async with httpx.AsyncClient(timeout=15.0) as session:
|
||||
|
||||
@ -21,6 +21,7 @@ services:
|
||||
- EMBEDDING_MODEL_READ=${EMBEDDING_MODEL_READ:-text-embedding-v3}
|
||||
- BASE_URL=${BASE_URL:-https://gwoe-dev.toppyr.de}
|
||||
- GITEA_TOKEN=${GITEA_TOKEN}
|
||||
- GITEA_FEEDBACK_TOKEN=${GITEA_FEEDBACK_TOKEN}
|
||||
- GITEA_API_URL=${GITEA_API_URL:-https://repo.toppyr.de/api/v1}
|
||||
- GITEA_REPO_OWNER=${GITEA_REPO_OWNER:-tobias}
|
||||
- GITEA_REPO_NAME=${GITEA_REPO_NAME:-gwoe-antragspruefer}
|
||||
|
||||
@ -24,7 +24,11 @@ services:
|
||||
- UNSUBSCRIBE_SECRET=${UNSUBSCRIBE_SECRET}
|
||||
- BASE_URL=${BASE_URL:-https://gwoe.toppyr.de}
|
||||
# Gitea-Anbindung fuer Feedback-Widget (#149-Folge)
|
||||
# GITEA_TOKEN: Tobias' Token fuer interne Ops (Issue-Aggregat etc.)
|
||||
# GITEA_FEEDBACK_TOKEN: separater Token vom Bot-Account 'gwoe-feedback',
|
||||
# damit User-Feedback-Issues nicht als Tobias erscheinen.
|
||||
- GITEA_TOKEN=${GITEA_TOKEN}
|
||||
- GITEA_FEEDBACK_TOKEN=${GITEA_FEEDBACK_TOKEN}
|
||||
- GITEA_API_URL=${GITEA_API_URL:-https://repo.toppyr.de/api/v1}
|
||||
- GITEA_REPO_OWNER=${GITEA_REPO_OWNER:-tobias}
|
||||
- GITEA_REPO_NAME=${GITEA_REPO_NAME:-gwoe-antragspruefer}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user