VirtForemanBackend / RELEASING.md
Dirbol's picture
chore: pre-release β€” full project lifecycle (CRUD, history, docs, tests)
1d5d841
|
Raw
History Blame Contribute Delete
3.74 kB
# Release Checklist β€” Virtual Foreman
> Pre-production state right now. The following items remain β€” all can
> be completed in less than an hour.
## βœ… Done
- Backend (FastAPI) is live on Hugging Face Space.
- Frontend (Next.js) is live on Vercel.
- All major routes wired end-to-end:
- `GET /health`, `GET /`, `GET /supabase/health`
- `POST /projects`, `GET /projects`, `GET /projects/{id}`,
`DELETE /projects/{id}`
- `POST /work/infer`, `POST /work/blueprint`
- `GET /documents/templates`, `POST /documents/render`
- `GET /inference/history`
- CORS constrained to the live Vercel deploy (`virt-foreman.vercel.app`)
plus subdomains and localhost.
- X-Request-ID middleware on every response.
- HF Space secret recipes documented in `backend/README.md`.
- Legacy OpenRouter fields retained but ignored; primary NVIDIA
integrate chain (`DeepSeek V4 Flash` + fallbacks) is active.
- Vision path uses `Llama-3.2-Vision-11B β†’ 90B β†’ Phi-4-multimodal`.
- PDF render pipeline (`pypdfium2 + Pillow`) renders first page to PNG
before VLM call, capped at 1536 px on longest edge.
- Stub fallbacks for inference exhaustion β€” UI never dead-ends.
- Pytest suite covers schemas + Supabase column mapping (7 tests).
- All commits authored `dirboll@gmail.com` (Vercel bot-check OK).
## 🟑 Manual steps remaining (~ 30 minutes)
1. **Apply the Supabase delta schema**
- Open https://supabase.com/dashboard/project/hjkubelrluueugdjsqyn/sql/new
- Paste contents of `backend/supabase/schema.sql`
- Click **Run** β†’ confirm `inference_history` appears in the table
editor.
2. **Verify secrets on the HF Space**
- https://huggingface.co/spaces/Dirbol/VirtForemanBackend/settings/secrets
- `SUPABASE_URL` βœ…
- `SUPABASE_SECRET_KEY` (or `SUPABASE_KEY`) βœ…
- `LLM_API_KEY` (= NVIDIA integrate API key) βœ…
- Optional: `HF_TOKEN` for monitoring
3. **Vercel one-time connect** (skipped in Termux)
- Vercel dashboard β†’ "Add New Project" β†’ "Import Git Repository"
- Pick `dirboll-commits/VirtForeman`
- Root directory: repo root (already Next.js-shaped)
- Env vars in Vercel project settings:
- `NEXT_PUBLIC_API_URL=https://dirbol-virtforemanbackend.hf.space`
- `NEXT_PUBLIC_APP_NAME=Virtual Foreman`
4. **Health checks**
- `curl https://dirbol-virtforemanbackend.hf.space/health` β†’ 200
- `curl https://dirbol-virtforemanbackend.hf.space/supabase/health`
β†’ `{configured:true, reachable:true, rows_in_projects_sample:1}`
- `curl https://virt-foreman.vercel.app/` β†’ 200, home page renders
5. **End-to-end smoke** (manual, in browser)
- Create project β†’ /work, /blueprint, /documents chained actions.
- Verify each inference shows up under /history.
- Verify document download opens in Word / LibreOffice.
6. **Run the regression suite**
```bash
pip install -r requirements-dev.txt
pytest tests/test_schemas.py tests/test_supabase_mapping.py -v
```
Expected output: `7 passed`.
7. **Production hardening (optional)**
- Rate-limit per IP on `/work/infer` and `/work/blueprint`.
- Auth layer (Supabase Auth widgets or OIDC for the frontend).
- Email verification before document download.
## πŸ“‹ Deployment commands cheat-sheet
```bash
# Backend β†’ HF Space
git push hf <branch>:main
# Frontend β†’ Vercel (Vercel auto-deploys on push to origin/main)
git push origin <branch>:refs/heads/main --force
```
Both must succeed for a clean release. Roll back via Vercel "Promote previous deployment" / HF revert.
## πŸ” Logs
- HF Space runtime: https://huggingface.co/spaces/Dirbol/VirtForemanBackend
β†’ "Logs" tab β†’ "Container" stream.
- Vercel: project β†’ "Logs" tab.
- Local sanity: `pytest tests/ -v`.