File size: 5,259 Bytes
f39c319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import app from './src/index';
import * as http from 'http';

const PORT = 3001;

async function runTests() {
  const server = http.createServer(app);
  
  await new Promise<void>((resolve) => {
    server.listen(PORT, () => {
      console.log(`Test server running on port ${PORT}`);
      resolve();
    });
  });

  const baseUrl = `http://localhost:${PORT}/api/agents`;

  try {
    console.log('\n--- 1. Testing API-01: peer-reg-summary ---');
    const payload01 = {
      peer_updates: ["同业A更新了SDK列表", "同业B细化了权限说明"],
      regulatory_updates: ["监管部门发布关于APP最小必要收集的通报"],
      business_line: "retail",
      app_name: "手机银行APP"
    };
    
    let res01 = await fetch(`${baseUrl}/peer-reg-summary`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload01)
    });
    
    // 处理模拟 LLM 随机失败
    while(res01.status === 500) {
        console.log('API-01 遇到了模拟的 5001 错误,正在重试...');
        res01 = await fetch(`${baseUrl}/peer-reg-summary`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload01)
        });
    }

    const peerRegSummary = await res01.json();
    console.log('✅ API-01 Success! Output:', JSON.stringify(peerRegSummary, null, 2));

    console.log('\n--- 2. Testing API-02: policy-rewrite ---');
    const case_context = {
      case_id: "case_001",
      materials: {
        current_policy_text: "本隐私政策适用于手机银行APP。我们收集您的姓名和手机号用于注册。我们可能会申请您的设备权限。我们会把数据共享给第三方SDK以提供服务。",
        prd_text: "PRD说明:包含人脸识别功能,需要获取身份证正反面,并在开户流程中使用相机进行活体检测。消息推送需接入极光SDK。",
        permission_items: [{ name: "相机", purpose: "活体检测与身份证识别", required: true, trigger_page: "开户流程" }],
        sdk_items: [{ name: "极光推送SDK", vendor: "极光", purpose: "消息推送", data_items: ["设备标识符", "网络状态"] }]
      }
    };
    
    const payload02 = {
      case_context,
      peer_reg_summary: peerRegSummary
    };
    
    let res02 = await fetch(`${baseUrl}/policy-rewrite`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload02)
    });

    while(res02.status === 500) {
        console.log('API-02 遇到了模拟的 5001 错误,正在重试...');
        res02 = await fetch(`${baseUrl}/policy-rewrite`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload02)
        });
    }

    const gapAnalysis = await res02.json();
    console.log('✅ API-02 Success! Output:', JSON.stringify(gapAnalysis, null, 2));

    console.log('\n--- 3. Testing API-03: compliance-check ---');
    const payload03 = {
      case_context,
      gap_analysis: gapAnalysis
    };
    
    let res03 = await fetch(`${baseUrl}/compliance-check`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload03)
    });

    while(res03.status === 500) {
        console.log('API-03 遇到了模拟的 5001 错误,正在重试...');
        res03 = await fetch(`${baseUrl}/compliance-check`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload03)
        });
    }

    const complianceCheck = await res03.json();
    console.log('✅ API-03 Success! Output:', JSON.stringify(complianceCheck, null, 2));

    console.log('\n--- 4. Testing API-04: legal-pack ---');
    const payload04 = {
      case_context,
      peer_reg_summary: peerRegSummary,
      gap_analysis: gapAnalysis,
      compliance_check: complianceCheck
    };
    
    let res04 = await fetch(`${baseUrl}/legal-pack`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload04)
    });

    while(res04.status === 500) {
        console.log('API-04 遇到了模拟的 5001 错误,正在重试...');
        res04 = await fetch(`${baseUrl}/legal-pack`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload04)
        });
    }

    const legalPack = await res04.json();
    console.log('✅ API-04 Success! Output:', JSON.stringify(legalPack, null, 2));

    console.log('\n--- 5. Testing Error Handling (Missing Materials) ---');
    const errRes = await fetch(`${baseUrl}/peer-reg-summary`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ app_name: "手机银行" }) // 故意缺少 peer_updates
    });
    const errData = await errRes.json();
    console.log('✅ Error Handling Success! Output:', JSON.stringify(errData, null, 2));

  } catch (error) {
    console.error('Test failed:', error);
  } finally {
    server.close(() => {
      console.log('\nTest server closed.');
      process.exit(0);
    });
  }
}

runTests();