feat: harden deployment and public api handoff

This commit is contained in:
inman
2026-05-29 14:00:39 +08:00
parent 63e62d444c
commit 4b21d2999c
16 changed files with 961 additions and 19 deletions

View File

@@ -272,6 +272,29 @@
| Local health | `curl --noproxy '*' /api/health` | `ok: true` | `ok: true` | pass |
| Docker CLI availability | `docker --version` | Docker version if installed | No Docker CLI output in current environment | not run |
## Session: 2026-05-29 - Deployable Handoff and Integration Surface
### Implementation
- **Status:** complete
- Actions taken:
- Added `docs/DEPLOYMENT.md` for operations deployment, environment variables, health checks, runtime persistence, reverse proxy guidance, and validation checklist.
- Added `docs/API.md` for partner authentication, task lifecycle, job creation, asset upload/register, asset query/download, idempotency, webhook signing, and error handling.
- Linked deployment/API docs and the OpenAPI route from both README files.
- Expanded `/api/v1/openapi.json` to document capabilities, assets, asset download, jobs, job detail, cancel, request schemas, response schemas, and API key auth.
- Added authenticated `/api/v1/assets/:id` and `/api/v1/assets/:id/download` endpoints.
- Restricted public asset listing/detail/download to assets visible to the authenticated API client.
- Added API client tags to uploaded assets and API-generated output assets so long-lived integrations can query/download their own results.
- Added a deploy-script health check and printed API documentation/OpenAPI hints after startup.
### Verification
- **Status:** complete
- Results:
- `npm test`: 7 files / 21 tests passed.
- `npm run build`: production build succeeded and included `/api/v1/assets/:id`, `/api/v1/assets/:id/download`, and `/api/v1/openapi.json`.
- Local HTTP smoke test with a temporary API key returned `/api/v1/capabilities` and expanded OpenAPI paths.
- Local HTTP smoke test uploaded a PNG through `/api/v1/assets`, fetched `/api/v1/assets/:id`, and downloaded matching binary bytes from `/api/v1/assets/:id/download`.
- Mock-provider task flow created a queued job through `/api/v1/jobs`, Worker processed it to `succeeded`, generated output asset carried the API client tag, and download returned an attachment response.
## Error Log - Server Deployment Support
| Timestamp | Error | Attempt | Resolution |
|-----------|-------|---------|------------|