From 786b06ae61df043ac129fea2b101acc703dd5541 Mon Sep 17 00:00:00 2001 From: Renato Rosa Date: Wed, 19 Aug 2026 19:40:11 -0300 Subject: [PATCH] Adicionar app/services/document_service.py --- app/services/document_service.py | 114 +++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 app/services/document_service.py diff --git a/app/services/document_service.py b/app/services/document_service.py new file mode 100644 index 0000000..0604e1a --- /dev/null +++ b/app/services/document_service.py @@ -0,0 +1,114 @@ +PETICAO_PROMPT = """ +Você é um advogado especializado. Estruture uma petição inicial completa com: + +1. Endereçamento adequado ao juízo informado. +2. Qualificação das partes. +3. Exposição clara e cronológica dos fatos. +4. Fundamentação jurídica com base na legislação aplicável, doutrina e jurisprudência. +5. Pedidos bem delimitados. +6. Indicação das provas. +7. Valor da causa. +8. Fecho profissional. + +Use linguagem técnica, objetiva e respeitosa. +""" + +PARECER_PROMPT = """ +Elabore um parecer jurídico completo contendo: + +1. Identificação do parecer. +2. Contexto fático. +3. Formulação da questão jurídica. +4. Análise técnica com legislação, doutrina e jurisprudência. +5. Conclusão objetiva. +6. Referências. + +Use linguagem técnica e formal. +""" + +CONTRATO_PROMPT = """ +Elabore um contrato completo com: + +1. Identificação das partes. +2. Objeto claro e preciso. +3. Obrigações de cada parte. +4. Prazos e condições. +5. Penalidades. +6. Regras de rescisão. +7. Foro. +8. Assinaturas. + +Use linguagem contratual formal. +""" + +GENERIC_PROMPT = """ +Elabore um documento jurídico estruturado, com linguagem técnica e clara. +""" + +class DocumentService: + def handle(self, message: str, mode: str, prefs: dict) -> dict: + doc_type = self.detect_doc_type(message) + questions = self.get_questions(doc_type) + prompt = self.build_prompt(doc_type, mode) + + return { + "text": "Vamos gerar uma {}.\n\nResponda:\n\n{}".format( + doc_type, + "\n".join([f"- {q}" for q in questions]) + ), + "doc_type": doc_type, + "questions": questions, + "prompt": prompt + } + + def detect_doc_type(self, message: str) -> str: + m = message.lower() + if "petição" in m: + return "petição inicial" + if "parecer" in m: + return "parecer jurídico" + if "contrato" in m: + return "contrato" + return "documento" + + def get_questions(self, doc_type: str): + if doc_type == "petição inicial": + return [ + "Qual é o juízo competente?", + "Quem é o autor?", + "Quem é o réu?", + "Quais são os fatos?", + "Quais são os fundamentos jurídicos?", + "Quais são os pedidos?", + "Há documentos anexos?", + "Qual o valor da causa?" + ] + if doc_type == "parecer jurídico": + return [ + "Qual é o contexto?", + "Qual é a dúvida jurídica?", + "Há documentos anexos?", + "Qual é o objetivo do parecer?" + ] + if doc_type == "contrato": + return [ + "Quem são as partes?", + "Qual é o objeto?", + "Quais são as obrigações?", + "Qual é o prazo?", + "Há penalidades?", + "Qual é o foro?" + ] + return ["Descreva o objetivo do documento."] + + def build_prompt(self, doc_type: str, mode: str): + if doc_type == "petição inicial": + return PETICAO_PROMPT + if doc_type == "parecer jurídico": + return PARECER_PROMPT + if doc_type == "contrato": + return CONTRATO_PROMPT + return GENERIC_PROMPT + + def chat_like(self, message: str, mode: str, prefs: dict) -> dict: + return {"text": f"[{mode}] Entendi: {message}. Me conta mais ou peça algo específico."}