From fe477e6af446d1e5c073771a00a8e4556712a24d Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Wed, 15 Oct 2025 14:12:06 -0500 Subject: [PATCH] docs(output): sync pipeline overview --- output/README.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/output/README.md b/output/README.md index e4fb0ef..c6c949f 100644 --- a/output/README.md +++ b/output/README.md @@ -1,41 +1,45 @@ # Output Pipeline Overview -This directory contains the post-processing side of ResumeCustomizer. It is responsible for taking a job-targeted Markdown resume produced elsewhere in the system and turning it into printable DOCX/PDF artifacts. +This directory houses the post-processing side of ResumeCustomizer. It accepts one human-approved Markdown resume at a time and renders shareable DOCX/PDF artifacts while preserving historical output. ## Directory Layout -- `ForRelease/inbox`: drop a single `*.md` file here to trigger conversion. -- `ForRelease/outbox/YYYY/MM/DD/HHMM`: conversion results (paired `.docx` and `.pdf`) organized by timestamp so repeated runs never overwrite each other. -- `ForRelease/processed/YYYY/MM/DD/HHMM`: archives of Markdown files that converted successfully. -- `ForRelease/failed`: Markdown files that encountered an error during conversion (contains `.gitkeep` to preserve the directory). -- `Docker/`: container definition, watcher script, and helper wrapper that run the conversion daemon. +- `ForRelease/inbox` – drop a single vetted `*.md` file here to trigger conversion; keep empty otherwise. +- `ForRelease/outbox/YYYY/MM/DD/HHMM` – timestamped export folders containing the generated `.docx`/`.pdf` pair for each run. +- `ForRelease/processed/YYYY/MM/DD/HHMM` – timestamped archives of Markdown files that converted successfully. +- `ForRelease/failed` – holding area for Markdown files that Pandoc could not render. +- `Docker/` – Dockerfile, compose stack, watcher script, and wrapper used to run the conversion container. + +All `ForRelease` subdirectories include `.gitkeep` and `.gitignore` so artifacts stay local and never reach version control. -All `ForRelease` subdirectories include `.gitkeep`/`.gitignore` files so generated resumes stay local and out of version control. ## Running the Output Processor -Use the wrapper so the container writes files with your UID/GID: +Launch the stack with the wrapper so files inherit your UID/GID: ```bash cd output/Docker ./run-output-processor.sh up -d ``` -The script detects either the Docker Compose plugin or the legacy `docker-compose` binary and forwards any additional arguments you supply (`down`, `logs`, etc.). The stack registers under the project name `RCEO-AI-ResumeCustomizer-Output`, and the primary container is `RCEO-AI-ResumeCustomizer-OutputProcessor`. +The wrapper auto-detects the Docker Compose plugin or legacy `docker-compose` and forwards any extra arguments (`down`, `logs`, etc.). The stack registers as `RCEO-AI-ResumeCustomizer-Output` with the container `RCEO-AI-ResumeCustomizer-OutputProcessor`. -## What the Watcher Does -1. Polls `ForRelease/inbox` every few seconds for a single Markdown resume. -2. Runs Pandoc using the shared DOCX and LaTeX templates to generate DOCX/PDF. -3. Drops the exports into the timestamped folder under `ForRelease/outbox`. -4. Moves the original Markdown into the matching timestamp folder under `ForRelease/processed`. -5. If the Pandoc conversion fails, moves the Markdown into `ForRelease/failed` so it can be reviewed without blocking subsequent runs. +## Conversion Flow +1. The watcher polls `ForRelease/inbox` every few seconds for exactly one Markdown resume. +2. Pandoc renders DOCX and PDF using the shared templates. +3. Artifacts land in a timestamped folder under `ForRelease/outbox`. +4. The source Markdown moves into the matching timestamp folder under `ForRelease/processed`. +5. On Pandoc failure, the Markdown shifts into `ForRelease/failed` for human review before retrying. + +Outbox and processed directories are append-only historical records managed solely by the human operator—automation must never delete or reorganize them. ## Prerequisites -- Docker Engine with either the Compose plugin (`docker compose`) or standalone `docker-compose`. -- Pandoc templates available under `input/templates` relative to the repo root (mounted read-only into the container). +- Docker Engine with the Compose plugin (`docker compose`) or the standalone `docker-compose` binary. +- Template assets mounted read-only from `input/templates`. -Stop the service with: +Stop or inspect the stack with: ```bash cd output/Docker ./run-output-processor.sh down +./run-output-processor.sh logs -f ``` -Log output is available through `./run-output-processor.sh logs -f`. +Monitor logs during conversions to confirm the Markdown leaves inbox, exports appear in outbox, and the source lands in processed.