refactor: revew all design of services, clients, deadcode, ...

This commit is contained in:
Julien Froidefond
2025-08-24 22:03:15 +02:00
parent f4dcc89c11
commit 6fba622003
63 changed files with 969 additions and 1846 deletions

View File

@@ -6,8 +6,8 @@ import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import { Skeleton } from "@/components/ui/skeleton";
import { TeamMember } from "@/services/admin-management-service";
import { AdminManagementService } from "@/services/admin-management-service";
import { TeamMember } from "@/clients/domains/admin-client";
import { adminClient } from "@/clients";
import { useToast } from "@/hooks/use-toast";
interface TeamMembersModalProps {
@@ -41,7 +41,7 @@ export function TeamMembersModal({
setIsLoading(true);
setError(null);
try {
const membersData = await AdminManagementService.getTeamMembers(teamId);
const membersData = await adminClient.getTeamMembers(teamId);
setMembers(membersData);
} catch (err: any) {
setError(err.message || "Erreur lors du chargement des membres");
@@ -59,7 +59,7 @@ export function TeamMembersModal({
setDeletingMemberId(memberId);
try {
await AdminManagementService.removeTeamMember(teamId, memberId);
await adminClient.removeTeamMember(teamId, memberId);
// Mettre à jour la liste locale
setMembers((prev) => prev.filter((member) => member.id !== memberId));

View File

@@ -2,7 +2,7 @@
import { useState } from "react";
import { Team, SkillCategory } from "@/lib/types";
import { TeamStats, DirectionStats } from "@/services/admin-service";
import { TeamStats, DirectionStats } from "@/lib/admin-types";
import { TeamDetailModal } from "../team-detail/team-detail-modal";
import { AdminHeader } from "../utils/admin-header";
import { AdminOverviewCards } from "./admin-overview-cards";

View File

@@ -2,7 +2,7 @@
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Users, Building2 } from "lucide-react";
import { TeamStats, DirectionStats } from "@/services/admin-service";
import { TeamStats, DirectionStats } from "@/lib/admin-types";
import { DirectionOverview, TeamStatsCard } from "@/components/admin";
interface AdminContentTabsProps {

View File

@@ -2,7 +2,7 @@
import { Users, Target, Building2, UserCheck } from "lucide-react";
import { Team, SkillCategory } from "@/lib/types";
import { TeamStats, DirectionStats } from "@/services/admin-service";
import { TeamStats, DirectionStats } from "@/lib/admin-types";
interface AdminOverviewCardsProps {
teams: Team[];

View File

@@ -11,7 +11,7 @@ import {
} from "lucide-react";
import { TreeCategoryHeader, TreeItemRow } from "@/components/admin";
import { TechIcon } from "@/components/icons/tech-icon";
import { Skill } from "@/services/admin-management-service";
import { Skill } from "@/clients/domains/admin-client";
interface SkillsListProps {
filteredSkillsByCategory: Record<string, Skill[]>;

View File

@@ -1,7 +1,7 @@
"use client";
import React, { useState, useEffect } from "react";
import { TeamStats, TeamMember } from "@/services/admin-service";
import { TeamStats, TeamMember } from "@/lib/admin-types";
import { TeamDetailHeader } from "./team-detail-header";
import { TeamMetricsCards } from "./team-metrics-cards";
import { TeamDetailTabs } from "./team-detail-tabs";

View File

@@ -13,7 +13,7 @@ import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { Users, ExternalLink, Download, Eye } from "lucide-react";
import { TeamMember } from "@/services/admin-service";
import { TeamMember } from "@/lib/admin-types";
interface TeamDetailModalProps {
isOpen: boolean;

View File

@@ -5,7 +5,7 @@ import { TeamOverviewTab } from "./team-overview-tab";
import { TeamSkillsTab } from "./team-skills-tab";
import { TeamMembersTab } from "./team-members-tab";
import { TeamInsightsTab } from "./team-insights-tab";
import { TeamStats, TeamMember } from "@/services/admin-service";
import { TeamStats, TeamMember } from "@/lib/admin-types";
interface SkillAnalysis {
skillName: string;

View File

@@ -9,7 +9,7 @@ import {
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import { User, Award, BookOpen, X } from "lucide-react";
import { TeamMember } from "@/services/admin-service";
import { TeamMember } from "@/lib/admin-types";
interface TeamMemberModalProps {
isOpen: boolean;

View File

@@ -1,7 +1,7 @@
"use client";
import { User, Award, BookOpen } from "lucide-react";
import { TeamMember } from "@/services/admin-service";
import { TeamMember } from "@/lib/admin-types";
interface TeamMembersTabProps {
members: TeamMember[];

View File

@@ -1,7 +1,7 @@
"use client";
import { BarChart3, Target, Star } from "lucide-react";
import { TeamStats } from "@/services/admin-service";
import { TeamStats } from "@/lib/admin-types";
import { TechIcon } from "@/components/icons/tech-icon";
interface SkillAnalysis {

View File

@@ -1,9 +1,13 @@
"use client";
import { Users, Building2 } from "lucide-react";
import { TreeCategoryHeader, TreeItemRow, TeamMetrics } from "@/components/admin";
import {
TreeCategoryHeader,
TreeItemRow,
TeamMetrics,
} from "@/components/admin";
import { Team as TeamType } from "@/lib/types";
import { TeamStats } from "@/services/admin-service";
import { TeamStats } from "@/lib/admin-types";
interface TeamsListProps {
filteredTeamsByDirection: Record<string, TeamType[]>;

View File

@@ -4,7 +4,7 @@ import { useState } from "react";
import { Plus, Building2 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { SkillCategory, Team as TeamType } from "@/lib/types";
import { TeamStats } from "@/services/admin-service";
import { TeamStats } from "@/lib/admin-types";
import { TreeViewPage } from "../management/tree-view-page";
import { useTreeView } from "@/hooks/use-tree-view";
import { useFormDialog } from "@/hooks/use-form-dialog";
@@ -27,9 +27,16 @@ export function TeamsManagementPage({
const [searchTerm, setSearchTerm] = useState("");
const [isMembersModalOpen, setIsMembersModalOpen] = useState(false);
const [selectedTeam, setSelectedTeam] = useState<TeamType | null>(null);
const { isCreateDialogOpen, isEditDialogOpen, openCreateDialog, closeCreateDialog, openEditDialog, closeEditDialog } = useFormDialog();
const {
isCreateDialogOpen,
isEditDialogOpen,
openCreateDialog,
closeCreateDialog,
openEditDialog,
closeEditDialog,
} = useFormDialog();
const {
teams: localTeams,
teamStats: localTeamStats,

View File

@@ -16,7 +16,7 @@ import {
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
import { Team } from "@/services/admin-management-service";
import { Team } from "@/clients/domains/admin-client";
interface UserFormData {
firstName: string;
@@ -98,7 +98,11 @@ export function UserFormDialog({
Annuler
</Button>
<Button onClick={onSubmit} disabled={isSubmitting}>
{isSubmitting ? "En cours..." : title.includes("Créer") ? "Créer" : "Mettre à jour"}
{isSubmitting
? "En cours..."
: title.includes("Créer")
? "Créer"
: "Mettre à jour"}
</Button>
</div>
</div>

View File

@@ -3,7 +3,7 @@
import { useState } from "react";
import { Users, Building2 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Team } from "@/services/admin-management-service";
import { Team } from "@/clients/domains/admin-client";
import { TreeViewPage } from "../management/tree-view-page";
import { useTreeView } from "@/hooks/use-tree-view";
import { useFormDialog } from "@/hooks/use-form-dialog";
@@ -17,9 +17,10 @@ interface UsersManagementPageProps {
export function UsersManagementPage({ teams }: UsersManagementPageProps) {
const [searchTerm, setSearchTerm] = useState("");
const { isCreateDialogOpen, openCreateDialog, closeCreateDialog } = useFormDialog();
const { isCreateDialogOpen, openCreateDialog, closeCreateDialog } =
useFormDialog();
const {
users,
isLoading,

View File

@@ -3,7 +3,7 @@
import { Button } from "@/components/ui/button";
import { Users, Target, Building2, Filter } from "lucide-react";
import { Team } from "@/lib/types";
import { TeamStats } from "@/services/admin-service";
import { TeamStats } from "@/lib/admin-types";
import { MultiSelectFilter } from "./multi-select-filter";
interface AdminFiltersProps {