feat(v2): 完善配置中心与可替换轨迹质检并联动预审依据

This commit is contained in:
2026-10-01 17:13:02 +08:00
parent 1adbe16cb3
commit e604d177cb
42 changed files with 1285 additions and 83 deletions
+11 -3
View File
@@ -20,6 +20,9 @@ router = APIRouter(prefix='/api/xingbang/risk-agent/project-assistant/library',
def service():
svc = ProjectAssistantService()
library.initialize(svc.db_path)
from services.catalog_configuration import seed_fact_source
with svc.connect() as db:
seed_fact_source(db)
return svc
@@ -125,10 +128,15 @@ def cards(project_id: str, request: Request):
with service().connect() as db:
project(db, request, project_id)
released = [registry.resolve(db, p['id']) for p in store.listing(db, 'release')]
drafts = store.listing(db, 'component_draft', project_id)
published = {(r['id'],r['version']) for r in released}
drafts = [r for r in store.listing(db, 'component_draft', project_id) if (r.get('component_id'),r['version']) not in published]
items = [r for r in released + drafts if r.get('scope') == 'demo'
and r.get('kind') in ('skill', 'rule_set', 'data_card')
and r.get('kind') in ('skill', 'rule_set', 'data_card', 'template')
and r.get('project_id') in (None, '', project_id) and r.get('id') != 'review.analysis']
from services.catalog_configuration import hidden
items = [dict(r, hidden=hidden(db, r.get('component_id') or r['id'])) for r in items if r.get('audience') != ['reviewer']]
if request.state.identity['role'] != 'admin':
items = [r for r in items if r['status']=='published' and not r['hidden']]
for row in items:
if row['kind'] == 'skill':
row['package'] = skill_packages.standard_package(db, row)
@@ -210,7 +218,7 @@ def plan_components(plan_id: str, project_id: str, request: Request):
if frozen['plan'].get('project_id'):
check_project(request, frozen['plan']['project_id'])
return {'plan': frozen['plan'], 'skills': frozen['skills'], 'rules': frozen['rules'],
'cards': frozen.get('legacy_cards', []), 'content_hash': frozen['content_hash']}
'cards': frozen.get('legacy_cards', []), 'template': frozen['template'], 'content_hash': frozen['content_hash']}
return translate(action)
@router.get('/model-settings')