1010import time
1111import traceback
1212import uuid
13+ from urllib .parse import unquote_plus
1314import boto3
1415from typing import Literal
1516from app .config .config import (
@@ -361,7 +362,9 @@ def initialise_slack(self):
361362 logger .warning ("SKIPPING - Bot is not in any channels. No messages sent." )
362363 return []
363364
364- message_default_text = "I am currently syncing changes to my knowledge base.\n This may take a few minutes."
365+ message_default_text = (
366+ "The documents I use to answer your questions are being updated. " "This will be completed in 10 minutes."
367+ )
365368
366369 # Build blocks for Slack message
367370 blocks = [
@@ -375,28 +378,17 @@ def initialise_slack(self):
375378 {
376379 "type" : "plan" ,
377380 "plan_id" : uuid .uuid4 ().hex ,
378- "title" : "Processing File Changes ..." ,
381+ "title" : "Processing file updates ..." ,
379382 "tasks" : [
380- self .create_task (
381- id = self .fetching_block_id ,
382- title = "Fetching changes" ,
383- details = [],
384- outputs = ["Searching" ],
385- status = "complete" ,
386- ),
387383 self .create_task (
388384 id = self .update_block_id ,
389- title = "Processing File Changes " ,
385+ title = "Processing file updates... " ,
390386 details = [],
391387 outputs = ["Initialising" ],
392388 status = "in_progress" ,
393389 ),
394390 ],
395391 },
396- {
397- "type" : "context" ,
398- "elements" : [{"type" : "plain_text" , "text" : "Please wait up-to 10 minutes for changes to take effect" }],
399- },
400392 ]
401393
402394 return blocks
@@ -477,6 +469,7 @@ def __init__(self):
477469 self .created = 0
478470 self .modified = 0
479471 self .deleted = 0
472+ self .document_names = []
480473
481474 @staticmethod
482475 def is_supported_file_type (file_key ):
@@ -513,27 +506,30 @@ def process_multiple_s3_events(self, records: list, slack_handler: SlackHandler)
513506 self .modified += len ([r for r in records if "ObjectModified" in r .get ("eventName" , "" )])
514507 self .deleted += len ([r for r in records if "ObjectRemoved" in r .get ("eventName" , "" )])
515508
516- total = self .created + self .modified + self .deleted
509+ # Extract document names from records
510+ for r in records :
511+ object_key = r .get ("s3" , {}).get ("object" , {}).get ("key" , "" )
512+ if object_key :
513+ decoded_key = unquote_plus (object_key )
514+ file_name = decoded_key .split ("/" )[- 1 ]
515+ if file_name and file_name not in self .document_names :
516+ self .document_names .append (file_name )
517517
518- counts = [
519- ("created" , self .created ),
520- ("modified" , self .modified ),
521- ("deleted" , self .deleted ),
522- ]
523-
524- # Generate the list only for non-zero values
525- message_list = [f"{ count } files { action } " for action , count in counts if count > 0 ]
526-
527- if message_list and len (message_list ) > 0 :
518+ if self .document_names :
528519 slack_handler .update_task (
529520 id = slack_handler .update_block_id , message = "Update pending" , output_message = "Processing..." , replace = True
530521 )
531- for i , message in enumerate (message_list ):
532- output_message = f"Processed a total of { total } record(s)" if (i + 1 == len (message_list )) else None
522+ for i , name in enumerate (self .document_names ):
523+ total = self .created + self .modified + self .deleted
524+ output_message = (
525+ f"Processed { total } file { 'update' if total == 1 else 'updates' } "
526+ if (i + 1 == len (self .document_names ))
527+ else None
528+ )
533529 slack_handler .update_task (
534- id = slack_handler .update_block_id , message = message , output_message = output_message , replace = (i == 0 )
530+ id = slack_handler .update_block_id , message = name , output_message = output_message , replace = (i == 0 )
535531 )
536- slack_handler .update_task_db (created = self .created , modified = self .modified , deleted = self .deleted )
532+ slack_handler .update_task_db (created = self .created , modified = self .modified , deleted = self .deleted )
537533
538534 @staticmethod
539535 def start_ingestion_job ():
@@ -587,13 +583,6 @@ def process_batched_queue_events(self, slack_handler: SlackHandler, events: list
587583 continue
588584
589585 logger .info (f"Processing { len (sqs_records )} record(s)" )
590- output_message = "Search Complete" if (i + 1 == len (events )) else None
591- slack_handler .update_task (
592- id = slack_handler .fetching_block_id ,
593- message = f"Found { len (sqs_records )} events" ,
594- output_message = output_message ,
595- replace = True ,
596- )
597586
598587 self .process_multiple_sqs_events (slack_handler , sqs_records )
599588
0 commit comments