feat(platform): close AI expense value loop
Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
This commit is contained in:
@@ -59,6 +59,7 @@ def _seed_root_task(
|
||||
)
|
||||
manager = Employee(
|
||||
id="employee-task-manager",
|
||||
tenant_id=tenant_id,
|
||||
employee_no="M-TASK-001",
|
||||
name="李经理",
|
||||
email="manager-task@example.com",
|
||||
@@ -67,6 +68,7 @@ def _seed_root_task(
|
||||
participants = [
|
||||
Employee(
|
||||
id=f"employee-task-participant-{index}",
|
||||
tenant_id=tenant_id,
|
||||
employee_no=f"M-TASK-{index + 1:03d}",
|
||||
name=f"加签经理{index}",
|
||||
email=f"participant-task-{index}@example.com",
|
||||
@@ -76,6 +78,7 @@ def _seed_root_task(
|
||||
]
|
||||
employee = Employee(
|
||||
id="employee-task-owner",
|
||||
tenant_id=tenant_id,
|
||||
employee_no="E-TASK-001",
|
||||
name="张三",
|
||||
email="owner-task@example.com",
|
||||
@@ -84,6 +87,7 @@ def _seed_root_task(
|
||||
occurred_at = datetime.now(UTC) - timedelta(hours=1)
|
||||
claim = ExpenseClaim(
|
||||
id="claim-task-001",
|
||||
tenant_id=tenant_id,
|
||||
claim_no="RE-TASK-001",
|
||||
employee=employee,
|
||||
employee_name=employee.name,
|
||||
@@ -154,6 +158,7 @@ def test_queue_is_tenant_safe_and_admin_has_no_implicit_approval() -> None:
|
||||
|
||||
admin = Employee(
|
||||
id="employee-task-admin",
|
||||
tenant_id="tenant-approval-task",
|
||||
employee_no="A-TASK-001",
|
||||
name="平台管理员",
|
||||
email="admin-task@example.com",
|
||||
|
||||
Reference in New Issue
Block a user