export interface Review { id: number; name: string; surname?: string; profession: string; text: string; rating: number; avatar: { initial: string; color: string; }; date: string; votesCount: number; isHelpful: boolean; } const reviewsRaw = [ { id: 1, name: "Алексей М.", profession: "Предприниматель", text: "Помогли вернуть права после того, как инспектор незаконно составил протокол за встречку. Юрист нашел кучу ошибок в схеме ДТП. Огромное спасибо!", rating: 5, date: "2024-03-15", votesCount: 24, isHelpful: true }, { id: 2, name: "Екатерина П.", profession: "Бухгалтер", text: "Страховая выплатила копейки по ОСАГО. Обратилась сюда, сделали независимую экспертизу и через суд взыскали еще 120 тысяч. Профессионалы!", rating: 5, date: "2024-03-10", votesCount: 18, isHelpful: true }, { id: 3, name: "Игорь С.", profession: "IT-специалист", text: "Грамотно разобрали сложное ДТП на перекрестке. Доказали, что я не виноват, хотя ГИБДД изначально решило иначе. Лучшие в Сургуте.", rating: 5, date: "2024-03-05", votesCount: 31, isHelpful: true }, { id: 4, name: "Марина К.", profession: "Менеджер", text: "Обратилась по вопросу возврата прав после лишения. Всё сделали быстро и профессионально. Через 2 месяца права уже были у меня. Рекомендую!", rating: 4, date: "2024-02-28", votesCount: 15, isHelpful: true }, { id: 5, name: "Дмитрий В.", profession: "Инженер", text: "Были проблемы со страховой после ДТП. Юристы помогли составить претензию, потом представляли интересы в суде. Выиграли дело полностью.", rating: 5, date: "2024-02-20", votesCount: 22, isHelpful: true }, { id: 6, name: "Ольга Н.", profession: "Врач", text: "Купила б/у авто с проблемами, которые не были указаны при продаже. Юристы помогли вернуть деньги через суд. Очень благодарна за помощь!", rating: 5, date: "2024-02-15", votesCount: 27, isHelpful: true }, { id: 7, name: "Сергей Т.", profession: "Водитель", text: "Спор со страховой длился полгода. Сам не мог ничего добиться. Обратился сюда - ребята за 2 месяца решили вопрос в мою пользу. Супер!", rating: 4, date: "2024-02-08", votesCount: 19, isHelpful: true }, { id: 8, name: "Анна Р.", profession: "Учитель", text: "Помогли оспорить штраф с камеры, который пришел ошибочно. Юрист быстро разобрался в ситуации и подготовил все документы. Спасибо!", rating: 5, date: "2024-02-01", votesCount: 12, isHelpful: false }, { id: 9, name: "Виктор Л.", profession: "Предприниматель", text: "Обратился по вопросу компенсации после ДТП. Страховая занижала выплату в 3 раза. Сделали экспертизу и через суд добились справедливой суммы.", rating: 5, date: "2024-01-25", votesCount: 35, isHelpful: true } ]; const colors = [ "bg-blue-100 text-blue-600", "bg-teal-100 text-teal-600", "bg-orange-100 text-orange-600", "bg-pink-100 text-pink-600", "bg-purple-100 text-purple-600", "bg-indigo-100 text-indigo-600", "bg-green-100 text-green-600", "bg-yellow-100 text-yellow-600", "bg-red-100 text-red-600" ]; export const reviewsData: Review[] = reviewsRaw.map(review => { const initial = review.name.charAt(0).toUpperCase(); const color = colors[initial.charCodeAt(0) % colors.length]; return { ...review, avatar: { initial, color } }; }); export const votingSummary = (() => { const totalReviews = reviewsData.length; const totalVotes = reviewsData.reduce((sum, review) => sum + review.votesCount, 0); const totalRating = reviewsData.reduce((sum, review) => sum + review.rating, 0); const averageRating = totalReviews > 0 ? parseFloat((totalRating / totalReviews).toFixed(1)) : 0; const ratingDistribution = reviewsData.reduce((acc, review) => { acc[review.rating] = (acc[review.rating] || 0) + 1; return acc; }, {} as Record); return { averageRating, totalVotes, totalReviews, ratingDistribution }; })();