mirror of
https://github.com/computerim/impactflow-discovery.git
synced 2026-08-27 06:20:36 +00:00
b8f176bb31
Discovery service (pre-existing): FastAPI + async SQLAlchemy + Alembic +
SQLite + Anthropic, with a five-prompt static UI that produces an Enneagram
+ Ikigai profile.
Auth implementation (this change set) follows
Impact_Flow_Auth_Plan_OAuth.html, adapted to the discovery_conversation /
discovery_profile schema:
- app/auth.py: Google OAuth registration, JWT issue/decode, dual-auth
dependency (Bearer JWT or X-API-Key), refresh-token hashing, domain
allow-list, synthetic api-key-admin user
- app/tracking.py: ActivityTrackingMiddleware + log_activity helper;
tags machine-to-machine calls source=mcp
- app/routers/auth.py: /api/auth/{login,callback,refresh,logout},
/api/me, /api/me/{stats,sessions,sessions/{id}}
- app/routers/activity.py: /api/activity, /api/activity/summary,
/api/admin/activity, plus prune_old_activity (90-day retention)
- app/routers/discovery.py: every route now user-scoped via the auth
dependency; /discovery/profile/{user_id} -> /discovery/profile/me
- alembic/versions/002_add_auth.py: users, refresh_tokens, activity_log
- tests/test_auth.py: 8 tests covering 401 paths, X-API-Key admin
resolution, JWT round-trip, admin gating, domain allow-list
- README.md: Authentication section, expanded env-var table, updated
data-model and API-reference tables
- .env.example: new GOOGLE_*, JWT_*, IMPACTFLOW_API_KEY, CORS_*,
ALLOWED_EMAIL_DOMAINS placeholders
- .gitignore: also exclude data/*.log
Tests: 19/19 pass (11 pre-existing + 8 new). smoke_test.py exercises the
full discovery flow under X-API-Key plus 401 paths, OAuth login redirect,
activity logging, and /api/me/stats.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.0 KiB
2.0 KiB
title, type, topics, people
| title | type | topics | people | |||||
|---|---|---|---|---|---|---|---|---|
| ImpactFlow Discovery README refreshed to match current code (2026-05-27) | observation |
|
|
Refreshed README.md for impactflow-discovery so it matches the code as of
2026-05-27. Repo state, routes, schemas, env vars, and dependency pins were
already accurate; the doc had drifted in four specific places.
What changed
- Important files table — added rows for
app/migration_bootstrap.py,tests/test_migration_bootstrap.py,tests/test_static_discovery.py, andtests/fixtures/{gut,head,heart}_type_responses.json. - App Startup section — replaced the one-line "Docker startup also runs
Alembic migrations" with the actual three-step container CMD:
python -m app.migration_bootstrap && alembic upgrade head && uvicorn ..., plus a note that the Dockerfile also runsalembic upgrade headat build time as a sanity check against a throwaway in-image DB. - Frontend Behavior — discovery.html — documented the
createUserId()helper and itscrypto.getRandomValues()fallback so the flow keeps working in insecure (non-HTTPS) contexts like LAN/Tailscale. - No content removed; every existing claim still checks out against code.
Why this matters
app/migration_bootstrap.py is the load-bearing piece for anyone whose local
data/discovery.db predates Alembic — it stamps the existing schema as
revision 001 so the next alembic upgrade head doesn't crash trying to
recreate tables that already exist. That behavior was previously invisible
to new readers of the repo.
Files touched
C:\SyncData\impactflow-discovery\README.md
Verification
- Every backtick-quoted file path in the README maps to a real file on disk.
- Every
/discovery/*route in the README matches a handler inapp/routers/discovery.py. createUserId()andgetRandomValuesboth confirmed present inapp/static/discovery.html.