1414from ..logging_config import get_logger
1515from ..path_fix import PathFixRoute
1616from ..key_store import upsert_account_keys_in_store
17- from ..wechat_decrypt import WeChatDatabaseDecryptor , decrypt_wechat_databases , scan_account_databases_from_path
17+ from ..wechat_decrypt import (
18+ WeChatDatabaseDecryptor ,
19+ build_decrypt_result_message ,
20+ decrypt_wechat_databases ,
21+ scan_account_databases_from_path ,
22+ )
1823
1924logger = get_logger (__name__ )
2025
@@ -76,6 +81,7 @@ async def decrypt_databases(request: DecryptRequest):
7681 "message" : results ["message" ],
7782 "processed_files" : results ["processed_files" ],
7883 "failed_files" : results ["failed_files" ],
84+ "failure_details" : results .get ("failure_details" , []),
7985 "account_results" : results .get ("account_results" , {}),
8086 }
8187
@@ -159,6 +165,7 @@ async def generate_progress():
159165 fail_count = 0
160166 processed_files : list [str ] = []
161167 failed_files : list [str ] = []
168+ failure_details : list [dict ] = []
162169 account_results : dict = {}
163170 overall_current = 0
164171
@@ -181,6 +188,7 @@ async def generate_progress():
181188 account_success = 0
182189 account_processed : list [str ] = []
183190 account_failed : list [str ] = []
191+ account_failure_details : list [dict ] = []
184192
185193 for db_info in dbs :
186194 if await request .is_disconnected ():
@@ -232,11 +240,20 @@ async def generate_progress():
232240 status = "success"
233241 msg = "解密成功"
234242 else :
243+ failure_detail = {
244+ "account" : account ,
245+ "file" : db_path ,
246+ "name" : db_name ,
247+ "code" : str (decryptor .last_error_code or "" ).strip (),
248+ "reason" : str (decryptor .last_error_message or "" ).strip () or "解密失败" ,
249+ }
235250 account_failed .append (db_path )
251+ account_failure_details .append (failure_detail )
236252 failed_files .append (db_path )
253+ failure_details .append (failure_detail )
237254 fail_count += 1
238255 status = "fail"
239- msg = "解密失败"
256+ msg = failure_detail [ "reason" ]
240257
241258 yield _sse (
242259 {
@@ -261,6 +278,7 @@ async def generate_progress():
261278 "output_dir" : str (account_output_dir ),
262279 "processed_files" : account_processed ,
263280 "failed_files" : account_failed ,
281+ "failure_details" : account_failure_details ,
264282 }
265283
266284 # Build cache table (keep behavior consistent with the POST endpoint).
@@ -307,9 +325,15 @@ async def generate_progress():
307325 "success_count" : success_count ,
308326 "failure_count" : total_databases - success_count ,
309327 "output_directory" : str (base_output_dir .absolute ()),
310- "message" : f"解密完成: 成功 { success_count } /{ total_databases } " ,
328+ "message" : build_decrypt_result_message (
329+ total_databases = total_databases ,
330+ success_count = success_count ,
331+ failed_count = total_databases - success_count ,
332+ failure_details = failure_details ,
333+ ),
311334 "processed_files" : processed_files ,
312335 "failed_files" : failed_files ,
336+ "failure_details" : failure_details ,
313337 "account_results" : account_results ,
314338 }
315339
0 commit comments