Spaces:
Paused
Paused
Update app.py via AI Editor
Browse files
app.py
CHANGED
|
@@ -181,6 +181,7 @@ def process_document(action, selected_filename=None, chat_input=None, rfp_decode
|
|
| 181 |
if chat_input:
|
| 182 |
prompt += f"User additional instructions: {chat_input}\n"
|
| 183 |
prompt += f"\nFile Name: {selected_filename}\n\n"
|
|
|
|
| 184 |
result = gemini_generate_content(prompt, file_id=doc_fileid, chat_input=chat_input)
|
| 185 |
if result and not result.startswith("Error"):
|
| 186 |
docx_bytes = save_shredded_as_docx(result, selected_filename)
|
|
@@ -270,41 +271,8 @@ def process_document(action, selected_filename=None, chat_input=None, rfp_decode
|
|
| 270 |
|
| 271 |
findings_content = uploaded_documents[selected_filename]
|
| 272 |
proposal_text = proposals[selected_proposal_filename]
|
| 273 |
-
findings_fileid = uploaded_documents_fileid.get(selected_filename)
|
| 274 |
-
proposal_fileid = proposals_fileid.get(selected_proposal_filename)
|
| 275 |
-
|
| 276 |
-
# Ensure both findings and proposal are uploaded as files in Gemini
|
| 277 |
-
if not findings_fileid:
|
| 278 |
-
findings_bytes = None
|
| 279 |
-
if selected_filename in shredded_documents:
|
| 280 |
-
findings_bytes = shredded_documents[selected_filename]
|
| 281 |
-
elif selected_filename in uploaded_documents_bytes:
|
| 282 |
-
findings_bytes = uploaded_documents_bytes[selected_filename]
|
| 283 |
-
else:
|
| 284 |
-
findings_bytes = save_compliance_as_docx(findings_content, selected_filename)
|
| 285 |
-
if findings_bytes:
|
| 286 |
-
try:
|
| 287 |
-
findings_fileid = upload_to_gemini_file(findings_bytes, selected_filename)
|
| 288 |
-
if findings_fileid:
|
| 289 |
-
uploaded_documents_fileid[selected_filename] = findings_fileid
|
| 290 |
-
logging.info(f"Findings/Compliance doc {selected_filename} uploaded to Gemini for recover.")
|
| 291 |
-
except Exception as e:
|
| 292 |
-
logging.error(f"Failed to upload findings doc {selected_filename} for recover: {e}")
|
| 293 |
-
|
| 294 |
-
if not proposal_fileid:
|
| 295 |
-
proposal_bytes = save_proposal_as_docx(proposals[selected_proposal_filename], selected_proposal_filename)
|
| 296 |
-
if proposal_bytes:
|
| 297 |
-
try:
|
| 298 |
-
proposal_fileid = upload_to_gemini_file(proposal_bytes, selected_proposal_filename)
|
| 299 |
-
if proposal_fileid:
|
| 300 |
-
proposals_fileid[selected_proposal_filename] = proposal_fileid
|
| 301 |
-
logging.info(f"Proposal doc {selected_proposal_filename} uploaded to Gemini for recover.")
|
| 302 |
-
except Exception as e:
|
| 303 |
-
logging.error(f"Failed to upload proposal doc {selected_proposal_filename} for recover: {e}")
|
| 304 |
-
|
| 305 |
-
logging.info(f"Recovery: fixing proposal [{selected_proposal_filename}] based on findings [{selected_filename}]")
|
| 306 |
prompt = (
|
| 307 |
-
"You are a proposal compliance recovery expert. Use the findings and recommendations table and the original proposal response provided
|
| 308 |
"Address ONLY those sections of the proposal that have a finding and a recommendation for improvement. "
|
| 309 |
"Do NOT change sections that are marked as fully compliant or already fully address the requirements. "
|
| 310 |
"For each section that needs fixing, revise it in the proposal to address the recommendation for compliance or to strengthen the response. "
|
|
@@ -314,14 +282,10 @@ def process_document(action, selected_filename=None, chat_input=None, rfp_decode
|
|
| 314 |
if chat_input:
|
| 315 |
prompt += f"User additional instructions: {chat_input}\n"
|
| 316 |
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
if findings_fileid:
|
| 320 |
-
file_ids.append(findings_fileid)
|
| 321 |
-
if proposal_fileid:
|
| 322 |
-
file_ids.append(proposal_fileid)
|
| 323 |
|
| 324 |
-
result = gemini_generate_content(prompt,
|
| 325 |
if result and not result.startswith("Error"):
|
| 326 |
base_name = os.path.splitext(selected_proposal_filename)[0]
|
| 327 |
recovered_docx_name = f"{base_name}_recovered.docx"
|
|
|
|
| 181 |
if chat_input:
|
| 182 |
prompt += f"User additional instructions: {chat_input}\n"
|
| 183 |
prompt += f"\nFile Name: {selected_filename}\n\n"
|
| 184 |
+
prompt += doc_content
|
| 185 |
result = gemini_generate_content(prompt, file_id=doc_fileid, chat_input=chat_input)
|
| 186 |
if result and not result.startswith("Error"):
|
| 187 |
docx_bytes = save_shredded_as_docx(result, selected_filename)
|
|
|
|
| 271 |
|
| 272 |
findings_content = uploaded_documents[selected_filename]
|
| 273 |
proposal_text = proposals[selected_proposal_filename]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
prompt = (
|
| 275 |
+
"You are a proposal compliance recovery expert. Use the findings and recommendations table and the original proposal response provided below. "
|
| 276 |
"Address ONLY those sections of the proposal that have a finding and a recommendation for improvement. "
|
| 277 |
"Do NOT change sections that are marked as fully compliant or already fully address the requirements. "
|
| 278 |
"For each section that needs fixing, revise it in the proposal to address the recommendation for compliance or to strengthen the response. "
|
|
|
|
| 282 |
if chat_input:
|
| 283 |
prompt += f"User additional instructions: {chat_input}\n"
|
| 284 |
|
| 285 |
+
prompt += f"\n---\nFindings and Recommendations Table ({selected_filename}):\n{findings_content}\n"
|
| 286 |
+
prompt += f"\n---\nOriginal Proposal Document ({selected_proposal_filename}):\n{proposal_text}\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 287 |
|
| 288 |
+
result = gemini_generate_content(prompt, file_id=None, chat_input=chat_input)
|
| 289 |
if result and not result.startswith("Error"):
|
| 290 |
base_name = os.path.splitext(selected_proposal_filename)[0]
|
| 291 |
recovered_docx_name = f"{base_name}_recovered.docx"
|