feat(fulfillment-supplies): миграция формы создания поставок расходников на v2 систему

- Обновлена форма создания поставок расходников фулфилмента для использования v2 GraphQL API
- Заменена мутация CREATE_SUPPLY_ORDER на CREATE_FULFILLMENT_CONSUMABLE_SUPPLY
- Обновлена структура input данных под новый формат v2
- Сделано поле логистики опциональным
- Добавлено поле notes для комментариев к поставке
- Обновлены refetchQueries на новые v2 запросы
- Исправлены TypeScript ошибки в интерфейсах
- Удалена дублирующая страница consumables-v2
- Сохранен оригинальный богатый UI интерфейс формы (819 строк)
- Подтверждена работа с новой таблицей FulfillmentConsumableSupplyOrder

Технические изменения:
- src/components/fulfillment-supplies/create-fulfillment-consumables-supply-v2.tsx - основная форма
- src/components/fulfillment-supplies/fulfillment-supplies-layout.tsx - обновлена навигация
- Добавлены недостающие поля quantity и ordered в интерфейсы продуктов
- Исправлены импорты и зависимости

Результат: форма полностью интегрирована с v2 системой поставок, которая использует отдельные таблицы для каждого типа поставок согласно новой архитектуре.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Veronika Smirnova
2025-08-25 07:52:46 +03:00
parent d05f0a6a93
commit 0e3ffc179c
34 changed files with 5795 additions and 565 deletions

View File

@ -12,6 +12,9 @@ import { WildberriesService } from '@/services/wildberries-service'
import '@/lib/seed-init' // Автоматическая инициализация БД
// Импорт новых resolvers для системы поставок v2
import { fulfillmentConsumableV2Queries, fulfillmentConsumableV2Mutations } from './resolvers/fulfillment-consumables-v2'
// 🔒 СИСТЕМА БЕЗОПАСНОСТИ - импорты
import { CommercialDataAudit } from './security/commercial-data-audit'
import { createSecurityContext } from './security/index'
@ -2762,6 +2765,7 @@ export const resolvers = {
return {
...item,
price: item.price || 0, // Исправлено: защита от null значения в существующих данных
recipe,
}
}),
@ -2792,6 +2796,9 @@ export const resolvers = {
throw new GraphQLError(`Ошибка получения поставок: ${error instanceof Error ? error.message : String(error)}`)
}
},
// Новая система поставок v2
...fulfillmentConsumableV2Queries,
},
Mutation: {
@ -5148,7 +5155,7 @@ export const resolvers = {
return {
productId: item.productId,
quantity: item.quantity,
price: product.price,
price: product.price || 0, // Исправлено: защита от null значения
totalPrice: new Prisma.Decimal(itemTotal),
// Извлечение данных рецептуры из объекта recipe
services: item.recipe?.services || [],
@ -10230,6 +10237,10 @@ resolvers.Mutation = {
}
}
},
// Добавляем v2 mutations через spread
...fulfillmentConsumableV2Mutations
}
/* // Резолвер для парсинга JSON рецептуры в SupplyOrderItem
SupplyOrderItem: {
@ -10248,6 +10259,9 @@ resolvers.Mutation = {
},
},
*/
}
// ===============================================
// НОВАЯ СИСТЕМА ПОСТАВОК V2.0 - RESOLVERS
// ===============================================
export default resolvers