refactor: rule of coverage are in one place
This commit is contained in:
@@ -6,6 +6,10 @@ import { Progress } from "@/components/ui/progress";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { AlertTriangle } from "lucide-react";
|
||||
import { getImportanceColors } from "@/lib/tech-colors";
|
||||
import {
|
||||
COVERAGE_OBJECTIVES,
|
||||
isCoverageBelowObjective,
|
||||
} from "@/lib/evaluation-utils";
|
||||
import {
|
||||
Tooltip,
|
||||
TooltipContent,
|
||||
@@ -41,20 +45,20 @@ export function TeamOverview({
|
||||
const categoriesNeedingAttention = [...categoryCoverage]
|
||||
.map((cat) => {
|
||||
// Pour chaque catégorie, on identifie :
|
||||
// 1. Les compétences incontournables sous-couvertes (< 75%)
|
||||
// 1. Les compétences incontournables sous-couvertes
|
||||
const uncoveredIncontournables = skillGaps.filter(
|
||||
(gap) =>
|
||||
gap.category === cat.category &&
|
||||
gap.importance === "incontournable" &&
|
||||
gap.coverage < 75
|
||||
isCoverageBelowObjective(gap.coverage, gap.importance)
|
||||
);
|
||||
|
||||
// 2. Les compétences majeures sous-couvertes (< 60%)
|
||||
// 2. Les compétences majeures sous-couvertes
|
||||
const uncoveredMajeures = skillGaps.filter(
|
||||
(gap) =>
|
||||
gap.category === cat.category &&
|
||||
gap.importance === "majeure" &&
|
||||
gap.coverage < 60
|
||||
isCoverageBelowObjective(gap.coverage, gap.importance)
|
||||
);
|
||||
|
||||
// Une catégorie nécessite de l'attention si :
|
||||
@@ -81,7 +85,7 @@ export function TeamOverview({
|
||||
attentionScore,
|
||||
};
|
||||
})
|
||||
.filter(Boolean)
|
||||
.filter((cat): cat is NonNullable<typeof cat> => cat !== null)
|
||||
.sort((a, b) => b.attentionScore - a.attentionScore)
|
||||
.slice(0, 3);
|
||||
|
||||
@@ -190,8 +194,7 @@ export function TeamOverview({
|
||||
})
|
||||
.map((skill) => {
|
||||
const colors = getImportanceColors(skill.importance);
|
||||
const target =
|
||||
skill.importance === "incontournable" ? 75 : 60;
|
||||
const target = COVERAGE_OBJECTIVES[skill.importance];
|
||||
return (
|
||||
<Tooltip key={skill.skillId}>
|
||||
<TooltipTrigger>
|
||||
@@ -203,7 +206,10 @@ export function TeamOverview({
|
||||
</span>
|
||||
<span
|
||||
className={
|
||||
skill.coverage < target
|
||||
isCoverageBelowObjective(
|
||||
skill.coverage,
|
||||
skill.importance
|
||||
)
|
||||
? "text-red-400"
|
||||
: "text-slate-400"
|
||||
}
|
||||
@@ -224,7 +230,10 @@ export function TeamOverview({
|
||||
<br />
|
||||
Actuel : {skill.coverage.toFixed(0)}%
|
||||
<br />
|
||||
{skill.coverage < target
|
||||
{isCoverageBelowObjective(
|
||||
skill.coverage,
|
||||
skill.importance
|
||||
)
|
||||
? `Manque ${(
|
||||
target - skill.coverage
|
||||
).toFixed(0)}%`
|
||||
|
||||
Reference in New Issue
Block a user