import json import logging import dspy from dotenv import load_dotenv from sqlmodel import Session from app.config import settings from app.db import engine from app.writer.common import ( jira_issue_to_support_ticket, load_jira_issue, create_confluence_page_for_kb_document, ) from app.writer.prompt import TargetLanguage from app.models import JiraSite from app.models.jira_site import JiraSiteConfig from app.models.kb_generate_task import KBGenerateConfig from app.repositories.jira_site import jira_site_repo from app.writer.openai_writer import ticket_to_kb_issue_case from tests.writer.common import get_support_ticket_for_test load_dotenv() logger = logging.getLogger(__name__) lm = dspy.LM("openai/gpt-4o", api_key=settings.OPENAI_API_KEY) dspy.configure(lm=lm) def test_jira_issue_to_support_ticket(): test_jira_site_id = 2 test_jira_issue_key = "TICKET-2610" with Session(engine) as session: jira_site = session.get(JiraSite, test_jira_site_id) assert jira_site is not None jira_site_config = JiraSiteConfig.model_validate(jira_site.config) jira_issue = load_jira_issue(session, test_jira_site_id, test_jira_issue_key) support_ticket = jira_issue_to_support_ticket(jira_issue, jira_site_config) print("Support ticket:\n") print(json.dumps(support_ticket.model_dump(), indent=4, ensure_ascii=False)) def test_ticket_to_kb_issue_case(): test_jira_site_id = 2 test_jira_issue_key = "TICKET-2616" dry_run = False support_ticket = get_support_ticket_for_test( jira_site_id=test_jira_site_id, jira_issue_key=test_jira_issue_key ) support_ticket_json = json.dumps( support_ticket.model_dump(), indent=4, ensure_ascii=False ) logger.info(f"Support Ticket:\n{support_ticket_json}") kb_issue_case = ticket_to_kb_issue_case( support_ticket=support_ticket, target_language=TargetLanguage.CHINESE ) kb_issue_case_json = json.dumps( kb_issue_case.model_dump(), indent=4, ensure_ascii=False ) logger.info(f"KB Issue Case:\n{kb_issue_case_json}") if dry_run: return with Session(engine) as session: jira_site = jira_site_repo.must_get(session, test_jira_site_id) site_config = JiraSiteConfig.model_validate(jira_site.config) task_config = KBGenerateConfig(**site_config.model_dump()) page = create_confluence_page_for_kb_document( session, kb_issue_case, task_config ) logger.info(f"Created confluence page: {page.link}")