
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Motor REST assíncrono para scraping de listagens com seletores CSS e geração de links de afiliado (Amazon, Mercado Livre), com cofre por tenant (x-api-key), filas Celery e Playwright/Chromium já incluídos na imagem.
Versão recomendada da imagem:
automacaodebaixocusto/omnilink-api:latest(ajuste conforme sua organização no Hub.)
X-Omnilink-Signature)./metrics) e oferece health check (/health).Um único Dockerfile compõe runtime com deps do Playwright/Chromium: o mesmo artefato serve para rodar só a API (uvicorn) ou também o worker (celery), desde que passe o comando adequado ao subir o container/orquestração.
| Camada | Tecnologia |
|---|---|
| API | Python 3.11, FastAPI, Uvicorn, Pydantic Settings |
| Banco | PostgreSQL (driver psycopg v3, SQLAlchemy 2.x, Alembic) |
| Fila | Redis + Celery 5 |
| Browser | Playwright + Chromium (instalados na imagem) |
| Segurança de dados sensíveis | Fernet (ENCRYPTION_KEY), hash SHA-256 da API key no backend |
| Observabilidade | JSON logging, Prometheus client, middleware de latência/status |
{platform} nas rotas)| Plataforma | Cofre POST /v1/accounts | POST .../affiliate/.../generate-link | POST .../fetch/.../list |
|---|---|---|---|
amazon | Sim | Sim | Sim |
mercadolivre | Sim | Sim | Sim |
shopee | Sim | 503 (standby até integração ativa) | 503 (idem) |
Erros típicos: 401 sem x-api-key, 422 validação OpenAPI (ex.: mais de 25 URLs em afiliação), 404 recurso/task do tenant não encontrado, 503 Shopee nas rotas assíncronas citadas.
Públicos / observabilidade
GET /health — sinal vivo (sem autenticação).GET /metrics — formato Prometheus; em produção costuma exigir METRICS_TOKEN (Authorization: Bearer ... ou x-metrics-token).GET /health/diagnostics — snapshot de contagens por template de rota (mesmo esquema de token que métricas em ambientes onde está configurado).Protegidos — header x-api-key
| Método | Caminho |
|---|---|
| POST | /v1/accounts |
| PUT | /v1/accounts/{platform} |
| GET | /v1/accounts/{platform}/status |
| POST | /v1/affiliate/{platform}/generate-link |
| POST | /v1/fetch/{platform}/list |
| GET | /v1/tasks/{task_id}/status |
OpenAPI/Swagger em /docs (quando a API está no ar).
Modelo de trabalho: generate-link e fetch/list respondem 202 com task_id, task_ids (lista na ordem: afiliação até 25 URLs) e status_url; o cliente faz polling em GET /v1/tasks/... ou recebe webhook.
| Variável | Uso |
|---|---|
APP_ENV | development, staging ou production (validações de segurança mais estritas nos últimos). |
APP_DEBUG | false recomendado em produção (true aumenta superfície de erro). |
DATABASE_URL | Ex.: postgresql+psycopg://usuario:senha@host:5432/omnilink |
REDIS_URL | Redis principal (ex.: redis://redis:6379/0) |
CELERY_BROKER_URL / CELERY_RESULT_BACKEND | Filas Celery em DBs índices distintos (ex.: /1, /2) |
ENCRYPTION_KEY | Chave Fernet (44 caracteres URL-safe Base64). Obrigatória e própria em staging/production. |
WEBHOOK_SIGNING_SECRET | HMAC dos webhooks (mínimo 16 caracteres fora dev; não use change-me). |
METRICS_TOKEN | Mín. 16 caracteres em staging/production; opcional em dev mas, se definido, protege /metrics e /health/diagnostics. |
DEFAULT_AFFILIATE_TAG | Tag de afiliado padrão (ex.: Amazon). |
DATABASE_WAIT_ATTEMPTS | (Opcional) Número de tentativas de SELECT 1 no lifespan antes do boot falhar útil atrás do Postgres ou Swarm). |
Credenciais de loja são enviadas à API e gravadas criptografadas no PostgreSQL conforme modelo do projeto.
**API (*s buildadas a partir deste Dockerfile):
bashdocker run --rm -p 8000:8000 \ -e DATABASE_URL=postgresql+psycopg://USER:PASS@HOST:5432/omnilink \ -e REDIS_URL=redis://HOST:6379/0 \ -e CELERY_BROKER_URL=redis://HOST:6379/1 \ -e CELERY_RESULT_BACKEND=redis://HOST:6379/2 \ -e APP_ENV=production \ -e ENCRYPTION_KEY='SUA_CHAVE_FERNET_44_CHARS' \ -e WEBHOOK_SIGNING_SECRET='secreto_seguro_min_16' \ -e METRICS_TOKEN='token_seguro_min_16' \ automacaodebaixocusto/omnilink-api:latest \ sh -c "PYTHONPATH=/app alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"
Worker Celery:
bashdocker run --rm \ -e DATABASE_URL=... -e REDIS_URL=... \ -e CELERY_BROKER_URL=... -e CELERY_RESULT_BACKEND=... \ -e APP_ENV=production \ -e ENCRYPTION_KEY=... -e WEBHOOK_SIGNING_SECRET=... -e METRICS_TOKEN=... \ automacaodebaixocusto/omnilink-api:latest \ celery -A app.workers.celery_app.celery_app worker --loglevel=INFO --concurrency=1
Performance: scraping com Playwright consome RAM/CPU — use
--concurrency=1(ou baixo) no worker em produção.
Consulte na raíz do projeto: README, DOCUMENTACAO_COMPLETA_API.md, GUIA_AMBIENTE_LOCAL.md, docker-stack.yml / docker-compose.yml, coleção Postman sob postman/, exemplo de .env em .env.example.
OmniLink API is an async FastAPI backend com***ing listing scraping (Playwright/Chromium bundled in-image) with affiliate link generation for Amazon and Mercado Livre, PostgreSQL persistence, Celery workers on Redis, optional webhook callbacks signed with HMAC, and Prometheus metrics at /metrics.
Licença e suporte: conforme arquivo LICENSE/repositório público principal do projeto OmniLink API.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务