jlightner
96491ac70a
fix: LLM config, task time limits, base_url, fallback model, debug Redis caching
...
- Add BASE_URL setting to config.py, replace hardcoded localhost:8096 in notifications
- Fix LLM_FALLBACK_MODEL default from fyn-llm-agent-chat to qwen2.5:7b
- Fix docker-compose LLM_FALLBACK_MODEL to use env var with correct default
- Add BASE_URL env var to API and worker in docker-compose.yml
- Add soft_time_limit/time_limit to all pipeline stage tasks (prevent stuck workers)
- Cache Redis connection in _is_debug_mode() instead of creating per-call
- Remove duplicate test files in backend/tests/notifications/
2026-04-05 06:01:54 +00:00
jlightner
899ab742a8
test: Added automatic primary→fallback LLM endpoint switching in ChatSe…
...
- "backend/chat_service.py"
- "backend/tests/test_chat.py"
- "docker-compose.yml"
GSD-Task: S08/T01
2026-04-04 14:31:28 +00:00
jlightner
8b2876906c
chore: Added GET /creator/export endpoint that returns a ZIP archive co…
...
- "backend/routers/creator_dashboard.py"
- "backend/tests/test_export.py"
GSD-Task: S07/T01
2026-04-04 14:16:56 +00:00
jlightner
cb3a6c919c
test: Added GET/PUT notification preferences endpoints, signed-token un…
...
- "backend/routers/notifications.py"
- "backend/main.py"
- "backend/tests/notifications/test_notifications.py"
- "frontend/src/api/notifications.ts"
- "frontend/src/pages/CreatorSettings.tsx"
GSD-Task: S01/T03
2026-04-04 12:27:18 +00:00
jlightner
1062e003bf
feat: Replaced 3-tier step function with 5-tier continuous interpolatio…
...
- "backend/chat_service.py"
- "backend/tests/test_chat.py"
GSD-Task: S04/T01
2026-04-04 10:04:47 +00:00
jlightner
d1efdbb3fa
feat: Added personality_weight (0.0–1.0) to chat API; modulates system…
...
- "backend/routers/chat.py"
- "backend/chat_service.py"
- "backend/tests/test_chat.py"
GSD-Task: S02/T01
2026-04-04 09:28:35 +00:00
jlightner
d13d6c3aa1
test: Added multi-turn conversation memory with Redis-backed history (1…
...
- "backend/chat_service.py"
- "backend/routers/chat.py"
- "backend/tests/test_chat.py"
GSD-Task: S04/T01
2026-04-04 07:50:30 +00:00
jlightner
ab9dd2aa1b
feat: Added write_mode support to impersonation tokens with conditional…
...
- "backend/auth.py"
- "backend/models.py"
- "backend/routers/admin.py"
- "backend/tests/test_impersonation.py"
GSD-Task: S07/T01
2026-04-04 06:24:04 +00:00
jlightner
a9589bfc93
test: Built ChatService with retrieve-prompt-stream pipeline, POST /api…
...
- "backend/chat_service.py"
- "backend/routers/chat.py"
- "backend/main.py"
- "backend/tests/test_chat.py"
GSD-Task: S03/T01
2026-04-04 05:19:44 +00:00
jlightner
195ba6e0a7
test: Added 6 integration tests covering creator-scoped cascade tiers (…
...
- "backend/tests/test_search.py"
GSD-Task: S02/T02
2026-04-04 05:07:24 +00:00
jlightner
dcd949a25b
test: Added 7 LightRAG integration tests verifying primary search path…
...
- "backend/tests/test_search.py"
GSD-Task: S01/T02
2026-04-04 04:50:40 +00:00
jlightner
87cb667848
test: Added GET /videos/{video_id} and GET /videos/{video_id}/transcrip…
...
- "backend/routers/videos.py"
- "backend/schemas.py"
- "backend/tests/test_video_detail.py"
GSD-Task: S01/T01
2026-04-03 23:42:43 +00:00
jlightner
bfb303860b
test: Add 22 integration tests for consent endpoints covering auth, own…
...
- "backend/tests/test_consent.py"
- "backend/tests/conftest.py"
GSD-Task: S03/T03
2026-04-03 22:16:31 +00:00
jlightner
77f44b0b48
test: Implemented auth API router with register/login/me/update-profile…
...
- "backend/routers/auth.py"
- "backend/main.py"
- "backend/auth.py"
- "backend/requirements.txt"
- "backend/tests/conftest.py"
- "backend/tests/test_auth.py"
GSD-Task: S02/T02
2026-04-03 21:54:11 +00:00
jlightner
69335d8d6d
chore: remove 2,367 lines of dead code — orphaned CSS, unused imports, stale files
...
Deleted files:
- generate_stage5_variants.py (874 lines) — superseded by pipeline.quality toolkit
- PROJECT_CONTEXT.md (461 lines) — stale, .gsd/PROJECT.md is the living doc
- CHRYSOPEDIA-ASSESSMENT.md (654 lines) — M011 triage artifact, all findings actioned
CSS cleanup (364 lines):
- 20 orphaned block groups from deleted review queue/old components
- Duplicate .btn base rule, .btn--warning, @keyframes stagePulse
Python imports:
- routers/pipeline.py: uuid, literal_column, over, text
- tests/test_pipeline.py: 9 unused imports (PropertyMock, create_engine, etc.)
Build verified: tsc --noEmit clean, npm run build clean (59 modules, 0 warnings).
2026-04-03 09:43:37 +00:00
jlightner
a673e641b8
fix: Parallel search with match_context, deterministic Qdrant IDs, raised embedding timeout
...
- Search now runs semantic + keyword in parallel, merges and deduplicates
- Keyword results always included with match_context explaining WHY matched
- Semantic results filtered by minimum score threshold (0.45)
- match_context shows 'Creator: X', 'Tag: Y', 'Title match', 'Content: ...'
- Qdrant points use deterministic uuid5 IDs (no more duplicates on reindex)
- Embedding timeout raised from 300ms to 2s (Ollama needs it)
- _enrich_qdrant_results reads creator_name from payload before DB fallback
- Frontend displays match_context as highlighted bar on search result cards
2026-04-01 06:54:34 +00:00
jlightner
84e7a9906c
feat: Refactored keyword_search to multi-token AND with cross-field mat…
...
- "backend/search_service.py"
- "backend/schemas.py"
- "backend/routers/search.py"
- "backend/tests/test_search.py"
GSD-Task: S01/T01
2026-04-01 06:41:52 +00:00
jlightner
1254e173d4
test: Added GET /api/v1/search/suggestions endpoint returning popular t…
...
- "backend/schemas.py"
- "backend/routers/search.py"
- "backend/tests/test_search.py"
GSD-Task: S04/T01
2026-03-31 06:35:37 +00:00
jlightner
5d0fd05b98
feat: Added scored dynamic related-techniques query returning up to 4 r…
...
- "backend/schemas.py"
- "backend/routers/techniques.py"
- "backend/tests/test_public_api.py"
GSD-Task: S02/T01
2026-03-31 06:13:59 +00:00
jlightner
8661549ab1
test: Added GET /topics/{category_slug}/{subtopic_slug} endpoint filter…
...
- "backend/routers/topics.py"
- "backend/tests/test_public_api.py"
GSD-Task: S01/T01
2026-03-31 05:59:36 +00:00
jlightner
af250a6f5d
feat: Added technique_page_slug to search results across Qdrant payload…
...
- "backend/schemas.py"
- "backend/search_service.py"
- "backend/pipeline/stages.py"
- "backend/pipeline/qdrant_client.py"
- "backend/tests/test_search.py"
GSD-Task: S01/T01
2026-03-31 05:02:48 +00:00
jlightner
720c2f501f
feat: meaningful pipeline status lifecycle — Not Started → Queued → In Progress → Complete/Errored
...
Replace stage-level statuses (pending/transcribed/extracted/published) with
user-meaningful lifecycle states (not_started/queued/processing/error/complete).
Backend:
- ProcessingStatus enum: not_started, queued, processing, error, complete
- run_pipeline sets 'processing' before dispatching Celery chain
- stage5 sets 'complete' (was 'published')
- stage3 no longer sets intermediate status (stays 'processing')
- New mark_pipeline_error task wired as link_error on chain
- _set_error_status helper marks video on permanent failure
- Ingest sets 'queued' (was 'transcribed')
- Migration 008 renames all existing values
Frontend:
- StatusFilter shows fixed-order lifecycle tabs: Not Started | Queued | In Progress | Errored | Complete
- Per-video badges show friendly labels instead of raw enum values
- Badge colors mapped to new statuses
2026-03-31 02:43:49 +00:00
jlightner
52e7e3bbc2
feat: remove review workflow — unused gate that blocked nothing
...
773 key moments sat at 'pending' with 0 approved/edited/rejected.
review_status was never checked by any public-facing query — all content
was always visible regardless of review state.
Removed:
- backend/routers/review.py (10 endpoints)
- backend/tests/test_review.py
- frontend ReviewQueue, MomentDetail pages
- frontend client.ts (review-only API client)
- frontend ModeToggle, StatusBadge components
- Review link from AdminDropdown, Moments link from pipeline rows
- ReviewStatus, PageReviewStatus enums from models
- review_mode config flag
- review_status columns (migration 007)
- ~80 lines of mode-toggle CSS
Pipeline now always sets processing_status to 'published'.
Migration 007 drops columns, enums, and migrates 'reviewed' → 'published'.
2026-03-31 02:34:12 +00:00
jlightner
4b0914b12b
fix: restore complete project tree from ub01 canonical state
...
Auto-mode commit 7aa33cd accidentally deleted 78 files (14,814 lines) during M005
execution. Subsequent commits rebuilt some frontend files but backend/, alembic/,
tests/, whisper/, docker configs, and prompts were never restored in this repo.
This commit restores the full project tree by syncing from ub01's working directory,
which has all M001-M007 features running in production containers.
Restored: backend/ (config, models, routers, database, redis, search_service, worker),
alembic/ (6 migrations), docker/ (Dockerfiles, nginx, compose), prompts/ (4 stages),
tests/, whisper/, README.md, .env.example, chrysopedia-spec.md
2026-03-31 02:10:41 +00:00
jlightner
7aa33cd17f
fix: Fixed syntax errors in pipeline event instrumentation — _emit_even…
...
- "backend/pipeline/stages.py"
GSD-Task: S01/T01
2026-03-30 08:27:53 +00:00
jlightner
44fbbf030f
test: Added version list/detail API endpoints, Pydantic schemas, versio…
...
- "backend/schemas.py"
- "backend/routers/techniques.py"
- "backend/tests/test_public_api.py"
GSD-Task: S04/T02
2026-03-30 07:27:40 +00:00
jlightner
4aa4b08a7f
feat: Per-stage LLM model routing with thinking modality and think-tag stripping
...
- Added 8 per-stage config fields: llm_stage{2-5}_model and llm_stage{2-5}_modality
- LLMClient.complete() accepts modality ('chat'/'thinking') and model_override
- Thinking modality: appends JSON instructions to system prompt, strips <think> tags
- strip_think_tags() handles multiline, multiple blocks, and edge cases
- Pipeline stages 2-5 read per-stage config and pass to LLM client
- Updated .env.example with per-stage model/modality documentation
- All 59 tests pass including new think-tag stripping test
2026-03-30 02:12:14 +00:00
jlightner
5b8be50994
test: Added 18 integration tests for search and public API endpoints (t…
...
- "backend/tests/test_search.py"
- "backend/tests/test_public_api.py"
GSD-Task: S05/T02
2026-03-30 00:01:32 +00:00
jlightner
c2edba952c
test: Built 9 review queue API endpoints (queue, stats, approve, reject…
...
- "backend/routers/review.py"
- "backend/schemas.py"
- "backend/redis_client.py"
- "backend/main.py"
- "backend/tests/test_review.py"
GSD-Task: S04/T01
2026-03-29 23:13:43 +00:00
jlightner
2cb10b5db8
test: Added 10 integration tests covering pipeline stages 2-6, trigger…
...
- "backend/tests/test_pipeline.py"
- "backend/tests/fixtures/mock_llm_responses.py"
- "backend/tests/conftest.py"
GSD-Task: S03/T05
2026-03-29 22:51:26 +00:00
jlightner
bef8d95e64
test: Added 6 integration tests proving ingestion, creator auto-detecti…
...
- "backend/tests/conftest.py"
- "backend/tests/test_ingest.py"
- "backend/tests/fixtures/sample_transcript.json"
- "backend/pytest.ini"
- "backend/requirements.txt"
- "backend/models.py"
GSD-Task: S02/T02
2026-03-29 22:16:15 +00:00