feat: 完成三角色工作台及金租对公Skills全流程演示
This commit is contained in:
@@ -15,16 +15,48 @@ def seed_components():
|
||||
{"id": "corporate.cashflow", "name": "现金流完整性", "engine": "required", "inputs": ["financial.operating_cashflow"], "code": "financial.cashflow.missing", "title": "经营现金流资料缺失"},
|
||||
{"id": "corporate.assets", "name": "设备清单存在重复项", "engine": "duplicate", "inputs": ["lease.duplicate_count"], "field": "lease.duplicate_count", "code": "lease.asset.duplicate"},
|
||||
{"id": "corporate.coverage", "name": "租赁物价值覆盖测算", "engine": "ratio", "inputs": ["lease.total_value", "facility.amount"], "numerator": "lease.total_value", "denominator": "facility.amount", "output": "metrics.coverage"},
|
||||
{"id": "corporate.analysis", "name": "项目综合核查", "engine": "model", "inputs": [], "allowed_tools": sorted(TOOLS), "native_skills": ["risk_evidence/SKILL.md"], "instructions": "逐项核查本次自然语言要求与语义规则,输出有证据的核查建议,不作审批结论。"},
|
||||
{"id": "corporate.analysis", "name": "金租对公业务综合核查", "engine": "model", "inputs": [], "allowed_tools": sorted(TOOLS), "native_skills": ["risk_evidence/SKILL.md", "financial-leasing-lessee-review/SKILL.md", "financial-leasing-asset-review/SKILL.md", "financial-leasing-sale-leaseback-review/SKILL.md", "financial-leasing-guarantee-concentration/SKILL.md"], "instructions": "按金租对公业务方法逐项核查承租人、租赁物、售后回租适用性、增信与集中度,输出有证据的核查建议,不作审批结论。"},
|
||||
]
|
||||
items = [dict(s, kind="skill") for s in skills]
|
||||
items.append({"id": "review.analysis", "kind": "skill", "name": "独立评审复核", "engine": "model", "inputs": [],
|
||||
"allowed_tools": sorted(TOOLS), "native_skills": ["risk_evidence/SKILL.md", "financial-leasing-lessee-review/SKILL.md", "financial-leasing-asset-review/SKILL.md", "financial-leasing-sale-leaseback-review/SKILL.md", "financial-leasing-guarantee-concentration/SKILL.md", "financial-leasing-review-report/SKILL.md"],
|
||||
"instructions": "按金租对公业务全链路独立复核送审事实、计算、风险回应与方案,只引用授权证据,明确分歧和待决策事项。"})
|
||||
items += [{"id": "demo.coverage", "kind": "rule_set", "name": "演示覆盖规则", "conditions": [{"code": "lease.coverage.below_demo_threshold", "field": "metrics.coverage", "operator": "lt", "threshold": "1.2", "title": "租赁物价值覆盖低于演示阈值", "suggestion": "比较融资金额情景;120%仅为演示口径"}]}]
|
||||
for template_id, name in (("due-diligence", "尽调草稿"), ("review", "评审底稿"), ("committee", "上会摘要")):
|
||||
items.append({"id": "template." + template_id, "kind": "template", "name": name,
|
||||
"sections": [{"id": "overview", "title": "项目事实", "dependencies": ["facility.amount", "lease.total_value"]},
|
||||
{"id": "findings", "title": "待核实事项", "dependencies": ["*"]},
|
||||
{"id": "judgment", "title": "核查意见与建议", "dependencies": ["*"]}]})
|
||||
items.append({"id": "corporate.default", "kind": "plan", "name": "对公送审前检查", "skills": [s["id"] for s in skills], "rules": ["demo.coverage"], "template": "template.due-diligence", "legacy_plan_id": "plan-default", "budget": {"timeout_seconds": 120, "max_tool_calls": 12}, "dependencies": []})
|
||||
items += [
|
||||
{"id": "template.ai-pre-review", "kind": "template", "name": "AI预审报告(业务提交前)",
|
||||
"audience": ["manager"], "sections": [
|
||||
{"id": "overview", "title": "一、项目概况", "dependencies": ["facility.amount", "lease.total_value"]},
|
||||
{"id": "completeness", "title": "二、资料完整性", "dependencies": ["*"]},
|
||||
{"id": "financial", "title": "三、财务与现金流", "dependencies": ["financial.total_assets", "financial.total_liabilities", "financial.operating_cashflow"]},
|
||||
{"id": "findings", "title": "四、主要风险与证据", "dependencies": ["*"]},
|
||||
{"id": "manager_response", "title": "五、客户经理说明与补件", "dependencies": ["*"]},
|
||||
{"id": "judgment", "title": "六、提交前建议", "dependencies": ["*"]}]},
|
||||
{"id": "template.independent-review", "kind": "template", "name": "对公项目独立评审报告",
|
||||
"audience": ["reviewer"], "sections": [
|
||||
{"id": "overview", "title": "一、项目与授信概况", "dependencies": ["facility.amount", "lease.total_value"]},
|
||||
{"id": "verification", "title": "二、资料与数据复核", "dependencies": ["*"]},
|
||||
{"id": "financial", "title": "三、财务、现金流与偿债能力", "dependencies": ["*"]},
|
||||
{"id": "scenario", "title": "四、方案与增信分析", "dependencies": ["facility.amount", "lease.total_value"]},
|
||||
{"id": "findings", "title": "五、风险分歧与缓释措施", "dependencies": ["*"]},
|
||||
{"id": "judgment", "title": "六、主审员独立意见", "dependencies": ["*"]}]},
|
||||
{"id": "template.committee-brief", "kind": "template", "name": "上会审议摘要",
|
||||
"audience": ["reviewer"], "sections": [
|
||||
{"id": "overview", "title": "项目摘要", "dependencies": ["*"]},
|
||||
{"id": "findings", "title": "核心风险", "dependencies": ["*"]},
|
||||
{"id": "scenario", "title": "建议方案", "dependencies": ["*"]},
|
||||
{"id": "judgment", "title": "待决策事项", "dependencies": ["*"]}]},
|
||||
]
|
||||
items += [
|
||||
{"id": "corporate.default", "kind": "plan", "name": "对公送审前检查(兼容)", "audience": ["manager"], "run_kind": "pre_review", "skills": [s["id"] for s in skills], "rules": ["demo.coverage"], "template": "template.due-diligence", "legacy_plan_id": "plan-default", "budget": {"timeout_seconds": 120, "max_tool_calls": 12}, "dependencies": []},
|
||||
{"id": "corporate.pre-review", "kind": "plan", "name": "客户经理AI预审", "audience": ["manager"], "run_kind": "pre_review", "skills": [s["id"] for s in skills], "rules": ["demo.coverage"], "template": "template.ai-pre-review", "legacy_plan_id": "plan-default", "budget": {"timeout_seconds": 120, "max_tool_calls": 12}, "dependencies": []},
|
||||
{"id": "corporate.independent-review", "kind": "plan", "name": "评审员独立复核", "audience": ["reviewer"], "run_kind": "independent_review", "skills": [s["id"] for s in skills if s["id"] != "corporate.analysis"] + ["review.analysis"], "rules": ["demo.coverage"], "template": "template.independent-review", "legacy_plan_id": "plan-default", "budget": {"timeout_seconds": 180, "max_tool_calls": 18}, "dependencies": []},
|
||||
{"id": "corporate.business-sql", "kind": "plan", "name": "多表业务库AI预审", "audience": ["manager"], "run_kind": "pre_review", "skills": [s["id"] for s in skills if s["id"] != "corporate.coverage"], "rules": ["demo.coverage"], "template": "template.ai-pre-review", "legacy_plan_id": "plan-business-sql", "budget": {"timeout_seconds": 120, "max_tool_calls": 12}, "dependencies": []},
|
||||
]
|
||||
return items
|
||||
|
||||
|
||||
@@ -84,13 +116,14 @@ def validate(body):
|
||||
|
||||
|
||||
def seed(db):
|
||||
if listing(db, "release"):
|
||||
return
|
||||
for item in seed_components():
|
||||
body = normalize(dict(item, status="published"), "system-demo")
|
||||
validate(body)
|
||||
put(db, "component_version", dict(body, id=body["id"] + "@" + body["version"], component_id=body["id"]), immutable=True)
|
||||
put(db, "release", {"id": body["id"], "version_id": body["id"] + "@" + body["version"], "scope": body["scope"]})
|
||||
version_id = body["id"] + "@" + body["version"]
|
||||
if not any(v["id"] == version_id for v in listing(db, "component_version")):
|
||||
put(db, "component_version", dict(body, id=version_id, component_id=body["id"]), immutable=True)
|
||||
if not any(r["id"] == body["id"] for r in listing(db, "release")):
|
||||
put(db, "release", {"id": body["id"], "version_id": version_id, "scope": body["scope"]})
|
||||
|
||||
|
||||
def resolve(db, component_id):
|
||||
|
||||
Reference in New Issue
Block a user