fix(audit): P2 frontend any→concrete types (181→61), heroicons→lucide-react, missing type exports, toast API, Select options, TaskStatus types; P2-9 hooks.py type annotations

This commit is contained in:
Agent Zero
2026-08-17 22:24:24 +02:00
parent 40fd633917
commit 45ebbee26f
52 changed files with 404 additions and 302 deletions
+2 -9
View File
@@ -6,7 +6,7 @@ import React from 'react';
import { useTranslation } from 'react-i18next';
import { Badge } from '@/components/ui/Badge';
import { Card } from '@/components/ui/Card';
import { useTasks, type Task, type TaskStatus } from '@/api/tasks';
import { useTasks, type Task, type TaskStatus, type TaskFilter } from '@/api/tasks';
import { Clock, AlertCircle, CheckCircle2, Loader2 } from 'lucide-react';
const STATUS_COLUMNS: TaskStatus[] = ['open', 'in_progress', 'review', 'blocked', 'done', 'cancelled'];
@@ -92,14 +92,7 @@ function TaskCard({ task, onSelect }: TaskCardProps) {
}
interface TaskBoardProps {
filter?: {
entity_type?: string;
entity_id?: string;
assignee_type?: string;
assignee_id?: string;
parent_task_id?: string;
task_type?: string;
};
filter?: TaskFilter;
onSelectTask?: (task: Task) => void;
}
+4 -14
View File
@@ -169,13 +169,8 @@ export function TaskDetail({ taskId, onClose }: TaskDetailProps) {
value={task.status}
onChange={(e) => handleStatusChange(e.target.value as TaskStatus)}
className="w-48"
>
{STATUS_OPTIONS.map((s) => (
<option key={s} value={s}>
{statusLabel(t, s)}
</option>
))}
</Select>
options={STATUS_OPTIONS.map((s) => ({ value: s, label: statusLabel(t, s) }))}
/>
</div>
{/* Assignee */}
@@ -189,13 +184,8 @@ export function TaskDetail({ taskId, onClose }: TaskDetailProps) {
value={assigneeType}
onChange={(e) => setAssigneeType(e.target.value as AssigneeType)}
className="w-32"
>
{ASSIGNEE_TYPES.map((at) => (
<option key={at} value={at}>
{t(`tasks.assigneeType${at.charAt(0).toUpperCase() + at.slice(1)}`)}
</option>
))}
</Select>
options={ASSIGNEE_TYPES.map((at) => ({ value: at, label: t(`tasks.assigneeType${at.charAt(0).toUpperCase() + at.slice(1)}`) }))}
/>
</div>
<div>
<label htmlFor="assignee-id" className="block text-sm font-medium text-gray-700">