From da51720e2cb12d2ded876a571c7ca4acae5c3270 Mon Sep 17 00:00:00 2001 From: ameye Date: Sun, 3 May 2026 13:56:23 -0400 Subject: [PATCH] Config for URLS prod --- app/api/enums/generatives_list.py | 59 ++++++++++++++--- app/api/routes/routes.py | 1 + app/api/services/genaratives.py | 84 +++++++++++++++++++------ app/api/services/myproduct.py | 4 ++ app/models/generative_results.py | 4 +- app/models/members_products_settings.py | 1 + app/models/subscription_generative.py | 6 +- 7 files changed, 129 insertions(+), 30 deletions(-) diff --git a/app/api/enums/generatives_list.py b/app/api/enums/generatives_list.py index 267eb7c..c876983 100644 --- a/app/api/enums/generatives_list.py +++ b/app/api/enums/generatives_list.py @@ -1,11 +1,56 @@ +from app.utils.logger import logger class GenerativesList: @staticmethod - def get_generative_list(): + def get_generative_list(product_id: str): + logger.info(f"get_generative_list ****** *****: {product_id}") data = [ - {"name": 'site_title', "prompt": 'Write about a 30-character title text for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', "active": True}, - {"name": 'site_description', "prompt": 'Write a short introduction text about 100 characters for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', "active": True}, - {"name": 'about_title', "prompt": 'Write about a 30-character about page title text for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', "active": True}, - {"name": 'about_description', "prompt": 'Write three paragraphs about a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', "active": True}, - ] - return data \ No newline at end of file + {"name": 'site_title', + "prompt": 'Write about a 30-character title text for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'site_description', + "prompt": 'Write a short introduction text about 100 characters for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_title', + "prompt": 'Write about a 30-character about page title text for a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_description', + "prompt": 'Write three paragraphs about a REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + ] + + if product_id =='A000001': + data = [ + {"name": 'site_title', + "prompt": 'Write about a 30-character title text for a Personal Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'site_description', + "prompt": 'Write a short introduction text about 100 characters for a Personal Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_title', + "prompt": 'Write about a 30-character about page title text for a Personal Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_description', + "prompt": 'Write three paragraphs about a REPLACE_THIS for a Personal Website with specialization in REPLACE_ANOTHER website.', + "active": True}, + ] + + if product_id =='A000002': + data = [ + {"name": 'site_title', + "prompt": 'Write about a 30-character title text for a Business Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'site_description', + "prompt": 'Write a short introduction text about 100 characters for a Business Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_title', + "prompt": 'Write about a 30-character about page title text for a Business Website for REPLACE_THIS with specialization in REPLACE_ANOTHER website.', + "active": True}, + {"name": 'about_description', + "prompt": 'Write three paragraphs about a REPLACE_THIS for a Business Website with specialization in REPLACE_ANOTHER website.', + "active": True}, + ] + return data + +# Personal Website - A000001 +# Business Website - A000002 \ No newline at end of file diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 6c23311..a27b909 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -496,6 +496,7 @@ def myproduct_subscription(): data = request.get_json() # logger.info(f"Route MyProduct Data ==>>>> {data}") response = MyProductsService.process_subscription(data) + GenerativesService.process_generatives_list(response) #INITIATE GENERATIVES return response diff --git a/app/api/services/genaratives.py b/app/api/services/genaratives.py index 4c3c3b8..bce9fc1 100644 --- a/app/api/services/genaratives.py +++ b/app/api/services/genaratives.py @@ -4,14 +4,18 @@ from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError from app.extensions import db -from app.models import SubscriptionGenerative, GenerativeResults +from app.models import SubscriptionGenerative, GenerativeResults, MembersProductsSettings from app.api.enums import GenerativesList + class GenerativesService(BaseService): @staticmethod - def process_generatives_list(data): + def process_generatives_list(current_subscription): + + # catch - current_subscription process only for performance + logger.info("SELECT GENERATIVE") planed_generate_list = SubscriptionGenerative.get_subscription_generative_list_by_status(0) @@ -24,39 +28,72 @@ class GenerativesService(BaseService): product_id = t.product_id member_id = t.member_id status = t.status - # logger.info(f"GenerativesService ****** *****: {member_id} {practice_type} {product_id} {subscription_uid}") - SubscriptionGenerative.update_subscription_generative_status(subscription_uid,status+1) # move the status up + SubscriptionGenerative.update_subscription_generative_status(subscription_uid, + status + 1) # move the status up GenerativesService.process_generatives_action(member_id, practice_type,specialization,subscription_uid,product_id) + GenerativesService.process_generatives_results_for_subscription(subscription_uid, product_id, member_id) @staticmethod - def process_generatives_action(member_id, practice_type,specialization,subscription_uid,product_id): + def process_generatives_results_for_subscription(subscription_uid, product_id, member_id): + logger.info("PROCESS GENERATIVE") + try: + subscription_result = GenerativeResults.get_subscription_generative_by_subscription_uid(subscription_uid) + if subscription_result: + # with db.session.begin(): + for sub in subscription_result: + var_name = sub.var_name + text_result = sub.text_result + if var_name == 'about_description': + paragraphs = text_result.split("\n\n") + MembersProductsSettings.save_update_product_settings(member_id, subscription_uid, + product_id, + "about_details", + 'TXT', str(paragraphs[0])) + MembersProductsSettings.save_update_product_settings(member_id, subscription_uid, + product_id, + "extra_about_us", + 'TXT', str(paragraphs[1])) + MembersProductsSettings.save_update_product_settings(member_id, subscription_uid, + product_id, + "more_about_us", + 'TXT', str(paragraphs[2])) + + else: + MembersProductsSettings.save_update_product_settings(member_id, subscription_uid, + product_id, + var_name, + 'TXT', text_result) + else: + logger.info(f"None on -> PROCESS GENERATIVE for {subscription_uid}") + + except Exception as e: + logger.error(f"An error process_generatives_results_for_subscription: {str(e)}", exc_info=True) + + @staticmethod + def process_generatives_action(member_id, practice_type, specialization, subscription_uid, product_id): try: logger.info("ENTER GENERATIVE") - generate_list = GenerativesList.get_generative_list() - GenerativeResults.create_generative_result(71, 'A000001', 'about_title', - '35e2d3ba-b5a6-4c1b-b962-05661d55b6f4', - 'Expert Neurologist: Brain & Nerve Care') - - # with db.session.begin(): + generate_list = GenerativesList.get_generative_list(product_id) for t in generate_list: prompt_string = str(t["prompt"]).replace("REPLACE_THIS", practice_type).replace("REPLACE_ANOTHER", specialization) var_name = t["name"] logger.info(f"GenerativesService ****** *****: {t['name']} {prompt_string}") - json_response = None - # json_response = GenerativeEngineIntegration.ask_generative(prompt_string) - # INFO - INSERT *****:71 A000001 about_title 35e2d3ba-b5a6-4c1b-b962-05661d55b6f4 Expert Neurologist: Brain & Nerve Care - GenerativeResults.create_generative_result(71, 'A000001', 'about_title', - '35e2d3ba-b5a6-4c1b-b962-05661d55b6f4', - 'Expert Neurologist: Brain & Nerve Care') + # json_response = None + json_response = GenerativeEngineIntegration.ask_generative(prompt_string) + if json_response is not None: logger.info(json_response) - # logger.info(json_response["output"]) - # logger.info(json_response["output"][0]) + logger.info("1============================") + logger.info(json_response["output"]) + logger.info("2============================") + logger.info(json_response["output"][0]) + logger.info("3============================") # logger.info(json_response["output"][0]["content"][0]["text"]) text_result = json_response["output"][0]["content"][0]["text"] + logger.info("4============================") logger.info( f"INSERT *****:{member_id} {product_id} {var_name} {subscription_uid} {text_result}") GenerativeResults.create_generative_result(member_id, product_id, var_name, subscription_uid, @@ -78,5 +115,14 @@ class GenerativesService(BaseService): db.session.rollback() # return ResponseHelper.internal_server_error() +# GenerativeResults.create_generative_result(71, 'A000001', 'about_title', +# '35e2d3ba-b5a6-4c1b-b962-05661d55b6f4', +# 'Expert Neurologist: Brain & Nerve Care') +# with db.session.begin(): +# INFO - INSERT *****:71 A000001 about_title 35e2d3ba-b5a6-4c1b-b962-05661d55b6f4 Expert Neurologist: Brain & Nerve Care + +# GenerativeResults.create_generative_result(71, 'A000001', 'about_title', +# '35e2d3ba-b5a6-4c1b-b962-05661d55b6f4', +# 'Expert Neurologist: Brain & Nerve Care') diff --git a/app/api/services/myproduct.py b/app/api/services/myproduct.py index 173df4c..9c0b016 100644 --- a/app/api/services/myproduct.py +++ b/app/api/services/myproduct.py @@ -7,6 +7,7 @@ from app.api.schemas.myproduct_external_url import MyProductExternalUrlSchema from app.api.schemas.myproduct_set_colorstyle import MyProductSetColorStyleSchema from app.api.schemas.myproduct_set_template import MyProductSetTemplateSchema from app.api.schemas.myproduct_template_image import MyProductTemplateImageSchema +# from app.api.services import GenerativesService from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError @@ -365,6 +366,9 @@ class MyProductsService(BaseService): SubscriptionGenerative.create_subscription_generative(member_id, practice, specialization, product_id, subscription_uid) + # thread AI Here + # GenerativesService.process_generatives_list(subscription) + response_data = { "subscription_uid": subscription.uid, "subscription_id": subscription.id, diff --git a/app/models/generative_results.py b/app/models/generative_results.py index fd93e1d..c08bf2b 100644 --- a/app/models/generative_results.py +++ b/app/models/generative_results.py @@ -33,7 +33,7 @@ class GenerativeResults(db.Model): @classmethod def get_subscription_generative_by_subscription_uid(cls, subscription_uid): - subscription_generative = cls.query.filter_by(subscription_uid=str(subscription_uid)).first() + subscription_generative = cls.query.filter_by(subscription_uid=str(subscription_uid)).all() if not subscription_generative: return None return subscription_generative @@ -70,7 +70,7 @@ class GenerativeResults(db.Model): try: logger.info(f" About to Insert GenerativeResults Data {subscription_generative_data.member_id} ") db.session.add(subscription_generative_data) - db.session.flush() + db.session.commit() except IntegrityError as err: logger.error(f" Error inserting GenerativeResults data {err} -- ") raise ValueError(f"Database integrity error: {err}") diff --git a/app/models/members_products_settings.py b/app/models/members_products_settings.py index 70d8827..b8f13c5 100644 --- a/app/models/members_products_settings.py +++ b/app/models/members_products_settings.py @@ -96,6 +96,7 @@ class MembersProductsSettings(db.Model): raise ValueError(f"Reset with ID {members_products_settings_id} does not exist.") update_p.setting_value = setting_value + db.session.commit() return @classmethod diff --git a/app/models/subscription_generative.py b/app/models/subscription_generative.py index 230ae18..dd447a8 100644 --- a/app/models/subscription_generative.py +++ b/app/models/subscription_generative.py @@ -49,12 +49,14 @@ class SubscriptionGenerative(db.Model): logger.info( f"UPDATE SubscriptionGenerative::status subscription_uid = {subscription_uid} status = {status} ") subscription_generative_data = cls.query.filter_by(subscription_uid=str(subscription_uid)).first() - # member_product = cls.query.filter_by(member_id=str(member_id), product_id=str(product_id)).first() + if not subscription_generative_data: logger.error(f"SubscriptionGenerative with Sub UID {subscription_uid} does not exist.") return None - logger.info("INSERT::Point-->") + logger.info("UPDATE STATUS::Point-->") subscription_generative_data.status = status + db.session.commit() + return subscription_generative_data.status @classmethod