Files
sfera/src/graphql/resolvers/index.ts
Veronika Smirnova 6b425d075f Унификация UI раздела Партнеры и создание системы документирования
🎨 Унификация UI:
- Полная унификация визуала вкладок Рефералы и Мои контрагенты
- Исправлены React Hooks ошибки в sidebar.tsx
- Убрана лишняя обертка glass-card в partners-dashboard.tsx
- Исправлена цветовая схема (purple → yellow)
- Табличный формат вместо карточного grid-layout
- Компактные блоки статистики (4 метрики в ряд)
- Правильная прозрачность glass-morphism эффектов

📚 Документация:
- Переименован referral-system-rules.md → partners-rules.md
- Детальные UI/UX правила в partners-rules.md
- Правила унификации в visual-design-rules.md
- Обновлен current-session.md
- Создан development-diary.md

🚀 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 15:38:23 +03:00

97 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { resolvers as oldResolvers } from '../resolvers'
import { JSONScalar, DateTimeScalar } from '../scalars'
import { authResolvers } from './auth'
import { employeeResolvers } from './employees'
import { logisticsResolvers } from './logistics'
import { referralResolvers } from './referrals'
import { suppliesResolvers } from './supplies'
// Типы для резолверов
interface ResolverObject {
Query?: Record<string, unknown>
Mutation?: Record<string, unknown>
[key: string]: unknown
}
// Функция для объединения резолверов
const mergeResolvers = (...resolvers: ResolverObject[]): ResolverObject => {
const result: ResolverObject = {
Query: {},
Mutation: {},
}
for (const resolver of resolvers) {
if (resolver?.Query) {
Object.assign(result.Query, resolver.Query)
}
if (resolver?.Mutation) {
Object.assign(result.Mutation, resolver.Mutation)
}
// Объединяем другие типы резолверов (например, Employee, Organization и т.д.)
for (const [key, value] of Object.entries(resolver)) {
if (key !== 'Query' && key !== 'Mutation') {
if (!result[key]) {
result[key] = {}
}
if (typeof value === 'object' && value !== null) {
Object.assign(result[key], value)
}
}
}
}
return result
}
// Временно импортируем старые резолверы для частей, которые еще не вынесены
// TODO: Постепенно убрать это после полного рефакторинга
// Объединяем новые модульные резолверы с остальными старыми
const mergedResolvers = mergeResolvers(
// Скалярные типы
{
JSON: JSONScalar,
DateTime: DateTimeScalar,
},
// Временно добавляем старые резолверы ПЕРВЫМИ, чтобы новые их перезаписали
{
Query: (() => {
const { myEmployees: _myEmployees, logisticsPartners: _logisticsPartners, pendingSuppliesCount: _pendingSuppliesCount, myReferralLink: _myReferralLink, myPartnerLink: _myPartnerLink, myReferralStats: _myReferralStats, myReferrals: _myReferrals, ...filteredQuery } = oldResolvers.Query || {}
return filteredQuery
})(),
Mutation: {
...oldResolvers.Mutation,
// Исключаем уже вынесенные Mutation
sendSmsCode: undefined,
// verifySmsCode: undefined, // НЕ исключаем - пока в старых резолверах
verifyInn: undefined,
// registerFulfillmentOrganization: undefined, // НЕ исключаем - резолвер нужен!
createEmployee: undefined,
updateEmployee: undefined,
deleteEmployee: undefined,
assignLogisticsToSupply: undefined,
logisticsConfirmOrder: undefined,
logisticsRejectOrder: undefined,
},
// Остальные типы пока оставляем из старых резолверов
User: oldResolvers.User,
Organization: oldResolvers.Organization,
Product: oldResolvers.Product,
// SupplyOrder: oldResolvers.SupplyOrder, // Удалено: отсутствует в старых резолверах
// Employee берем из нового модуля
Employee: undefined,
},
// НОВЫЕ модульные резолверы ПОСЛЕ старых - чтобы они перезаписали старые
authResolvers,
employeeResolvers,
logisticsResolvers,
suppliesResolvers,
referralResolvers,
)
export const resolvers = mergedResolvers