You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

90 lines
4.7 KiB

# -*- coding: utf-8 -*-
"""票 11:实测当前库采集商机模块/规则族/自定义视图全部只读接口真实响应 → specimens.json"""
import io, sys, os, json, requests
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
B = 'http://localhost:8080'
UID = {'admin': '739564171091247104', 'A': '744842565802524672',
'B': '744842566742048768', 'C': '744842318024015872'}
A2 = '748556126794022912' # e2e-A-推进-智慧园区二期(子表样例大户)
A1 = '748556125825138688'
POOL_RULE = '748507245062389760' # POOL_RULE_01 发布中
SCHEME_TPL = '748508098259320832' # OPP_SCHEME_TPL_04 发布中
SEED_CARD = '748556146574360576'
TOK = {}
for k, uid in UID.items():
r = requests.get(f'{B}/api/auth/debug/token', params={'userId': uid}, timeout=15)
TOK[k] = r.json()['data']
def call(who, method, path, form=None, params=None):
h = {'Authorization': 'Bearer ' + TOK[who]}
data = None
if form is not None:
h['Content-Type'] = 'application/x-www-form-urlencoded'
data = form
try:
r = requests.request(method, B + path, headers=h, data=data, params=params, timeout=30)
b = r.json()
except Exception as e:
return {'_error': str(e)[:200]}
return b
out = {}
def grab(key, who, method, path, form=None, params=None):
b = call(who, method, path, form, params)
out[key] = {'who': who, 'method': method, 'path': path,
'form': form, 'params': params, 'resp': b}
code = b.get('code') if isinstance(b, dict) else '?'
print(f' {key}: code={code}')
print('== 商机 page 六视图(A 视角) ==')
for v in ['MINE', 'MANAGE', 'PUBLIC_POOL', 'FOLLOWED', 'RECENT', 'PARTICIPATED']:
grab(f'page_{v.lower()}', 'A', 'POST', '/api/opportunity/page',
form={'viewType': v, 'current': 1, 'size': 10})
print('== 详情与主体 ==')
grab('detail', 'A', 'GET', '/api/opportunity/detail', params={'id': A2})
grab('stage_progress', 'A', 'GET', '/api/opportunity/stage/progress', params={'oppId': A2})
grab('stage_history', 'A', 'GET', '/api/opportunity/stage/history', params={'oppId': A2})
grab('convertible_leads', 'A', 'GET', '/api/opportunity/convertible-leads')
print('== 看板 ==')
grab('board_summary', 'A', 'POST', '/api/opportunity/board/stage-summary', form={'viewType': 'MANAGE'})
grab('board_cards', 'A', 'POST', '/api/opportunity/board/cards',
form={'viewType': 'MANAGE', 'current': 1, 'size': 10})
print('== 子表 ==')
P = {'oppId': A2, 'current': 1, 'size': 10}
grab('follow_page', 'A', 'POST', '/api/opportunity/follow/page', form=dict(P))
grab('survey_page', 'A', 'POST', '/api/opportunity/site-survey/page', form=dict(P))
grab('oplog_page', 'A', 'POST', '/api/opportunity/oplog/page', form=dict(P))
grab('customer_list', 'A', 'GET', '/api/opportunity/customer/list', params={'oppId': A2})
grab('team_list', 'A', 'GET', '/api/opportunity/team/list', params={'oppId': A2})
grab('attachment_list', 'A', 'GET', '/api/opportunity/attachment/list', params={'oppId': A2})
grab('card_list', 'A', 'GET', '/api/opportunity/scheme-card/list', params={'oppId': A2})
grab('card_detail', 'A', 'GET', '/api/opportunity/scheme-card/detail', params={'id': SEED_CARD})
grab('selectable_templates', 'A', 'GET', '/api/opportunity/scheme-card/selectable-templates',
params={'oppId': A2})
print('== 规则族(admin) ==')
PF = {'current': 1, 'size': 10}
grab('pool_page', 'admin', 'POST', '/api/rule/opp-pool-rule/page', form=dict(PF))
grab('stage_page', 'admin', 'POST', '/api/rule/opp-stage-template/page', form=dict(PF))
grab('scheme_page', 'admin', 'POST', '/api/rule/opp-scheme-template/page', form=dict(PF))
grab('pool_detail', 'admin', 'GET', '/api/rule/opp-pool-rule/detail', params={'id': POOL_RULE})
grab('scheme_detail', 'admin', 'GET', '/api/rule/opp-scheme-template/detail', params={'id': SCHEME_TPL})
grab('field_defs', 'admin', 'GET', '/api/rule/opp-scheme-template/field-defs')
grab('pool_versions', 'admin', 'GET', '/api/rule/opp-pool-rule/versions', params={'id': POOL_RULE})
# 阶段模板 detail:从 page 结果取种子编码行
rows = (out.get('stage_page', {}).get('resp', {}).get('data', {}) or {}).get('content') or []
seed = next((r for r in rows if r.get('templateCode') == 'OPP_STAGE_TPL_01'), rows[0] if rows else None)
if seed:
grab('stage_detail', 'admin', 'GET', '/api/rule/opp-stage-template/detail', params={'id': seed['id']})
print('== 自定义视图(B 名下有 seed 视图) ==')
grab('view_list', 'B', 'GET', '/api/preference/view/list', params={'scopeKey': 'opportunity'})
dst = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'specimens.json')
json.dump(out, open(dst, 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
print('saved →', dst, f'({len(out)} specimens)')