@marcos_feitoza/personal-finance-market-data
v1.1.5
Published
Este projeto é um microsserviço independente responsável por buscar dados de mercado para ações.
Downloads
26
Readme
Serviço de Dados de Mercado (Ações) - Personal Finance
Este projeto é um microsserviço independente responsável por buscar dados de mercado para ações.
Propósito
Este serviço atua como um proxy e um adaptador para a API do Yahoo Finance (yfinance). Sua responsabilidade é fornecer dados de mercado, como preços ao vivo e detalhes de ativos, para outros serviços no sistema, centralizando a lógica de acesso a dados de mercado de ações em um único lugar.
Tecnologias
- Framework: FastAPI
- Fonte de Dados: Biblioteca
yfinance - Deploy: Docker & Kubernetes (via Helm)
- Dependências Locais:
personal-finance-backend-shared: Para utilitários compartilhados, como o de logging.
Como Começar
Pré-requisitos
- Python 3.9+
- Docker
- Acesso ao repositório
personal-finance-backend-sharedno mesmo nível de diretório.
Instalação
- Navegue até o diretório raiz do monorepo.
- Instale as dependências. O uso de um ambiente virtual (
venv) é recomendado.
Nota: Opip install -r personal-finance-backend-market-data/requirements.txtrequirements.txtdeste serviço espera que apersonal-finance-backend-sharedseja instalada em modo editável.
Como Executar
Localmente para Desenvolvimento
A partir do diretório raiz (finace), execute o seguinte comando para iniciar o servidor com hot-reload:
uvicorn personal-finance-backend-market-data.app.main:app --reload --app-dir .Isso iniciará o serviço em http://127.0.0.1:8000.
Via Docker (Produção)
- Navegue para o diretório deste serviço (
personal-finance-backend-market-data). - O script
dockerbuild.shautomatiza o processo de:- Copiar a biblioteca compartilhada para um diretório local temporário.
- Construir a imagem Docker multiplataforma.
- Publicar a imagem no Docker Hub.
./dockerbuild.sh - O deploy no Kubernetes é gerenciado pelo Argo CD a partir do Helm chart em
/helm.
Estrutura da API
POST /api/market-data/prices: Recebe uma lista de símbolos de ações e retorna seus preços ao vivo.POST /api/market-data/details/{symbol}: Retorna detalhes de um ativo específico (nome, indústria, etc.).GET /api/market-data/validate/{symbol}: Valida se um símbolo de ação existe e é encontrável noyfinance.
Logging
O serviço utiliza um sistema de logging estruturado (JSON) centralizado na personal-finance-backend-shared.
- Correlation ID: Todas as requisições que chegam com um header
X-Correlation-ID(propagado pelocore-service) usarão este ID em todos os seus logs. Se nenhuma ID for recebida, uma nova será gerada. Isso permite rastrear uma operação através de todos os microsserviços. - Filtragem: Por ser JSON, os logs são facilmente pesquisáveis e filtráveis em ferramentas de monitoramento.
