id: 1 unit: function ProductSearch() file: src/application/ui/src/App.js start line: 47 end line: 811 size: 613 LOC McCabe index: 115 number of parameters: 0 id: 2 unit: function ProductDetails() file: src/application/ui/src/components/ProductDetails.js start line: 74 end line: 555 size: 358 LOC McCabe index: 58 number of parameters: 0 id: 3 unit: export default function RuleManager() file: src/application/ui/src/components/RuleManager.js start line: 58 end line: 236 size: 158 LOC McCabe index: 26 number of parameters: 0 id: 4 unit: func() file: src/psearch/serving/internal/services/spanner_service.go start line: 261 end line: 443 size: 148 LOC McCabe index: 42 number of parameters: 1 id: 5 unit: func() file: src/psearch/serving/internal/services/spanner_service.go start line: 144 end line: 258 size: 91 LOC McCabe index: 10 number of parameters: 1 id: 6 unit: func() file: src/psearch/serving/internal/services/embedding_service.go start line: 56 end line: 160 size: 79 LOC McCabe index: 11 number of parameters: 1 id: 7 unit: def consolidate_results() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 60 LOC McCabe index: 17 number of parameters: 0 id: 8 unit: def run() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 51 LOC McCabe index: 15 number of parameters: 1 id: 9 unit: def store_products_batch() file: src/psearch/ingestion/services/spanner_service.py start line: 0 end line: 0 size: 48 LOC McCabe index: 8 number of parameters: 3 id: 10 unit: def generate_product_content() file: src/psearch/ingestion/services/gemini_service.py start line: 0 end line: 0 size: 48 LOC McCabe index: 28 number of parameters: 3 id: 11 unit: func() file: src/psearch/serving/internal/services/spanner_service.go start line: 85 end line: 141 size: 43 LOC McCabe index: 8 number of parameters: 1 id: 12 unit: func Load() file: src/psearch/serving/internal/config/config.go start line: 48 end line: 106 size: 43 LOC McCabe index: 9 number of parameters: 0 id: 13 unit: def process_products() file: tooling/enrichment/main.py start line: 0 end line: 0 size: 43 LOC McCabe index: 12 number of parameters: 0 id: 14 unit: def get_image_description() file: tooling/enrichment/gemini_client.py start line: 0 end line: 0 size: 42 LOC McCabe index: 2 number of parameters: 3 id: 15 unit: def _prepare_product_for_spanner() file: src/psearch/ingestion/services/spanner_service.py start line: 0 end line: 0 size: 34 LOC McCabe index: 18 number of parameters: 3 id: 16 unit: func main() file: src/psearch/serving/cmd/server/main.go start line: 34 end line: 82 size: 34 LOC McCabe index: 6 number of parameters: 0 id: 17 unit: def fetch_processed_products_from_firestore() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 34 LOC McCabe index: 9 number of parameters: 0 id: 18 unit: evictLeastUsedItem() file: src/application/ui/src/components/ProductImage.js start line: 111 end line: 155 size: 32 LOC McCabe index: 10 number of parameters: 0 id: 19 unit: func() file: src/psearch/serving/internal/api/handlers.go start line: 69 end line: 109 size: 31 LOC McCabe index: 6 number of parameters: 1 id: 20 unit: def get_failed_products() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 29 LOC McCabe index: 4 number of parameters: 1 id: 21 unit: def fetch_failed_products_from_firestore() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 29 LOC McCabe index: 7 number of parameters: 0 id: 22 unit: def store_product() file: src/psearch/ingestion/services/spanner_service.py start line: 0 end line: 0 size: 28 LOC McCabe index: 3 number of parameters: 4 id: 23 unit: function getProcessedUrl() file: src/application/ui/src/components/ProductImage.js start line: 218 end line: 248 size: 25 LOC McCabe index: 6 number of parameters: 1 id: 24 unit: def process_single_product() file: tooling/enrichment/main.py start line: 0 end line: 0 size: 24 LOC McCabe index: 7 number of parameters: 1 id: 25 unit: def generate_image() file: tooling/enrichment/imagen_client.py start line: 0 end line: 0 size: 21 LOC McCabe index: 3 number of parameters: 2 id: 26 unit: def _get_image_bytes_from_url() file: src/psearch/gen_ai/services/marketing_service.py start line: 0 end line: 0 size: 20 LOC McCabe index: 5 number of parameters: 2 id: 27 unit: def _get_image_bytes_from_url() file: src/psearch/gen_ai/services/enrichiment_service.py start line: 0 end line: 0 size: 20 LOC McCabe index: 5 number of parameters: 2 id: 28 unit: set() file: src/application/ui/src/components/ProductImage.js start line: 56 end line: 83 size: 19 LOC McCabe index: 5 number of parameters: 2 id: 29 unit: def generate_embeddings_batch() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 17 LOC McCabe index: 4 number of parameters: 2 id: 30 unit: func SetupRouter() file: src/psearch/serving/internal/api/routes.go start line: 26 end line: 49 size: 17 LOC McCabe index: 2 number of parameters: 2 id: 31 unit: func NewController() file: src/psearch/serving/internal/api/handlers.go start line: 39 end line: 59 size: 16 LOC McCabe index: 3 number of parameters: 1 id: 32 unit: func() file: src/psearch/serving/internal/services/spanner_service.go start line: 65 end line: 82 size: 15 LOC McCabe index: 4 number of parameters: 1 id: 33 unit: func LoggerMiddleware() file: src/psearch/serving/internal/api/middleware.go start line: 27 end line: 48 size: 15 LOC McCabe index: 1 number of parameters: 0 id: 34 unit: isAvailable: hasAvailableOptions() file: src/application/ui/src/components/AIFilterSuggestion.js start line: 355 end line: 372 size: 15 LOC McCabe index: 2 number of parameters: 2 id: 35 unit: def mark_product_failed() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 15 LOC McCabe index: 2 number of parameters: 3 id: 36 unit: module.exports = function() file: src/application/ui/src/setupProxy.js start line: 19 end line: 35 size: 14 LOC McCabe index: 2 number of parameters: 1 id: 37 unit: def start_product_processing() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 14 LOC McCabe index: 2 number of parameters: 3 id: 38 unit: def extract_product_data() file: src/psearch/ingestion/services/bigquery_service.py start line: 0 end line: 0 size: 13 LOC McCabe index: 3 number of parameters: 2 id: 39 unit: func NewSpannerService() file: src/psearch/serving/internal/services/spanner_service.go start line: 40 end line: 55 size: 13 LOC McCabe index: 2 number of parameters: 3 id: 40 unit: def __init__() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 12 LOC McCabe index: 1 number of parameters: 1 id: 41 unit: def _prepare_product_text() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 12 LOC McCabe index: 1 number of parameters: 3 id: 42 unit: def write_to_bigquery() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 12 LOC McCabe index: 3 number of parameters: 2 id: 43 unit: def _parse_response() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 11 LOC McCabe index: 2 number of parameters: 2 id: 44 unit: def _parse_response() file: src/psearch/gen_ai/services/marketing_service.py start line: 0 end line: 0 size: 11 LOC McCabe index: 6 number of parameters: 2 id: 45 unit: def __init__() file: src/psearch/ingestion/services/spanner_service.py start line: 0 end line: 0 size: 10 LOC McCabe index: 3 number of parameters: 2 id: 46 unit: func NewEmbeddingService() file: src/psearch/serving/internal/services/embedding_service.go start line: 41 end line: 53 size: 10 LOC McCabe index: 2 number of parameters: 2 id: 47 unit: async createRule() file: src/application/ui/src/services/ruleService.js start line: 65 end line: 78 size: 10 LOC McCabe index: 1 number of parameters: 1 id: 48 unit: def fetch_bigquery_data() file: tooling/enrichment/main.py start line: 0 end line: 0 size: 10 LOC McCabe index: 2 number of parameters: 1 id: 49 unit: def __init__() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 3 id: 50 unit: def __init__() file: src/psearch/gen_ai/services/imagen_service.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 3 id: 51 unit: def __init__() file: src/psearch/gen_ai/services/marketing_service.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 3 id: 52 unit: def __init__() file: src/psearch/gen_ai/services/enrichiment_service.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 3 id: 53 unit: def complete_product_processing() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 4 id: 54 unit: def upload_to_gcs() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 9 LOC McCabe index: 1 number of parameters: 2 id: 55 unit: def _init_embedding_client() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 8 LOC McCabe index: 1 number of parameters: 1 id: 56 unit: def generate_image() file: src/psearch/gen_ai/services/imagen_service.py start line: 0 end line: 0 size: 8 LOC McCabe index: 1 number of parameters: 0 id: 57 unit: def generate_content() file: src/psearch/gen_ai/services/marketing_service.py start line: 0 end line: 0 size: 8 LOC McCabe index: 1 number of parameters: 0 id: 58 unit: async getRules() file: src/application/ui/src/services/ruleService.js start line: 48 end line: 58 size: 8 LOC McCabe index: 2 number of parameters: 0 id: 59 unit: async updateRule() file: src/application/ui/src/services/ruleService.js start line: 86 end line: 96 size: 8 LOC McCabe index: 2 number of parameters: 2 id: 60 unit: async checkHealth() file: src/application/ui/src/services/ruleService.js start line: 115 end line: 123 size: 8 LOC McCabe index: 1 number of parameters: 0 id: 61 unit: constructor() file: src/application/ui/src/components/ProductImage.js start line: 25 end line: 32 size: 8 LOC McCabe index: 1 number of parameters: 1 id: 62 unit: getStats() file: src/application/ui/src/components/ProductImage.js start line: 181 end line: 188 size: 8 LOC McCabe index: 1 number of parameters: 0 id: 63 unit: def is_product_processed() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 8 LOC McCabe index: 5 number of parameters: 2 id: 64 unit: def __init__() file: src/psearch/ingestion/services/gemini_service.py start line: 0 end line: 0 size: 7 LOC McCabe index: 1 number of parameters: 3 id: 65 unit: func getEnv() file: src/psearch/serving/internal/config/config.go start line: 109 end line: 115 size: 7 LOC McCabe index: 2 number of parameters: 2 id: 66 unit: def _build_prompt() file: src/psearch/gen_ai/services/marketing_service.py start line: 0 end line: 0 size: 7 LOC McCabe index: 1 number of parameters: 0 id: 67 unit: markAsRecentlyUsed() file: src/application/ui/src/components/ProductImage.js start line: 160 end line: 169 size: 7 LOC McCabe index: 2 number of parameters: 1 id: 68 unit: clear() file: src/application/ui/src/components/ProductImage.js start line: 193 end line: 199 size: 7 LOC McCabe index: 1 number of parameters: 0 id: 69 unit: Using mock data() file: src/application/ui/src/components/RuleManager.js start line: 201 end line: 207 size: 7 LOC McCabe index: 1 number of parameters: 1 id: 70 unit: def fetch_all_products_from_bigquery() file: tooling/enrichment/consolidate_results.py start line: 0 end line: 0 size: 7 LOC McCabe index: 1 number of parameters: 0 id: 71 unit: def _get_image_content() file: src/psearch/ingestion/services/gemini_service.py start line: 0 end line: 0 size: 6 LOC McCabe index: 2 number of parameters: 2 id: 72 unit: def main() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 6 LOC McCabe index: 1 number of parameters: 0 id: 73 unit: def process_query() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 6 LOC McCabe index: 1 number of parameters: 0 id: 74 unit: def _build_gemini_image_prompt() file: src/psearch/gen_ai/services/imagen_service.py start line: 0 end line: 0 size: 6 LOC McCabe index: 1 number of parameters: 0 id: 75 unit: def upload_to_gcs() file: tooling/enrichment/main.py start line: 0 end line: 0 size: 6 LOC McCabe index: 1 number of parameters: 2 id: 76 unit: def get_last_processed_id() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 6 LOC McCabe index: 2 number of parameters: 1 id: 77 unit: def update_last_processed_id() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 6 LOC McCabe index: 1 number of parameters: 2 id: 78 unit: def get_product_text() file: src/psearch/ingestion/main.py start line: 0 end line: 0 size: 5 LOC McCabe index: 2 number of parameters: 3 id: 79 unit: func() file: src/psearch/serving/internal/services/spanner_service.go start line: 58 end line: 62 size: 5 LOC McCabe index: 2 number of parameters: 1 id: 80 unit: func() file: src/psearch/serving/internal/api/handlers.go start line: 62 end line: 66 size: 5 LOC McCabe index: 1 number of parameters: 1 id: 81 unit: def __init__() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 5 LOC McCabe index: 1 number of parameters: 0 id: 82 unit: def _build_filter_questions_prompt() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 5 LOC McCabe index: 1 number of parameters: 0 id: 83 unit: def process_enrichment() file: src/psearch/gen_ai/services/enrichiment_service.py start line: 0 end line: 0 size: 5 LOC McCabe index: 1 number of parameters: 0 id: 84 unit: async deleteRule() file: src/application/ui/src/services/ruleService.js start line: 103 end line: 109 size: 5 LOC McCabe index: 1 number of parameters: 1 id: 85 unit: Enhanced Image() file: src/application/ui/src/components/ContentDiff.js start line: 84 end line: 88 size: 5 LOC McCabe index: 1 number of parameters: 1 id: 86 unit: get() file: src/application/ui/src/components/ProductImage.js start line: 37 end line: 44 size: 5 LOC McCabe index: 2 number of parameters: 1 id: 87 unit: markAsLoaded() file: src/application/ui/src/components/ProductImage.js start line: 88 end line: 92 size: 5 LOC McCabe index: 3 number of parameters: 1 id: 88 unit: function logCacheStats() file: src/application/ui/src/components/ProductImage.js start line: 253 end line: 259 size: 5 LOC McCabe index: 2 number of parameters: 0 id: 89 unit: has() file: src/application/ui/src/components/ProductImage.js start line: 49 end line: 51 size: 3 LOC McCabe index: 1 number of parameters: 1 id: 90 unit: markAsVisible() file: src/application/ui/src/components/ProductImage.js start line: 97 end line: 99 size: 3 LOC McCabe index: 1 number of parameters: 1 id: 91 unit: markAsInvisible() file: src/application/ui/src/components/ProductImage.js start line: 104 end line: 106 size: 3 LOC McCabe index: 1 number of parameters: 1 id: 92 unit: size() file: src/application/ui/src/components/ProductImage.js start line: 174 end line: 176 size: 3 LOC McCabe index: 1 number of parameters: 0 id: 93 unit: title: formatFilterName() file: src/application/ui/src/App.js start line: 280 end line: 282 size: 3 LOC McCabe index: 1 number of parameters: 1 id: 94 unit: def __init__() file: tooling/enrichment/firestore_client.py start line: 0 end line: 0 size: 3 LOC McCabe index: 1 number of parameters: 3 id: 95 unit: def __init__() file: src/psearch/ingestion/services/bigquery_service.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 2 id: 96 unit: def _create_natural_question_for_filter() file: src/psearch/gen_ai/services/conversational_search_service.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 0 id: 97 unit: def _build_prompt() file: src/psearch/gen_ai/services/enrichiment_service.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 0 id: 98 unit: def _parse_response() file: src/psearch/gen_ai/services/enrichiment_service.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 0 id: 99 unit: def init_imagen() file: tooling/enrichment/imagen_client.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 1 id: 100 unit: def init_gemini() file: tooling/enrichment/gemini_client.py start line: 0 end line: 0 size: 2 LOC McCabe index: 1 number of parameters: 1