Initial commit: CI Agent competitive-intelligence monitoring app

FastAPI + Celery + Next.js + Postgres/Redis app with company monitoring,
source collection, LLM-based change analysis, enrichment, and account
security (Turnstile, escalating lockout, email verification).
This commit is contained in:
2026-08-05 10:48:20 -04:00
commit 1a4c80958f
365 changed files with 43541 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
from __future__ import annotations
import uuid
def _register_and_login(client) -> dict[str, str]:
email = f"user-{uuid.uuid4().hex[:12]}@example.com"
client.post(
"/api/v1/auth/register",
json={"email": email, "password": "correct-horse-1", "display_name": "Test User"},
)
tokens = client.post(
"/api/v1/auth/login", json={"email": email, "password": "correct-horse-1"}
).json()
return {"Authorization": f"Bearer {tokens['access_token']}"}
def test_dashboard_analytics_returns_zero_filled_buckets_for_a_new_user(client):
headers = _register_and_login(client)
resp = client.get("/api/v1/dashboard/analytics", headers=headers)
assert resp.status_code == 200
body = resp.json()
assert set(body["changes_by_type"].keys()) == {
"new_document",
"removed_document",
"content_modified",
"price_change",
"leadership_change",
"filing_new",
}
assert all(v == 0 for v in body["changes_by_type"].values())
assert body["recent_signals"] == []
def test_dashboard_analytics_requires_auth(client):
resp = client.get("/api/v1/dashboard/analytics")
assert resp.status_code in (401, 403)