feat(library-desk): add wiki change detection via PostgreSQL LISTEN/NOTIFY
- Add WikiChangeListener service for PostgreSQL notifications - Add webhooks router for HTTP webhook fallback - Add asyncpg dependency for PostgreSQL async support - Include setup scripts and documentation for triggers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -35,6 +35,19 @@ class Settings(BaseSettings):
|
||||
wikijs_username: str = Field(..., description="Wiki.js username")
|
||||
wikijs_password: str = Field(..., description="Wiki.js password")
|
||||
|
||||
# Wiki.js Database Configuration (for change listener)
|
||||
wikijs_db_host: str = Field(default="postgres-shared", description="Wiki.js PostgreSQL host")
|
||||
wikijs_db_port: int = Field(default=5432, description="Wiki.js PostgreSQL port")
|
||||
wikijs_db_name: str = Field(default="library", description="Wiki.js database name")
|
||||
wikijs_db_user: str = Field(default="library_desk_listener", description="Wiki.js database user (read-only)")
|
||||
wikijs_db_password: str = Field(..., description="Wiki.js database password")
|
||||
wikijs_change_listener_debounce_seconds: int = Field(
|
||||
default=5,
|
||||
ge=1,
|
||||
le=60,
|
||||
description="Debounce duration to prevent processing duplicate notifications"
|
||||
)
|
||||
|
||||
# SearXNG Configuration
|
||||
searxng_url: str = Field(default="http://searxng:8080", description="SearXNG URL")
|
||||
|
||||
@@ -49,6 +62,12 @@ class Settings(BaseSettings):
|
||||
hybrid_rag_graph_limit: int = Field(default=10, ge=1, le=50, description="Graph search limit")
|
||||
hybrid_rag_web_limit: int = Field(default=5, ge=1, le=20, description="Web search limit")
|
||||
|
||||
# Entity Linking Fuzzy Matching Configuration
|
||||
entity_linking_min_confidence: float = Field(default=0.70, ge=0.0, le=1.0, description="Minimum confidence for entity-document matching")
|
||||
entity_linking_min_entity_length: int = Field(default=5, ge=1, le=50, description="Minimum entity name length for matching")
|
||||
entity_linking_min_containment_ratio: float = Field(default=0.30, ge=0.0, le=1.0, description="Minimum containment ratio for substring matching")
|
||||
entity_linking_min_token_overlap: float = Field(default=0.60, ge=0.0, le=1.0, description="Minimum token overlap ratio for matching")
|
||||
|
||||
# Redis Configuration (for job tracking - separate DB from wiki)
|
||||
redis_host: str = Field(default="redis-shared", description="Redis host")
|
||||
redis_port: int = Field(default=6379, description="Redis port")
|
||||
|
||||
Reference in New Issue
Block a user