#!/usr/bin/env python # -*- coding: utf-8 -*- """验证所有7个接口是否正常工作""" import sys from pathlib import Path # 添加项目根目录到 Python 路径 sys.path.insert(0, str(Path(__file__).parent)) def test_interfaces(): """测试所有接口""" from services.token_service import TokenService from services.file_service import FileService from services.statement_service import StatementService from utils.error_simulator import ErrorSimulator print("=" * 60) print("Interface Alignment Verification Test") print("=" * 60) # 1. 验证 TokenService print("\n[1/6] TokenService initialization...") token_svc = TokenService() print(" [OK] TokenService initialized") # 2. 验证 FileService print("\n[2/6] FileService initialization...") file_svc = FileService() print(" [OK] FileService initialized") # 3. 验证 StatementService print("\n[3/6] StatementService initialization...") stmt_svc = StatementService() print(" [OK] StatementService initialized") # 4. 验证错误码 print("\n[4/6] Error codes verification...") assert "40100" in ErrorSimulator.ERROR_CODES, "Error code 40100 not found" assert ErrorSimulator.ERROR_CODES["40100"]["message"] == "未知异常", "Error message incorrect" print(" [OK] Error code 40100 added") # 5. 验证响应模板文件 print("\n[5/6] Response template files verification...") import json from pathlib import Path responses_dir = Path("config/responses") # 检查 token.json with open(responses_dir / "token.json", encoding='utf-8') as f: token_data = json.load(f) assert isinstance(token_data["success_response"]["data"]["analysisType"], int), "analysisType should be integer" print(" [OK] token.json format correct (analysisType is integer)") # 检查 upload_status.json assert (responses_dir / "upload_status.json").exists(), "upload_status.json not found" print(" [OK] upload_status.json created") # 检查 bank_statement.json with open(responses_dir / "bank_statement.json", encoding='utf-8') as f: stmt_data = json.load(f) assert len(stmt_data["success_response"]["data"]["bankStatementList"]) > 0, "bankStatementList is empty" print(" [OK] bank_statement.json format correct") # 6. 验证 FileRecord 字段 print("\n[6/6] FileRecord fields verification...") from services.file_service import FileRecord record = FileRecord( log_id=10001, group_id=1000, file_name="test.csv" ) # 检查所有必需字段是否存在 required_fields = [ 'account_no_list', 'enterprise_name_list', 'bank_name', 'real_bank_name', 'template_name', 'data_type_info', 'file_size', 'download_file_name', 'file_package_id', 'file_upload_by', 'file_upload_by_user_name', 'file_upload_time', 'le_id', 'login_le_id', 'log_type', 'log_meta', 'lost_header', 'rows', 'source', 'total_records', 'is_split', 'trx_date_start_id', 'trx_date_end_id' ] for field in required_fields: assert hasattr(record, field), f"FileRecord missing field: {field}" print(" [OK] FileRecord contains all {} required fields".format(len(required_fields))) print("\n" + "=" * 60) print("[SUCCESS] All verifications passed!") print("=" * 60) print("\nInterface List:") print("1. POST /account/common/getToken") print("2. POST /watson/api/project/remoteUploadSplitFile") print("3. POST /watson/api/project/getJZFileOrZjrcuFile") print("4. POST /watson/api/project/upload/getpendings") print("5. GET /watson/api/project/bs/upload [NEW]") print("6. POST /watson/api/project/batchDeleteUploadFile") print("7. POST /watson/api/project/getBSByLogId") print("\nNext Steps:") print("- Run: python main.py") print("- Visit: http://localhost:8000/docs") print("- Test all 7 interfaces") if __name__ == "__main__": test_interfaces()