mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-04 03:27:12 -05:00 
			
		
		
		
	Invalidate llm suggestion cache on doc save
This commit is contained in:
		
							parent
							
								
									767118fa8a
								
							
						
					
					
						commit
						377dcc39f5
					
				@ -122,7 +122,7 @@ def get_llm_suggestion_cache(
 | 
				
			|||||||
    doc_key = get_suggestion_cache_key(document_id)
 | 
					    doc_key = get_suggestion_cache_key(document_id)
 | 
				
			||||||
    data: SuggestionCacheData = cache.get(doc_key)
 | 
					    data: SuggestionCacheData = cache.get(doc_key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if data and data.classifier_version == 1000 and data.classifier_hash == backend:
 | 
					    if data and data.classifier_hash == backend:
 | 
				
			||||||
        return data
 | 
					        return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return None
 | 
					    return None
 | 
				
			||||||
@ -152,6 +152,19 @@ def set_llm_suggestions_cache(
 | 
				
			|||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def invalidate_llm_suggestions_cache(
 | 
				
			||||||
 | 
					    document_id: int,
 | 
				
			||||||
 | 
					) -> None:
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Invalidate the LLM suggestions cache for a specific document and backend.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    doc_key = get_suggestion_cache_key(document_id)
 | 
				
			||||||
 | 
					    data: SuggestionCacheData = cache.get(doc_key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if data:
 | 
				
			||||||
 | 
					        cache.delete(doc_key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_metadata_cache_key(document_id: int) -> str:
 | 
					def get_metadata_cache_key(document_id: int) -> str:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Returns the basic key for a document's metadata
 | 
					    Returns the basic key for a document's metadata
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,7 @@ from guardian.shortcuts import remove_perm
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from documents import matching
 | 
					from documents import matching
 | 
				
			||||||
from documents.caching import clear_document_caches
 | 
					from documents.caching import clear_document_caches
 | 
				
			||||||
 | 
					from documents.caching import invalidate_llm_suggestions_cache
 | 
				
			||||||
from documents.file_handling import create_source_path_directory
 | 
					from documents.file_handling import create_source_path_directory
 | 
				
			||||||
from documents.file_handling import delete_empty_directories
 | 
					from documents.file_handling import delete_empty_directories
 | 
				
			||||||
from documents.file_handling import generate_unique_filename
 | 
					from documents.file_handling import generate_unique_filename
 | 
				
			||||||
@ -525,6 +526,15 @@ def update_filename_and_move_files(
 | 
				
			|||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@receiver(models.signals.post_save, sender=Document)
 | 
				
			||||||
 | 
					def update_llm_suggestions_cache(sender, instance, **kwargs):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Invalidate the LLM suggestions cache when a document is saved.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    # Invalidate the cache for the document
 | 
				
			||||||
 | 
					    invalidate_llm_suggestions_cache(instance.pk)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# should be disabled in /src/documents/management/commands/document_importer.py handle
 | 
					# should be disabled in /src/documents/management/commands/document_importer.py handle
 | 
				
			||||||
@receiver(models.signals.post_save, sender=CustomField)
 | 
					@receiver(models.signals.post_save, sender=CustomField)
 | 
				
			||||||
def check_paths_and_prune_custom_fields(sender, instance: CustomField, **kwargs):
 | 
					def check_paths_and_prune_custom_fields(sender, instance: CustomField, **kwargs):
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user