Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
606d2fa
logic for create user manual
oscarcitoz Feb 7, 2025
5b348d8
Merge pull request #1 from neuro-publico/master
oscarcitoz Feb 10, 2025
c69629a
eliminate file
oscarcitoz Feb 10, 2025
a09db24
Merge pull request #2 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 10, 2025
ed4fc54
add amazon integration.
oscarcitoz Feb 12, 2025
777619b
Merge pull request #3 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 12, 2025
5e032a0
Merge pull request #4 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 12, 2025
749206b
add logic product similar
oscarcitoz Feb 13, 2025
e015c2a
Merge pull request #5 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 13, 2025
e7a10c4
add logic for files in agents, add logic for generate images
oscarcitoz Feb 20, 2025
0b7dd73
Merge pull request #6 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 20, 2025
5c02762
fix for use url
oscarcitoz Feb 20, 2025
d0286c5
Merge pull request #7 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 20, 2025
d1f50bf
add response
oscarcitoz Feb 20, 2025
41479e0
Merge pull request #8 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 20, 2025
1bbfdc9
modify structure folders
oscarcitoz Feb 20, 2025
e359907
Merge pull request #9 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 20, 2025
5e6f46b
add logic for images support antrhopic and deepseek
oscarcitoz Feb 21, 2025
3eb1698
add logic for vision analysis.
oscarcitoz Feb 21, 2025
a9e6d96
Merge pull request #10 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 21, 2025
ab9983f
filter price
oscarcitoz Feb 21, 2025
2433136
Merge pull request #11 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 21, 2025
adaefe4
fix > price 0
oscarcitoz Feb 21, 2025
4d849f4
Merge pull request #12 from neuro-publico/eliminate-filesystem
oscarcitoz Feb 21, 2025
bf145be
change logic for replicate.
oscarcitoz Feb 22, 2025
c4bcb51
Merge pull request #13 from neuro-publico/eliminate-filesystem
StephanSuarez Feb 22, 2025
211518b
add message in result
oscarcitoz Mar 3, 2025
bf00f6c
change by text.
oscarcitoz Mar 3, 2025
1bcd5ba
Merge pull request #14 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 3, 2025
5bf34bc
add logic scrapper amazon, aliexpress, cj and ai
oscarcitoz Mar 4, 2025
bb3db81
fix variants
oscarcitoz Mar 4, 2025
1a9a426
Merge pull request #15 from neuro-publico/eliminate-filesystem
StephanSuarez Mar 4, 2025
d3c4ba9
new logic scraper.
oscarcitoz Mar 5, 2025
183cd69
Merge pull request #16 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 5, 2025
91c1584
modify aliexpress factory
oscarcitoz Mar 7, 2025
3c11ce7
Merge pull request #17 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 7, 2025
9aeeec5
change endpoint aliexpress
oscarcitoz Mar 10, 2025
9029c08
Merge pull request #18 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 10, 2025
cacdede
logic copies
oscarcitoz Mar 11, 2025
db198da
Merge pull request #19 from neuro-publico/eliminate-filesystem
AlejoCode Mar 11, 2025
94931dd
fix id new service
oscarcitoz Mar 13, 2025
8b05f94
Merge pull request #20 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 13, 2025
ccc77c3
new service image.
oscarcitoz Mar 17, 2025
9b94eb2
to env google gemini
oscarcitoz Mar 17, 2025
afaa227
Merge pull request #21 from neuro-publico/eliminate-filesystem
oscarcitoz Mar 17, 2025
362f08c
Merge pull request #22 from neuro-publico/develop
oscarcitoz Mar 18, 2025
fbe1382
generate images from
oscarcitoz Mar 28, 2025
8555b76
change name method.
oscarcitoz Mar 28, 2025
0261b27
Merge pull request #23 from neuro-publico/eliminate-filesystem
AlejoCode Mar 28, 2025
c5c3767
add logic json parser structure, copywriter generic.
oscarcitoz Mar 28, 2025
7591f2f
Merge pull request #24 from neuro-publico/eliminate-filesystem
StephanSuarez Mar 29, 2025
b9d5ee0
add logic for receive a url image.
oscarcitoz Mar 30, 2025
d586983
Merge pull request #25 from neuro-publico/url-image-from
oscarcitoz Mar 31, 2025
f0069f5
add endpoint for generate images from api-key
oscarcitoz Mar 31, 2025
218530e
Merge pull request #26 from neuro-publico/url-image-from
oscarcitoz Mar 31, 2025
31b3152
fix develop
oscarcitoz Mar 31, 2025
b5e8b4e
Merge pull request #27 from neuro-publico/url-image-from
oscarcitoz Mar 31, 2025
b925be7
add fallback generate image.
oscarcitoz Apr 10, 2025
b1dd412
Merge pull request #28 from neuro-publico/url-image-from
AlejoCode Apr 10, 2025
fe1aaeb
Merge pull request #29 from neuro-publico/develop
oscarcitoz Apr 11, 2025
6535422
fix scrapper when prices has more elements in string
oscarcitoz Apr 13, 2025
b4df9f3
Merge pull request #30 from neuro-publico/url-image-from
oscarcitoz Apr 13, 2025
527701a
Merge pull request #31 from neuro-publico/develop
oscarcitoz Apr 13, 2025
17d1a60
add logic mcp processor.
oscarcitoz Apr 16, 2025
d2979fd
Merge pull request #32 from neuro-publico/url-image-from
oscarcitoz Apr 21, 2025
c760308
new version
oscarcitoz Apr 21, 2025
3e19102
Merge pull request #33 from neuro-publico/url-image-from
oscarcitoz Apr 21, 2025
6547a0d
fix again version
oscarcitoz Apr 21, 2025
830ec1b
Merge pull request #34 from neuro-publico/url-image-from
oscarcitoz Apr 21, 2025
de1be2e
change pydantic
oscarcitoz Apr 21, 2025
cecea46
Merge pull request #35 from neuro-publico/url-image-from
oscarcitoz Apr 21, 2025
b7a945b
add language for manual.
oscarcitoz Apr 22, 2025
cbb72e8
Merge pull request #36 from neuro-publico/url-image-from
StephanSuarez Apr 22, 2025
c8d81de
check file with version for create pdf or return
oscarcitoz Apr 22, 2025
5886fd6
Merge pull request #37 from neuro-publico/url-image-from
StephanSuarez Apr 22, 2025
ede352c
fix generator
oscarcitoz Apr 22, 2025
0cc795f
add version
oscarcitoz Apr 22, 2025
b26aefd
Merge pull request #38 from neuro-publico/url-image-from
oscarcitoz Apr 22, 2025
79d1586
Merge pull request #39 from neuro-publico/develop
oscarcitoz Apr 24, 2025
bd156a0
implement gemini provider
oscarcitoz Apr 25, 2025
3c7bfc9
Merge pull request #40 from neuro-publico/url-image-from
oscarcitoz Apr 25, 2025
4c530c7
add logic open ai image
oscarcitoz Apr 25, 2025
bc761f9
Merge pull request #41 from neuro-publico/url-image-from
oscarcitoz Apr 25, 2025
38c0d81
add logic for generate image with agent.
oscarcitoz Apr 27, 2025
8d091cc
Merge pull request #42 from neuro-publico/url-image-from
oscarcitoz Apr 27, 2025
759eb74
create service resolve funnel.
oscarcitoz Apr 28, 2025
52a8c4f
Merge pull request #43 from neuro-publico/url-image-from
StephanSuarez Apr 28, 2025
43cb1ae
map only angles
oscarcitoz Apr 28, 2025
001dfce
Merge pull request #44 from neuro-publico/url-image-from
oscarcitoz Apr 28, 2025
b2e4029
change logic iamge service
oscarcitoz Apr 30, 2025
4dad345
Merge pull request #45 from neuro-publico/url-image-from
StephanSuarez Apr 30, 2025
e8275ae
add logic reduce image.
oscarcitoz May 6, 2025
723413d
Merge pull request #46 from neuro-publico/url-image-from
oscarcitoz May 6, 2025
db83883
transform webp.
oscarcitoz May 7, 2025
ee41f2e
Merge pull request #47 from neuro-publico/url-image-from
oscarcitoz May 7, 2025
997413e
Merge pull request #48 from neuro-publico/develop
oscarcitoz May 7, 2025
ba73d27
without size, automatic platica.
oscarcitoz May 9, 2025
cbe8d03
Merge pull request #49 from neuro-publico/url-image-from
oscarcitoz May 9, 2025
cd88320
resize 0.70%
oscarcitoz May 9, 2025
eb971b4
Merge pull request #50 from neuro-publico/url-image-from
oscarcitoz May 9, 2025
cb50bef
high and low
oscarcitoz May 9, 2025
ecab6be
low and high image
oscarcitoz May 9, 2025
3f5173d
Merge pull request #51 from neuro-publico/url-image-from
oscarcitoz May 9, 2025
2f89672
add to prompt
oscarcitoz May 9, 2025
9392083
Merge pull request #52 from neuro-publico/url-image-from
oscarcitoz May 9, 2025
05c139e
better prompt
oscarcitoz May 9, 2025
6d37e56
Merge pull request #53 from neuro-publico/url-image-from
oscarcitoz May 9, 2025
f39ac80
Merge pull request #54 from neuro-publico/develop
oscarcitoz May 9, 2025
bdd1ccb
add logic fallback antrhopic
oscarcitoz May 14, 2025
f791124
Merge pull request #55 from neuro-publico/url-image-from
oscarcitoz May 14, 2025
1b4ffaf
Merge pull request #56 from neuro-publico/develop
oscarcitoz May 15, 2025
500fc92
fix version
oscarcitoz May 15, 2025
602cb1b
Merge pull request #57 from neuro-publico/url-image-from
oscarcitoz May 15, 2025
1526700
Merge pull request #58 from neuro-publico/develop
oscarcitoz May 15, 2025
b611b64
add history in memory
oscarcitoz May 31, 2025
f9f0c3d
Merge pull request #59 from neuro-publico/url-image-from
oscarcitoz May 31, 2025
2f577ad
add logic direct scrapper
oscarcitoz Jul 1, 2025
1e8f1fd
Merge pull request #60 from neuro-publico/url-image-from
oscarcitoz Jul 1, 2025
7b9c9b4
add scrapper dropi
oscarcitoz Jul 1, 2025
8ab5f7c
eliminate comment
oscarcitoz Jul 1, 2025
6f5ca07
eliminate fields innecesaries
oscarcitoz Jul 1, 2025
0e93a2e
Merge pull request #61 from neuro-publico/url-image-from
oscarcitoz Jul 1, 2025
fd6ab67
change api
oscarcitoz Jul 2, 2025
1d2a52b
Merge pull request #62 from neuro-publico/url-image-from
oscarcitoz Jul 2, 2025
8c76b62
add new services dropi
oscarcitoz Jul 2, 2025
56c825c
Merge pull request #63 from neuro-publico/url-image-from
oscarcitoz Jul 2, 2025
b26f577
Merge pull request #64 from neuro-publico/develop
oscarcitoz Jul 16, 2025
b7a4718
add logic for create context and brand for store
oscarcitoz Jul 17, 2025
9c4d821
revert controller
oscarcitoz Jul 17, 2025
6c18651
Merge pull request #65 from neuro-publico/url-image-from
oscarcitoz Jul 17, 2025
3dddc90
comment variants.
oscarcitoz Jul 23, 2025
8681ee6
Merge pull request #66 from neuro-publico/url-image-from
oscarcitoz Jul 23, 2025
49e7827
Merge pull request #67 from neuro-publico/develop
oscarcitoz Jul 23, 2025
f1ac12b
new logic for alibaba and price
oscarcitoz Jul 24, 2025
0bf3bd3
Merge pull request #68 from neuro-publico/url-image-from
oscarcitoz Jul 24, 2025
fb6a817
Merge pull request #69 from neuro-publico/develop
oscarcitoz Jul 24, 2025
bba40f3
revert
oscarcitoz Jul 24, 2025
b16489e
Merge pull request #70 from neuro-publico/url-image-from
oscarcitoz Jul 24, 2025
1cf544e
Merge pull request #71 from neuro-publico/develop
oscarcitoz Jul 24, 2025
c2ac91b
again
oscarcitoz Jul 24, 2025
e85afb0
Merge pull request #72 from neuro-publico/url-image-from
oscarcitoz Jul 24, 2025
4605d38
Merge pull request #73 from neuro-publico/develop
oscarcitoz Jul 24, 2025
09682a9
elminate render
oscarcitoz Jul 24, 2025
b10a7d0
Merge pull request #74 from neuro-publico/url-image-from
oscarcitoz Jul 24, 2025
6393d04
Merge pull request #75 from neuro-publico/develop
oscarcitoz Jul 24, 2025
94cbbb1
add logic resolution.
oscarcitoz Aug 1, 2025
e241956
Merge pull request #76 from neuro-publico/url-image-from
oscarcitoz Aug 1, 2025
4f4ca2a
add logic from agent.
oscarcitoz Aug 1, 2025
316b258
Merge pull request #77 from neuro-publico/url-image-from
oscarcitoz Aug 1, 2025
ae6062b
Merge pull request #78 from neuro-publico/develop
oscarcitoz Aug 21, 2025
31ebf40
fal ai integrado con eleven labs, omnihuman y kling
StephanSrz Aug 28, 2025
1036dab
Merge pull request #80 from neuro-publico/feature/ads-fal-ai
StephanSuarez Aug 29, 2025
c591f44
add logic image flash 2.5
oscarcitoz Sep 1, 2025
005c4f4
Merge pull request #81 from neuro-publico/url-image-from
oscarcitoz Sep 1, 2025
64809c8
add logic provider
oscarcitoz Sep 5, 2025
854a491
Merge pull request #83 from neuro-publico/url-image-from
oscarcitoz Sep 5, 2025
019b148
add logic pdf generator
oscarcitoz Sep 8, 2025
fd0fb4c
Merge pull request #84 from neuro-publico/url-image-from
oscarcitoz Sep 8, 2025
05ca8c0
fix generator.
oscarcitoz Sep 8, 2025
34ef986
Merge pull request #85 from neuro-publico/url-image-from
oscarcitoz Sep 8, 2025
ff3fc4d
Merge pull request #86 from neuro-publico/url-image-from
oscarcitoz Sep 9, 2025
76386d6
add force in request
oscarcitoz Sep 10, 2025
77b810f
Merge pull request #87 from neuro-publico/url-image-from
oscarcitoz Sep 10, 2025
909d7c3
change s3 direct
oscarcitoz Sep 11, 2025
fb2bc55
Merge pull request #88 from neuro-publico/url-image-from
oscarcitoz Sep 11, 2025
49a644a
replace s3 url
oscarcitoz Sep 11, 2025
e85be3a
Merge pull request #89 from neuro-publico/url-image-from
oscarcitoz Sep 11, 2025
1f50d65
add nw logic
oscarcitoz Sep 11, 2025
6192c8b
Merge pull request #90 from neuro-publico/url-image-from
oscarcitoz Sep 11, 2025
3788af7
Merge pull request #91 from neuro-publico/url-image-from
oscarcitoz Sep 16, 2025
51ad8a7
add langsmith
oscarcitoz Oct 11, 2025
00ea8af
add req
oscarcitoz Oct 11, 2025
2b881d3
Merge pull request #92 from neuro-publico/url-image-from
oscarcitoz Oct 11, 2025
b847f69
Merge branch 'master' into develop
oscarcitoz Oct 11, 2025
26ada67
add logic for get variants dropi
oscarcitoz Oct 27, 2025
e13d664
Merge pull request #94 from neuro-publico/url-image-from
oscarcitoz Oct 27, 2025
4b09add
add new logic for gemini
oscarcitoz Nov 21, 2025
8dc6343
Merge pull request #96 from neuro-publico/url-image-from
oscarcitoz Nov 21, 2025
4298aec
add language
oscarcitoz Dec 15, 2025
01f7050
Merge pull request #98 from neuro-publico/url-image-from
oscarcitoz Dec 15, 2025
431fac7
add translate manual
oscarcitoz Dec 15, 2025
10bdd02
Merge pull request #99 from neuro-publico/url-image-from
oscarcitoz Dec 15, 2025
af760d2
add language generate image
oscarcitoz Dec 17, 2025
86801e1
Merge pull request #100 from neuro-publico/feature/dropi-variants-ima…
oscarcitoz Dec 17, 2025
4318d04
add logic dropi multiple country
oscarcitoz Dec 27, 2025
2045f82
Merge develop into feature branch - resolve conflicts
oscarcitoz Dec 27, 2025
6fbb386
Merge pull request #102 from neuro-publico/feature/dropi-variants-ima…
oscarcitoz Dec 27, 2025
823f13c
add ec
oscarcitoz Jan 5, 2026
b0c9085
Merge pull request #103 from neuro-publico/feature/dropi-variants-ima…
oscarcitoz Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,34 @@ HOST_AGENT_CONFIG=https://services.fluxi.com
OPENAI_API_KEY=dasdasdasdasdas
ANTHROPIC_API_KEY=dasdasdasdas
HOST_DEEP_SEEK=https://55.188.190.83:11434/v1
RAPIDAPI_HOST=https://aliexpress-datahub.p.rapidapi.com
AGENT_RECOMMEND_PRODUCTS_ID=recommend_agent
AGENT_RECOMMEND_SIMILAR_PRODUCTS_ID=recommend_agent_similar
RAPIDAPI_KEY=dsadasdasdasda
RAPIDAPI_HOST=https://aliexpress-datahub.p.rapidapi.com
S3_UPLOAD_API=http://lambdahost

API_KEY=tu_clave_api_secreta_aqui
AUTH_SERVICE_URL=https://develop.api.fluxi.com.co/api/v1/users/user-info
GOOGLE_VISION_API_KEY=dsadadasda
REPLICATE_API_KEY=dsadadasda
SCRAPERAPI_KEY=dsadsadsadasdsadas
URL_SCRAPER_LAMBDA=https://localhost:8000/
GOOGLE_GEMINI_API_KEY=sadasadasdasd
ENVIRONMENT=dev

DROPI_HOST=https://test-api.dropi.co
DROPI_S3_BASE_URL=https://d39ru7awumhhs2.cloudfront.net/
DROPI_API_KEY=dasdsadadasdas

# Dropi - API Keys por País (opcional, si no se especifica usa DROPI_API_KEY)
DROPI_API_KEY_CO=your_dropi_api_key_colombia
DROPI_API_KEY_MX=your_dropi_api_key_mexico
DROPI_API_KEY_AR=your_dropi_api_key_argentina
DROPI_API_KEY_CL=your_dropi_api_key_chile
DROPI_API_KEY_PE=your_dropi_api_key_peru
DROPI_API_KEY_PY=your_dropi_api_key_paraguay

LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=tu_api_key_aqui
LANGCHAIN_PROJECT=develop
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ logs/

# Environment variables file
.env
.venv

# Pinecone-related cache
pinecone.cache
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Usar una imagen base de Python
FROM python:3.9-slim
FROM python:3.10-slim

# Establecer el directorio de trabajo
WORKDIR /app
Expand Down
49 changes: 48 additions & 1 deletion app/configurations/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,54 @@
DEEP_SEEK_HOST = os.getenv('HOST_DEEP_SEEK')

AGENT_RECOMMEND_PRODUCTS_ID = os.getenv('AGENT_RECOMMEND_PRODUCTS_ID')

AGENT_RECOMMEND_SIMILAR_PRODUCTS_ID = os.getenv('AGENT_RECOMMEND_SIMILAR_PRODUCTS_ID')
RAPIDAPI_KEY = os.getenv('RAPIDAPI_KEY')

RAPIDAPI_HOST = os.getenv('RAPIDAPI_HOST')

S3_UPLOAD_API = os.getenv('S3_UPLOAD_API')

AGENT_IMAGE_VARIATIONS = "agent_image_variations"
SCRAPER_AGENT = "scraper_agent"
SCRAPER_AGENT_DIRECT = "scraper_agent_direct_code"

AUTH_SERVICE_URL: str = os.getenv('AUTH_SERVICE_URL')

GOOGLE_VISION_API_KEY: str = os.getenv('GOOGLE_VISION_API_KEY')
REPLICATE_API_KEY: str = os.getenv('REPLICATE_API_KEY')
SCRAPERAPI_KEY: str = os.getenv('SCRAPERAPI_KEY')
URL_SCRAPER_LAMBDA: str = os.getenv('URL_SCRAPER_LAMBDA')

API_KEY: str = os.getenv('API_KEY')
GOOGLE_GEMINI_API_KEY: str = os.getenv('GOOGLE_GEMINI_API_KEY')

ENVIRONMENT: str = os.getenv('ENVIRONMENT')

OPENAI_API_KEY: str = os.getenv('OPENAI_API_KEY')

DROPI_S3_BASE_URL: str = os.getenv('DROPI_S3_BASE_URL', 'https://d39ru7awumhhs2.cloudfront.net/')
DROPI_HOST: str = os.getenv('DROPI_HOST', 'https://test-api.dropi.co')
DROPI_API_KEY: str = os.getenv('DROPI_API_KEY')
DROPI_API_KEY_CO: str = os.getenv('DROPI_API_KEY_CO', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_MX: str = os.getenv('DROPI_API_KEY_MX', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_AR: str = os.getenv('DROPI_API_KEY_AR', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_CL: str = os.getenv('DROPI_API_KEY_CL', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_PE: str = os.getenv('DROPI_API_KEY_PE', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_PY: str = os.getenv('DROPI_API_KEY_PY', os.getenv('DROPI_API_KEY'))
DROPI_API_KEY_EC: str = os.getenv('DROPI_API_KEY_EC', os.getenv('DROPI_API_KEY'))


def get_dropi_api_key(country: str = "co") -> str:
country_keys = {
"co": DROPI_API_KEY_CO,
"mx": DROPI_API_KEY_MX,
"ar": DROPI_API_KEY_AR,
"cl": DROPI_API_KEY_CL,
"pe": DROPI_API_KEY_PE,
"py": DROPI_API_KEY_PY,
"ec": DROPI_API_KEY_EC,
}
return country_keys.get(country.lower(), DROPI_API_KEY)


FAL_AI_API_KEY: str = os.getenv('FAL_AI_API_KEY')
8 changes: 8 additions & 0 deletions app/configurations/copies_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
AGENT_COPIES = [
"agent_prompt_copies_use_cases_v1",
"agent_prompt_copies_pain_points_v1",
"agent_prompt_copies_benefits_v1",
"agent_prompt_copies_features_v1",
"agent_prompt_copies_testimonials_v1",
"agent_prompt_copies_faqs_v1"
]
37 changes: 37 additions & 0 deletions app/configurations/pdf_manual_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
PDF_MANUAL_SECTIONS_TRANSLATIONS = {
"es": {
"introduction": "Introducción",
"main_features": "Características principales",
"usage_instructions": "Instrucciones de uso",
"troubleshooting": "Solución de problemas",
"faq": "Preguntas frecuentes"
},
"en": {
"introduction": "Introduction",
"main_features": "Main Features",
"usage_instructions": "Usage Instructions",
"troubleshooting": "Troubleshooting",
"faq": "Frequently Asked Questions"
},
"pt": {
"introduction": "Introdução",
"main_features": "Características Principais",
"usage_instructions": "Instruções de Uso",
"troubleshooting": "Solução de Problemas",
"faq": "Perguntas Frequentes"
}
}

PDF_MANUAL_SECTIONS = PDF_MANUAL_SECTIONS_TRANSLATIONS["es"]

PDF_MANUAL_SECTION_ORDER = [
"introduction",
"main_features",
"usage_instructions",
"troubleshooting",
"faq"
]


def get_sections_for_language(language: str = "es") -> dict:
return PDF_MANUAL_SECTIONS_TRANSLATIONS.get(language, PDF_MANUAL_SECTIONS_TRANSLATIONS["es"])
196 changes: 194 additions & 2 deletions app/controllers/handle_controller.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,51 @@
from app.requests.recommend_product_request import RecommendProductRequest
from fastapi import APIRouter, Depends, Request
import base64
import httpx

from app.requests.brand_context_resolver_request import BrandContextResolverRequest
from app.requests.copy_request import CopyRequest
from app.requests.direct_scrape_request import DirectScrapeRequest
from app.requests.generate_image_request import GenerateImageRequest
from app.requests.generate_pdf_request import GeneratePdfRequest
from app.requests.recommend_product_request import RecommendProductRequest
from app.requests.resolve_funnel_request import ResolveFunnelRequest
from fastapi import APIRouter, Depends, Request, HTTPException
from app.requests.message_request import MessageRequest
from app.requests.variation_image_request import VariationImageRequest
from app.requests.product_scraping_request import ProductScrapingRequest
from app.services.image_service_interface import ImageServiceInterface
from app.services.message_service_interface import MessageServiceInterface
from app.services.product_scraping_service_interface import ProductScrapingServiceInterface
from app.middlewares.auth_middleware import require_auth, require_api_key
from app.requests.generate_video_request import GenerateVideoRequest

# Importaciones para Dropi
from app.services.dropi_service_interface import DropiServiceInterface
from app.services.dropi_service import DropiService
from app.services.video_service_interface import VideoServiceInterface
from app.services.video_service import VideoService
from app.services.audio_service_interface import AudioServiceInterface
from app.services.audio_service import AudioService
from app.requests.generate_audio_request import GenerateAudioRequest

router = APIRouter(
prefix="/api/ms/conversational-engine",
tags=["conversational-agent"]
)

@router.get("/integration/dropi/departments")
async def get_departments(
country: str = "co",
service: DropiServiceInterface = Depends(DropiService)
):
return await service.get_departments(country)

@router.get("/integration/dropi/departments/{department_id}/cities")
async def get_cities_by_department(
department_id: int,
country: str = "co",
service: DropiServiceInterface = Depends(DropiService)
):
return await service.get_cities_by_department(department_id, country)

@router.post("/handle-message")
async def handle_message(
Expand All @@ -19,6 +56,15 @@ async def handle_message(
return response


@router.post("/handle-message-json")
async def handle_message(
request: MessageRequest,
message_service: MessageServiceInterface = Depends()
):
response = await message_service.handle_message_json(request)
return response


@router.post("/recommend-product")
async def recommend_products(
request: RecommendProductRequest,
Expand All @@ -28,6 +74,152 @@ async def recommend_products(
return response


@router.post("/generate-pdf")
async def generate_pdf(
request: GeneratePdfRequest,
message_service: MessageServiceInterface = Depends()
):
response = await message_service.generate_pdf(request)
return response


@router.post("/generate-variation-images")
@require_auth
async def generate_variation_images(
request: Request,
variation_request: VariationImageRequest,
service: ImageServiceInterface = Depends()
):
user_info = request.state.user_info
response = await service.generate_variation_images(variation_request, user_info.get("data", {}).get("id"))
return response


@router.post("/generate-images-from")
@require_auth
async def generate_images_from(
request: Request,
generate_image_request: GenerateImageRequest,
service: ImageServiceInterface = Depends()
):
if not generate_image_request.file and generate_image_request.file_url:
async with httpx.AsyncClient() as client:
try:
response = await client.get(generate_image_request.file_url)
response.raise_for_status()
generate_image_request.file = base64.b64encode(response.content).decode()
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error for get file: {str(e)}")

user_info = request.state.user_info
response = await service.generate_images_from(generate_image_request, user_info.get("data", {}).get("id"))
return response


@router.post("/generate-images-from/api-key")
@require_api_key
async def generate_images_from_api_key(
request: Request,
generate_image_request: GenerateImageRequest,
service: ImageServiceInterface = Depends()
):
if not generate_image_request.file and generate_image_request.file_url:
async with httpx.AsyncClient() as client:
try:
response = await client.get(generate_image_request.file_url)
response.raise_for_status()
generate_image_request.file = base64.b64encode(response.content).decode()
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error for get file: {str(e)}")
response = await service.generate_images_from(generate_image_request, generate_image_request.owner_id)
return response


@router.post("/generate-images-from-agent/api-key")
@require_api_key
async def generate_images_from_agent_api_key(
request: Request,
generate_image_request: GenerateImageRequest,
service: ImageServiceInterface = Depends()
):
if not generate_image_request.file and generate_image_request.file_url:
async with httpx.AsyncClient() as client:
try:
response = await client.get(generate_image_request.file_url)
response.raise_for_status()
generate_image_request.file = base64.b64encode(response.content).decode()
except Exception as e:
raise HTTPException(status_code=400, detail=f"Error for get file: {str(e)}")
response = await service.generate_images_from_agent(generate_image_request, generate_image_request.owner_id)
return response


@router.post("/generate-copies")
async def generate_copies(
copy_request: CopyRequest,
message_service: MessageServiceInterface = Depends()
):
response = await message_service.generate_copies(copy_request)
return response


@router.post("/scrape-product")
@require_auth
async def scrape_product(
request: Request,
scraping_request: ProductScrapingRequest,
service: ProductScrapingServiceInterface = Depends()
):
response = await service.scrape_product(scraping_request)
return response

@router.post("/scrape-direct-html")
@require_auth
async def scrape_product_direct(
request: Request,
scraping_request: DirectScrapeRequest,
service: ProductScrapingServiceInterface = Depends()
):
response = await service.scrape_direct(scraping_request.html)
return response


@router.post("/resolve-info-funnel")
async def resolve_funnel(
request: ResolveFunnelRequest,
message_service: MessageServiceInterface = Depends()
):
response = await message_service.resolve_funnel(request)
return response

@router.post("/store/brand-context-resolver")
@require_auth
async def brand_context_resolver(
request: Request,
requestBrand: BrandContextResolverRequest,
message_service: MessageServiceInterface = Depends()
):
response = await message_service.resolve_brand_context(requestBrand)
return response

@router.post("/generate-video")
async def generate_video(
request: Request,
requestGenerateVideo: GenerateVideoRequest,
video_service: VideoServiceInterface = Depends(VideoService)
):
return await video_service.generate_video(requestGenerateVideo)


@router.post("/generate-audio")
async def generate_audio(
request: Request,
requestGenerateAudio: GenerateAudioRequest,
audio_service: AudioServiceInterface = Depends(AudioService)
):
return await audio_service.generate_audio(requestGenerateAudio)


@router.get("/health")
async def health_check():
return {"status": "OK"}
2 changes: 1 addition & 1 deletion app/externals/agent_config/agent_config_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ async def get_agent(data: AgentConfigRequest) -> AgentConfigResponse:
headers = {'Content-Type': 'application/json'}

async with httpx.AsyncClient() as client:
response = await client.post(url, json=data.dict(), headers=headers)
response = await client.post(url, json=data.model_dump(), headers=headers)
response.raise_for_status()

return AgentConfigResponse(**response.json())
Loading