Großes Cleanup: Bugs fixen, Features fertigstellen, toten Code entfernen
Bugs behoben: - handleEdit() async keyword hinzugefügt (E-Mail-Checkboxen funktionieren jetzt) - parseUTC() Funktion definiert (Fortschritts-Timer nutzt Server-Startzeit) - Status cancelling wird im Frontend korrekt angezeigt Features fertiggestellt: - Sidebar: Lagen nach Typ getrennt (adhoc/research) mit Zählern - Quellen-Bearbeiten: Edit-Button pro Quelle, Formular vorausfüllen - Lizenz-Info: Org-Name und Lizenzstatus im Header angezeigt Toter Code entfernt: - 5 verwaiste Dateien gelöscht (alte rss_parser, style.css, components.js, layout.js, setup_users) - 6 ungenutzte Pydantic Models entfernt - Ungenutzte Funktionen/Imports in auth.py, routers, agents, config - Tote API-Methoden, Legacy-UI-Methoden, verwaiste WS-Handler - Abgeschlossene DB-Migrationen aufgeräumt Sonstiges: - requirements.txt: passlib[bcrypt] durch bcrypt ersetzt - Umlaute korrigiert (index.html) - CSS: incident-type-label → incident-type-badge, .login-success hinzugefügt - Schließen statt Schliessen im Feedback-Modal
Dieser Commit ist enthalten in:
@@ -4,11 +4,6 @@ from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
# Auth (Legacy)
|
||||
class LoginRequest(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
|
||||
|
||||
# Auth (Magic Link)
|
||||
class MagicLinkRequest(BaseModel):
|
||||
@@ -34,10 +29,6 @@ class TokenResponse(BaseModel):
|
||||
username: str
|
||||
|
||||
|
||||
class UserResponse(BaseModel):
|
||||
id: int
|
||||
username: str
|
||||
|
||||
|
||||
class UserMeResponse(BaseModel):
|
||||
id: int
|
||||
@@ -97,32 +88,6 @@ class IncidentResponse(BaseModel):
|
||||
source_count: int = 0
|
||||
|
||||
|
||||
# Articles
|
||||
class ArticleResponse(BaseModel):
|
||||
id: int
|
||||
incident_id: int
|
||||
headline: str
|
||||
headline_de: Optional[str]
|
||||
source: str
|
||||
source_url: Optional[str]
|
||||
content_original: Optional[str]
|
||||
content_de: Optional[str]
|
||||
language: str
|
||||
published_at: Optional[str]
|
||||
collected_at: str
|
||||
verification_status: str
|
||||
|
||||
|
||||
# Fact Checks
|
||||
class FactCheckResponse(BaseModel):
|
||||
id: int
|
||||
incident_id: int
|
||||
claim: str
|
||||
status: str
|
||||
sources_count: int
|
||||
evidence: Optional[str]
|
||||
is_notification: bool
|
||||
checked_at: str
|
||||
|
||||
|
||||
# Sources (Quellenverwaltung)
|
||||
@@ -191,18 +156,6 @@ class DomainActionRequest(BaseModel):
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
# Refresh-Log
|
||||
class RefreshLogResponse(BaseModel):
|
||||
id: int
|
||||
started_at: str
|
||||
completed_at: Optional[str] = None
|
||||
articles_found: int = 0
|
||||
status: str
|
||||
trigger_type: str = "manual"
|
||||
retry_count: int = 0
|
||||
error_message: Optional[str] = None
|
||||
duration_seconds: Optional[float] = None
|
||||
|
||||
|
||||
# Notifications
|
||||
class NotificationResponse(BaseModel):
|
||||
@@ -239,7 +192,3 @@ class FeedbackRequest(BaseModel):
|
||||
message: str = Field(min_length=10, max_length=5000)
|
||||
|
||||
|
||||
class WSMessage(BaseModel):
|
||||
type: str # new_article, status_update, notification, refresh_complete
|
||||
incident_id: int
|
||||
data: dict
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren