23 lines
1.2 KiB
Plaintext
23 lines
1.2 KiB
Plaintext
# pbl_evidence/api/pbl_evidence_aggregate.dspy
|
||
# M5b 契约②:证据聚合(四类计数 + 覆盖度 + 分组 + 时间水位)。
|
||
# Q-OPEN-10:预览 / Playtest 数据默认剔除,需显式 include_preview=true 才纳入。
|
||
# dspy 铁律:无 import、无 ServerEnv()、无 f-string、显式 return;
|
||
# 日志/异常一律字符串拼接(dspy-file-implementation-spec 硬规则 6)。
|
||
debug('pbl_evidence/api/pbl_evidence_aggregate.dspy: START params_kw=' + str(dict(params_kw)))
|
||
|
||
try:
|
||
kw = dict(params_kw)
|
||
for flag in ('include_preview', 'include_student_private'):
|
||
if isinstance(kw.get(flag), str):
|
||
kw[flag] = kw[flag].strip().lower() in ('1', 'true', 'yes', 'y')
|
||
res = await pbl_evidence_aggregate(**kw)
|
||
status = 'OK' if res.get('ok') else 'ERROR'
|
||
debug('pbl_evidence_aggregate.dspy: DONE total=' + str(res.get('total')) +
|
||
' groups=' + str(len(res.get('groups') or [])))
|
||
result = {'status': status, 'data': res, 'message': res.get('message') or '',
|
||
'total': res.get('total')}
|
||
return result
|
||
except Exception as e:
|
||
error('pbl_evidence_aggregate.dspy: FAIL ' + str(format_exc()))
|
||
return {'status': 'ERROR', 'data': None, 'message': str(e)}
|