diff --git a/pipeline_service/retrospective_capability.py b/pipeline_service/retrospective_capability.py index ccc056b..8c4e37f 100644 --- a/pipeline_service/retrospective_capability.py +++ b/pipeline_service/retrospective_capability.py @@ -30,12 +30,23 @@ def _get_db(): def _rows_to_dicts(recs, limit=200): out = [] for r in (recs or [])[:limit]: - d = {} - for k, v in vars(r).items(): - if k.startswith('_') or callable(v): + # sqlor 行是 DictObject:dict(rec) 才能取全部列(vars() 只取内部属性 → 空字典, + # 2026-08-31 测试机冒烟实测:project 名空壳即此因)。照抄 feature_capability._rec_to_dict。 + if isinstance(r, dict): + out.append(dict(r)) + continue + try: + out.append(dict(r)) + continue + except (TypeError, ValueError): + pass + if hasattr(r, "to_dict"): + try: + out.append(r.to_dict()) continue - d[k] = v - out.append(d) + except Exception: + pass + out.append({}) return out