1212logging .basicConfig (level = logging .INFO , encoding = 'utf-8' )
1313bp = Blueprint ('dendogram' , __name__ , url_prefix = '/dendogram' )
1414
15-
16-
17-
1815@bp .route ('/generate' , methods = ['POST' ])
1916def generate_dendogram ():
2017 preprocessing = request .args .get ('preprocessing' , 'false' ).lower () == 'true'
2118 affinity = request .args .get ('affinity' , 'bert' )
2219 linkage = request .args .get ('linkage' , 'average' )
2320 metric = request .args .get ('metric' , 'cosine' )
24- threshold = float (request .args .get ('threshold' , None ))
21+ threshold = float (request .args .get ('threshold' , 0.2 ))
2522 object_weight = float (request .args .get ('obj-weight' , 0.25 ))
2623 verb_weight = float (request .args .get ('verb-weight' , 0.75 ))
2724 app_name = request .args .get ('app_name' , 'unknown' )
@@ -91,7 +88,7 @@ def generate_dendogram_from_csv():
9188 return make_response ("CSV file is required" , 400 )
9289
9390 file = request .files ['file' ]
94- if not file .filename .endswith ('.model_embeddings ' ):
91+ if not file .filename .endswith ('.csv ' ):
9592 return make_response ("File must be a CSV" , 400 )
9693
9794 features = []
@@ -110,14 +107,26 @@ def generate_dendogram_from_csv():
110107 "app_name" : app_name ,
111108 "features" : features
112109 }
110+ try :
111+ dendogram_file = dendogram_service .generate_dendogram (preprocessing ,
112+ affinity ,
113+ metric ,
114+ linkage ,
115+ threshold ,
116+ object_weight ,
117+ verb_weight ,
118+ request_content )
119+
120+ if threshold is not None :
121+ visualization_service .generate_dendrogram_visualization (dendogram_file )
113122
114- dendrogram_file = dendogram_service .generate_dendogram (preprocessing ,
115- affinity ,
116- metric ,
117- linkage ,
118- threshold ,
119- object_weight ,
120- verb_weight ,
121- request_content )
123+ return jsonify ({
124+ "message" : "Dendrogram generated successfully" ,
125+ "features" : features ,
126+ "dendrogram_path" : dendogram_file ,
127+ }), 200
128+ except ValueError as e :
129+ return make_response ({"error" : str (e )}, 400 )
130+ except Exception as e :
131+ return make_response ({"error" : "An unexpected error occurred" , "details" : str (e )}, 500 )
122132
123- return jsonify ({"message" : "Dendrogram generated successfully" , "dendrogram_path" : dendrogram_file }), 200
0 commit comments