| # HTTP API and Web UI Usage |
|
|
| This project includes an HTTP server binary named `api_server`. |
|
|
| It keeps the original `bulk_download` logic unchanged. The server exposes: |
|
|
| - a Web control panel at `/` and `/ui` |
| - JSON APIs under `/health` and `/jobs` |
|
|
| ## Start locally |
|
|
| ```bash |
| cargo build --release --bin bulk_download --bin api_server |
| ./target/release/api_server |
| ``` |
|
|
| Default address: |
|
|
| ```text |
| http://localhost:7860 |
| ``` |
|
|
| Change port: |
|
|
| ```bash |
| API_PORT=8080 ./target/release/api_server |
| ``` |
|
|
| If `api_server` cannot find `bulk_download`, set it explicitly: |
|
|
| ```bash |
| BULK_DOWNLOAD_BIN=./target/release/bulk_download \ |
| BULK_DOWNLOAD_WORKDIR=. \ |
| ./target/release/api_server |
| ``` |
|
|
| ## Web UI |
|
|
| Open: |
|
|
| ```text |
| http://localhost:7860/ |
| ``` |
|
|
| The page lets you: |
|
|
| - submit a trading date in `YYYYMMDD` format |
| - choose concurrency |
| - enable or disable forced re-download |
| - view job status |
| - inspect final stdout / stderr log tails |
|
|
| ## JSON API endpoints |
|
|
| ### Health check |
|
|
| ```bash |
| curl http://localhost:7860/health |
| ``` |
|
|
| ### Create a download job |
|
|
| ```bash |
| curl -X POST http://localhost:7860/jobs \ |
| -H 'Content-Type: application/json' \ |
| -d '{"date":20260224,"concurrent":50,"force":false}' |
| ``` |
|
|
| Response example: |
|
|
| ```json |
| { |
| "job_id": "job-20260425080000-1", |
| "status": "running", |
| "status_url": "/jobs/job-20260425080000-1" |
| } |
| ``` |
|
|
| Request fields: |
|
|
| - `date`: trading date in `YYYYMMDD` format. |
| - `concurrent`: concurrency, default is 50. |
| - `force`: force re-download, default is false. |
|
|
| ### Get one job status |
|
|
| ```bash |
| curl http://localhost:7860/jobs/job-20260425080000-1 |
| ``` |
|
|
| Statuses: |
|
|
| - `running` |
| - `succeeded` |
| - `failed` |
|
|
| The response includes `stdout_tail` and `stderr_tail` for the final logs. |
|
|
| ### List all jobs |
|
|
| ```bash |
| curl http://localhost:7860/jobs |
| ``` |
|
|
| ## Hugging Face Spaces notes |
|
|
| Use a Docker Space and expose port `7860`. |
|
|
| ClickHouse should be external for Hugging Face Spaces. The existing `docker-compose.yml` will not automatically start as a multi-container service inside a Docker Space. |
|
|