47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
export type ComparisonPolicy = {
|
|
revision: number;
|
|
configured: boolean;
|
|
minimum_proposals: number;
|
|
minimum_evaluators: number;
|
|
weights: Record<
|
|
'price' | 'quality' | 'delivery' | 'history' | 'payment',
|
|
number
|
|
>;
|
|
};
|
|
|
|
export const comparisonCriteria = {
|
|
price: 'Preço',
|
|
quality: 'Qualidade',
|
|
delivery: 'Prazo de entrega',
|
|
history: 'Histórico',
|
|
payment: 'Condições de pagamento',
|
|
};
|
|
|
|
export function ComparisonPolicySummary({
|
|
policy,
|
|
}: {
|
|
policy: ComparisonPolicy;
|
|
}) {
|
|
return (
|
|
<div className="space-y-2 text-sm">
|
|
<p>
|
|
{policy.configured
|
|
? `Regra da empresa · revisão ${policy.revision}`
|
|
: 'Regras iniciais de compatibilidade'}
|
|
: mínimo de {policy.minimum_proposals} propostas elegíveis de
|
|
fornecedores distintos e {policy.minimum_evaluators} avaliações
|
|
independentes por proposta.
|
|
</p>
|
|
<p>
|
|
{Object.entries(comparisonCriteria)
|
|
.map(
|
|
([key, label]) =>
|
|
`${label} ${policy.weights[key as keyof typeof comparisonCriteria]}%`,
|
|
)
|
|
.join(' · ')}
|
|
.
|
|
</p>
|
|
</div>
|
|
);
|
|
}
|