fix(e7): CI-Gate-Vorbereitung — ruff über app/ von 105 auf 0 Findings bereinigt; 8 echte F821-NameError-Produktionsbugs behoben (external_api stream_chat-Call-Signatur an stream_chat_comm angepasst, agent_runner uuid vor lokalem Import, automation/plugin UserTenant-Import, tasks delete-audit user_id, workflows/engine timedelta, unified_search/contracts Any); py311-kompatibles StepHandler-Alias statt type-Statement; E402/F841 bereinigt; Verifikation 85/89 grün (4 Failures = bekannter Vorbestand BUG-099)
Check Cross-Plugin Imports / check (push) Has been cancelled
Check Cross-Plugin Imports / check (push) Has been cancelled
This commit is contained in:
@@ -7,6 +7,7 @@ import uuid
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.audit import log_audit
|
||||
from app.core.db import get_db
|
||||
from app.deps import get_current_user, require_permission
|
||||
from app.plugins.builtins.tasks import services
|
||||
@@ -126,6 +127,7 @@ async def delete_task(
|
||||
):
|
||||
"""Delete a task (soft-delete)."""
|
||||
tenant_id = uuid.UUID(current_user["tenant_id"])
|
||||
user_id = uuid.UUID(current_user["user_id"])
|
||||
tid = _parse_uuid(task_id, "task_id")
|
||||
deleted = await services.delete_task(db, tenant_id, tid)
|
||||
if not deleted:
|
||||
@@ -261,5 +263,3 @@ async def decompose_goal(
|
||||
if result is None:
|
||||
raise HTTPException(404, detail={"detail": "Goal not found", "code": "not_found"})
|
||||
return result
|
||||
|
||||
from app.core.audit import log_audit
|
||||
@@ -7,7 +7,6 @@ from typing import Any
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
TASK_STATUSES = "^(open|in_progress|review|blocked|done|cancelled)$"
|
||||
TASK_TYPES = "^(todo|approval|follow_up|review|goal|milestone|agent_subtask)$"
|
||||
ASSIGNEE_TYPES = "^(user|agent|group)$"
|
||||
|
||||
@@ -16,12 +16,11 @@ def _to_uuid(val: str | UUID | None) -> UUID | None:
|
||||
return val
|
||||
return uuid.UUID(str(val))
|
||||
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.visibility import apply_visibility_filter
|
||||
from app.plugins.builtins.tasks.models import Task
|
||||
from sqlalchemy import func, select # noqa: E402 — after helper defs by design
|
||||
from sqlalchemy.ext.asyncio import AsyncSession # noqa: E402
|
||||
|
||||
from app.core.visibility import apply_visibility_filter # noqa: E402
|
||||
from app.plugins.builtins.tasks.models import Task # noqa: E402
|
||||
|
||||
# Lifecycle statuses in display order (Kanban columns)
|
||||
STATUS_ORDER = ["open", "in_progress", "review", "blocked", "done", "cancelled"]
|
||||
@@ -307,7 +306,6 @@ async def create_task(
|
||||
entity_id = contact_id
|
||||
# Don't store contact_id in FK column if it's just a polymorphic entity link
|
||||
# — contact_id FK requires a real Contact row. Use entity_id instead.
|
||||
contact_id_for_fk = _to_uuid(contact_id) if contact_id else None
|
||||
|
||||
# Resolve polymorphic creator.
|
||||
creator_type = data.get("creator_type", "user")
|
||||
|
||||
Reference in New Issue
Block a user