feat: 完成三角色工作台及金租对公Skills全流程演示
This commit is contained in:
@@ -3,6 +3,7 @@ import os
|
||||
import sqlite3
|
||||
import tempfile
|
||||
import unittest
|
||||
from copy import deepcopy
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
from fastapi import FastAPI
|
||||
@@ -10,6 +11,7 @@ from fastapi.testclient import TestClient
|
||||
from api import risk_agent_config as engine
|
||||
from api.risk_agent_alignment import align
|
||||
from api.risk_agent_connectors import execute, validate_query
|
||||
from services.business_demo_database import build_business_demo_database, database_summary
|
||||
|
||||
|
||||
class AlignmentTests(unittest.TestCase):
|
||||
@@ -39,6 +41,29 @@ class AlignmentTests(unittest.TestCase):
|
||||
|
||||
|
||||
class DatabaseTests(unittest.TestCase):
|
||||
def test_multitable_business_database_and_configured_cards(self):
|
||||
with tempfile.TemporaryDirectory() as root:
|
||||
database = build_business_demo_database(Path(root) / "business.sqlite3")
|
||||
summary = database_summary(database)
|
||||
self.assertEqual(len(summary["tables"]), 11)
|
||||
self.assertEqual(summary["tables"]["lease_project"], 3)
|
||||
connection = deepcopy(next(item for item in engine.SEED["connections"] if item["id"] == "conn-business-demo"))
|
||||
connection["database"] = str(database)
|
||||
cards = {item["id"]: item for item in engine.SEED["cards"] if item["id"].startswith("card-business-")}
|
||||
with patch.dict(os.environ, {"XINGBANG_SQLITE_ROOT": root}):
|
||||
project = engine.query_card(cards["card-business-project"], connection, "DEMO-B")
|
||||
finance = engine.query_card(cards["card-business-finance"], connection, "DEMO-B")
|
||||
credit = engine.query_card(cards["card-business-credit"], connection, "DEMO-B")
|
||||
lease = engine.query_card(cards["card-business-lease"], connection, "DEMO-B")
|
||||
repayment = engine.query_card(cards["card-business-repayment"], connection, "DEMO-B")
|
||||
self.assertEqual(project[0]["facility_amount"], 5000)
|
||||
self.assertEqual(len(finance), 2)
|
||||
self.assertIsNone(finance[-1]["operating_cashflow"])
|
||||
self.assertEqual(credit[0]["legal_case_count"], 1)
|
||||
self.assertEqual(lease[0]["lease_total_value"], 5400)
|
||||
self.assertEqual(lease[0]["duplicate_asset_count"], 1)
|
||||
self.assertEqual(repayment[0]["evidence_status"], "缺少最新流水")
|
||||
|
||||
def test_real_sqlite_read_only_and_allowlist(self):
|
||||
with tempfile.TemporaryDirectory() as root:
|
||||
file=Path(root)/"erp.sqlite"
|
||||
|
||||
Reference in New Issue
Block a user