feat: Phase 6 export — writes Grav entry folders from Immich originals

Implements GET /export summary view and POST /export/run which downloads
originals from Immich, writes entry.md with YAML frontmatter, and sets
group status to exported. Includes POST /export/overwrite for single-group
re-export. All 42 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 17:06:39 +02:00
parent fade38e7a0
commit 5160368407
4 changed files with 388 additions and 1 deletions
+2 -1
View File
@@ -8,7 +8,7 @@ def create_app(state_dir=None, pages_dir=None):
app.config["IMMICH_URL"] = os.environ.get("IMMICH_URL", "")
app.config["IMMICH_API_KEY"] = os.environ.get("IMMICH_API_KEY", "")
from .routes import albums, triage, proxy, notes, nav, curate, group, write
from .routes import albums, triage, proxy, notes, nav, curate, group, write, export
app.register_blueprint(albums.bp)
app.register_blueprint(triage.bp)
app.register_blueprint(proxy.bp)
@@ -17,6 +17,7 @@ def create_app(state_dir=None, pages_dir=None):
app.register_blueprint(curate.bp)
app.register_blueprint(group.bp)
app.register_blueprint(write.bp)
app.register_blueprint(export.bp)
@app.get("/health")
def health():