46 lines
2.8 KiB
Python
46 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""CHG-061 鉴权矩阵实测:no-token / admin-token / ai-token × saveOrUpdate / aiBatchAdd / uploadBind"""
|
||
import io, sys, json, requests
|
||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||
B = 'http://localhost:8086'
|
||
AI = open('.claude/ai_token.txt').read().strip()
|
||
ADMIN = open('tmp/pw_token_8086.txt').read().strip()
|
||
|
||
def call(name, method, path, token, **kw):
|
||
h = {'Authorization': token} if token else {}
|
||
r = requests.request(method, B + path, headers=h, timeout=30, **kw)
|
||
try:
|
||
d = r.json()
|
||
msg = d.get('message', '')
|
||
if isinstance(msg, str):
|
||
try: msg = msg.encode('latin-1').decode('utf-8')
|
||
except Exception: pass
|
||
print(f'{name:28s} → HTTP {r.status_code} code={d.get("code")} msg={str(msg)[:40]} data={json.dumps(d.get("data"), ensure_ascii=False)[:60]}')
|
||
return d
|
||
except Exception:
|
||
print(f'{name:28s} → HTTP {r.status_code} 非JSON: {r.text[:80]}')
|
||
return None
|
||
|
||
expand_payload = {'storyId': 9130, 'workloadIndex': '5.1', 'numberUnits': 3, 'unitBusinessComplexity': '2.2',
|
||
'technicalComplexityCoefficient': '1.4', 'aiEfficiencyCoefficient': '0.55', 'requirementStatus': 'inProgress'}
|
||
task_payload = {'storyId': 9130, 'tasks': [{'name': '鉴权矩阵验证(可删)', 'type': 'devel', 'assignedTo': 'luoyong',
|
||
'aiEvaluationTime': 0.1, 'planStartDate': '2026-08-06', 'deadline': '2026-08-06'}]}
|
||
open('tmp/_auth_probe.md', 'w').write('# 鉴权矩阵验证\n')
|
||
|
||
print('== 无 token ==')
|
||
call('saveOrUpdate', 'POST', '/zentao/zt-story-expand/saveOrUpdate', None, json=expand_payload)
|
||
call('aiBatchAdd', 'POST', '/zentao/zt-task/aiBatchAdd', None, json=task_payload)
|
||
call('uploadBind', 'POST', '/zentao/common/uploadBind', None,
|
||
data={'objectType': 'testOther', 'objectId': '9130'}, files={'file': ('p.md', open('tmp/_auth_probe.md','rb'))})
|
||
print('== admin token(非ai)==')
|
||
call('saveOrUpdate', 'POST', '/zentao/zt-story-expand/saveOrUpdate', ADMIN, json=expand_payload)
|
||
call('aiBatchAdd', 'POST', '/zentao/zt-task/aiBatchAdd', ADMIN, json=task_payload)
|
||
call('uploadBind', 'POST', '/zentao/common/uploadBind', ADMIN,
|
||
data={'objectType': 'testOther', 'objectId': '9130', 'title': '鉴权矩阵-admin(可删)'}, files={'file': ('p.md', open('tmp/_auth_probe.md','rb'))})
|
||
print('== ai token ==')
|
||
call('saveOrUpdate', 'POST', '/zentao/zt-story-expand/saveOrUpdate', AI, json=expand_payload)
|
||
d = call('aiBatchAdd', 'POST', '/zentao/zt-task/aiBatchAdd', AI, json=task_payload)
|
||
d2 = call('uploadBind', 'POST', '/zentao/common/uploadBind', AI,
|
||
data={'objectType': 'testOther', 'objectId': '9130', 'title': '鉴权矩阵-ai(可删)'}, files={'file': ('p.md', open('tmp/_auth_probe.md','rb'))})
|
||
if d and d.get('data'): print('AI_TASK_ID=', d['data'].get('taskIds'))
|