|
| 1 | +```markdown |
| 2 | +# ExternalToolService |
| 3 | + |
| 4 | +El servicio `ExternalToolService` es una aplicación basada en FastAPI que proporciona una interfaz para interactuar con herramientas externas como servicios de inteligencia artificial, procesamiento de pagos y almacenamiento en la nube. |
| 5 | + |
| 6 | +## Estructura del Proyecto |
| 7 | + |
| 8 | +``` |
| 9 | +ExternalToolService/ |
| 10 | +├── app/ |
| 11 | +│ ├── app/ |
| 12 | +│ │ ├── adapters/ |
| 13 | +│ │ │ ├── __init__.py |
| 14 | +│ │ │ ├── ai.py |
| 15 | +│ │ │ ├── manager.py |
| 16 | +│ │ │ ├── payment.py |
| 17 | +│ │ │ ├── storage.py |
| 18 | +│ │ ├── main.py |
| 19 | +``` |
| 20 | +
|
| 21 | +### Archivos Principales |
| 22 | +
|
| 23 | +#### `main.py` |
| 24 | +
|
| 25 | +Este archivo define las rutas principales de la API y gestiona la autenticación básica. |
| 26 | +
|
| 27 | +- **Rutas**: |
| 28 | + - `POST /analyze`: Analiza datos utilizando un servicio de inteligencia artificial. |
| 29 | + - `POST /pay`: Procesa pagos utilizando un adaptador de pago. |
| 30 | + - `GET /storage-url`: Genera una URL de almacenamiento para un archivo. |
| 31 | +
|
| 32 | +- **Autenticación**: |
| 33 | + Utiliza autenticación básica con un usuario y contraseña predeterminados (`admin` y `123`). |
| 34 | +
|
| 35 | +#### `adapters/manager.py` |
| 36 | +
|
| 37 | +Define la clase base `ExternalTool` y el gestor `ExternalToolManager` para interactuar con herramientas externas. |
| 38 | +
|
| 39 | +- **Clases**: |
| 40 | + - `ExternalTool`: Clase abstracta que define el método `execute`. |
| 41 | + - `ExternalToolManager`: Clase que utiliza herramientas externas para ejecutar operaciones. |
| 42 | +
|
| 43 | +#### `adapters/ai.py` |
| 44 | +
|
| 45 | +Implementa el adaptador `AIServiceAdapter` para servicios de inteligencia artificial. |
| 46 | +
|
| 47 | +- **Método**: |
| 48 | + - `execute(data)`: Devuelve un resumen y un análisis de sentimiento del contenido proporcionado. |
| 49 | +
|
| 50 | +#### `adapters/payment.py` |
| 51 | +
|
| 52 | +Implementa el adaptador `PaymentAdapter` para procesamiento de pagos. |
| 53 | +
|
| 54 | +- **Método**: |
| 55 | + - `execute(data)`: Simula el procesamiento de un pago y devuelve el estado. |
| 56 | +
|
| 57 | +#### `adapters/storage.py` |
| 58 | +
|
| 59 | +Implementa el adaptador `CloudStorageAdapter` para generar URLs de almacenamiento. |
| 60 | +
|
| 61 | +- **Método**: |
| 62 | + - `execute(data)`: Genera una URL simulada para un archivo. |
| 63 | +
|
| 64 | +## Ejemplo de Uso |
| 65 | +
|
| 66 | +### Análisis de Datos |
| 67 | +
|
| 68 | +```bash |
| 69 | +curl -X POST "http://localhost:8000/analyze" \ |
| 70 | +-H "Authorization: Basic $(echo -n 'admin:123' | base64)" \ |
| 71 | +-H "Content-Type: application/json" \ |
| 72 | +-d '{"content": "Este es un ejemplo de texto para analizar."}' |
| 73 | +``` |
| 74 | + |
| 75 | +### Procesamiento de Pagos |
| 76 | + |
| 77 | +```bash |
| 78 | +curl -X POST "http://localhost:8000/pay" \ |
| 79 | +-H "Authorization: Basic $(echo -n 'admin:123' | base64)" \ |
| 80 | +-H "Content-Type: application/json" \ |
| 81 | +-d '{"amount": 100}' |
| 82 | +``` |
| 83 | + |
| 84 | +### Generación de URL de Almacenamiento |
| 85 | + |
| 86 | +```bash |
| 87 | +curl -X GET "http://localhost:8000/storage-url?filename=example.txt" \ |
| 88 | +-H "Authorization: Basic $(echo -n 'admin:123' | base64)" |
| 89 | +``` |
| 90 | + |
| 91 | +## Requisitos |
| 92 | + |
| 93 | +- **Python**: 3.8 o superior |
| 94 | +- **Dependencias**: FastAPI, Uvicorn |
| 95 | + |
| 96 | +## Instalación |
| 97 | + |
| 98 | +1. Clona el repositorio: |
| 99 | + ```bash |
| 100 | + git clone <url-del-repositorio> |
| 101 | + cd ExternalToolService/app |
| 102 | + ``` |
| 103 | + |
| 104 | +2. Instala las dependencias: |
| 105 | + ```bash |
| 106 | + pip install -r requirements.txt |
| 107 | + ``` |
| 108 | + |
| 109 | +3. Ejecuta el servidor: |
| 110 | + ```bash |
| 111 | + uvicorn main:app --reload |
| 112 | + ``` |
| 113 | + |
| 114 | +## Notas |
| 115 | + |
| 116 | +- Este servicio utiliza autenticación básica para proteger las rutas. |
| 117 | +- Los adaptadores implementan lógica simulada y pueden extenderse para integrarse con servicios reales. |
| 118 | +``` |
0 commit comments