docs(01-04): complete StorageBackend + MinIO + async storage plan — SUMMARY, STATE, ROADMAP

This commit is contained in:
curo1305
2026-05-22 09:41:43 +02:00
parent 3e4b1f1f91
commit 5d21c6f588
3 changed files with 223 additions and 12 deletions
+14 -10
View File
@@ -4,13 +4,13 @@ milestone: v1.0
milestone_name: milestone
current_phase: 1
status: executing
last_updated: "2026-05-22T08:30:00Z"
last_updated: "2026-05-22T07:40:00Z"
progress:
total_phases: 5
completed_phases: 0
total_plans: 5
completed_plans: 3
percent: 60
completed_plans: 4
percent: 80
---
# Project State
@@ -24,7 +24,7 @@ progress:
| Phase | Name | Status |
|---|---|---|
| 1 | Infrastructure Foundation | In Progress (3/5 plans) |
| 1 | Infrastructure Foundation | In Progress (4/5 plans) |
| 2 | Users & Authentication | Not Started |
| 3 | Document Migration & Multi-User Isolation | Not Started |
| 4 | Folders, Sharing, Quotas & Document UX | Not Started |
@@ -33,10 +33,10 @@ progress:
## Current Position
Phase: 1 (Infrastructure Foundation) — EXECUTING
Plan: 4 of 5
Plan: 5 of 5
**Phase:** 01-infrastructure-foundation
**Plan:** 01-03 COMPLETE → advancing to 01-04
**Progress:** ██████░░░░ 60%
**Plan:** 01-04 COMPLETE → advancing to 01-05
**Progress:** ████████░░ 80%
## Performance Metrics
@@ -45,7 +45,7 @@ Plan: 4 of 5
| Phases complete | 0 / 5 |
| Requirements mapped | 54 / 54 |
| Plans written | 5 (Phase 1) |
| Plans complete | 3 |
| Plans complete | 4 |
## Accumulated Context
@@ -70,6 +70,10 @@ Plan: 4 of 5
| pydantic-settings v2 SettingsConfigDict | SettingsConfigDict API used (not deprecated class Config form) for env var config |
| async_client fixture name | Distinct from legacy sync `client` fixture to avoid collision; both coexist until Plan 05 |
| xfail(strict=False) for Wave 0 | All pre-implementation scaffolds use strict=False so unexpected passes don't break CI |
| StorageBackend ABC + factory mirrors ai/ pattern | 5 abstract methods; get_storage_backend() factory; MinIOBackend wraps all sync Minio SDK calls in asyncio.to_thread() |
| STORE-02 key enforced in code | MinIOBackend.put_object constructs {user_id}/{document_id}/{uuid4()}{ext}; no filename parameter — only extension passes through |
| null-user D-03 sentinel | services/storage.save_upload uses user_id="null-user" in Phase 1 (no auth); Phase 2 replaces with str(current_user.id) |
| load_settings flat-file Phase 1 | users.ai_provider/ai_model columns cannot be populated until Phase 2; settings remain flat-file JSON for Phase 1 |
### Open Questions
@@ -88,6 +92,6 @@ _Updated at each phase transition._
| Field | Value |
|---|---|
| Last session | 2026-05-22 — Executed 01-03-PLAN.md (SQLAlchemy ORM + Alembic migration; alembic upgrade head verified) |
| Next action | Execute 01-04-PLAN.md (StorageBackend ABC + MinIO backend + async services/storage.py) |
| Last session | 2026-05-22 — Executed 01-04-PLAN.md (StorageBackend ABC + MinIOBackend + async services/storage.py; all 6 test_storage.py xfail tests PASSED) |
| Next action | Execute 01-05-PLAN.md (Lifespan + /health + API cutover + Celery worker + walking-skeleton e2e verify) |
| Pending decisions | See Open Questions above |