fix: завершение модуляризации системы и финальная организация проекта

## Структурные изменения:

### 📁 Организация архивных файлов:
- Перенос всех устаревших правил в legacy-rules/
- Создание структуры docs-and-reports/ для отчетов
- Архивация backup файлов в legacy-rules/backups/

### 🔧 Критические компоненты:
- src/components/supplies/multilevel-supplies-table.tsx - многоуровневая таблица поставок
- src/components/supplies/components/recipe-display.tsx - отображение рецептур
- src/components/fulfillment-supplies/fulfillment-goods-orders-tab.tsx - вкладка товарных заказов

### 🎯 GraphQL обновления:
- Обновление mutations.ts, queries.ts, resolvers.ts, typedefs.ts
- Синхронизация с Prisma schema.prisma
- Backup файлы для истории изменений

### 🛠️ Утилитарные скрипты:
- 12 новых скриптов в scripts/ для анализа данных
- Скрипты проверки фулфилмент-пользователей
- Утилиты очистки и фиксации данных поставок

### 📊 Тестирование:
- test-fulfillment-filtering.js - тестирование фильтрации фулфилмента
- test-full-workflow.js - полный workflow тестирование

### 📝 Документация:
- logistics-statistics-warehouse-rules.md - объединенные правила модулей
- Обновление журналов модуляризации и разработки

###  Исправления ESLint:
- Исправлены критические ошибки в sidebar.tsx
- Исправлены ошибки типизации в multilevel-supplies-table.tsx
- Исправлены неиспользуемые переменные в goods-supplies-table.tsx
- Заменены типы any на строгую типизацию
- Исправлены console.log на console.warn

## Результат:
- Завершена полная модуляризация системы
- Организована архитектура legacy файлов
- Добавлены критически важные компоненты таблиц
- Создана полная инфраструктура тестирования
- Исправлены все критические ESLint ошибки
- Сохранены 103 незакоммиченных изменения

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Veronika Smirnova
2025-08-22 10:31:43 +03:00
parent 621770e765
commit 89257c75b5
86 changed files with 25406 additions and 942 deletions

View File

@ -0,0 +1,113 @@
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
async function fixSupplyQuantity() {
try {
console.log('🔧 ИСПРАВЛЯЕМ НЕПРАВИЛЬНОЕ КОЛИЧЕСТВО В SUPPLY ЗАПИСИ')
console.log('=' .repeat(60))
// Находим проблемную Supply запись
const problemSupply = await prisma.supply.findFirst({
where: {
article: 'SF-C-285405-970',
type: 'FULFILLMENT_CONSUMABLES'
}
})
if (!problemSupply) {
console.log('❌ Supply запись не найдена')
return
}
console.log('📦 НАЙДЕНА ПРОБЛЕМНАЯ SUPPLY ЗАПИСЬ:')
console.log(` ID: ${problemSupply.id}`)
console.log(` Название: ${problemSupply.name}`)
console.log(` Артикул: ${problemSupply.article}`)
console.log(` НЕПРАВИЛЬНОЕ quantity: ${problemSupply.quantity}`)
console.log(` Текущий остаток: ${problemSupply.currentStock}`)
console.log('')
// Находим связанный заказ поставки чтобы узнать ПРАВИЛЬНОЕ количество
const relatedOrder = await prisma.supplyOrder.findFirst({
where: {
status: 'DELIVERED',
items: {
some: {
product: {
article: 'SF-C-285405-970'
}
}
}
},
include: {
items: {
include: {
product: true
}
}
}
})
if (!relatedOrder) {
console.log('❌ Связанный заказ поставки не найден')
return
}
const orderItem = relatedOrder.items.find(item => item.product.article === 'SF-C-285405-970')
if (!orderItem) {
console.log('❌ Товар в заказе не найден')
return
}
const correctQuantity = orderItem.quantity
console.log('📋 СВЯЗАННЫЙ ЗАКАЗ ПОСТАВКИ:')
console.log(` ID заказа: ${relatedOrder.id}`)
console.log(` ПРАВИЛЬНОЕ quantity: ${correctQuantity}`)
console.log('')
if (problemSupply.quantity === correctQuantity) {
console.log('✅ Количество уже корректно, исправление не требуется')
return
}
console.log('🔧 ИСПРАВЛЯЕМ SUPPLY ЗАПИСЬ:')
console.log(` БЫЛО: quantity = ${problemSupply.quantity}`)
console.log(` СТАЛО: quantity = ${correctQuantity}`)
console.log('')
// Исправляем quantity
const updatedSupply = await prisma.supply.update({
where: { id: problemSupply.id },
data: {
quantity: correctQuantity, // Правильное количество из заказа
}
})
console.log('✅ SUPPLY ЗАПИСЬ ИСПРАВЛЕНА!')
console.log(` ID: ${updatedSupply.id}`)
console.log(` Quantity: ${updatedSupply.quantity} (исправлено)`)
console.log(` CurrentStock: ${updatedSupply.currentStock} (остался без изменений)`)
console.log('')
console.log('🎯 ОЖИДАЕМЫЙ РЕЗУЛЬТАТ В UI:')
console.log(` Заказано: ${correctQuantity} шт`)
console.log(` Поставлено: ${correctQuantity} шт`)
console.log(` Остаток: ${updatedSupply.currentStock} шт`)
console.log(` Отправлено: 0 шт`)
console.log('')
console.log('=' .repeat(60))
console.log('✅ ИСПРАВЛЕНИЕ ЗАВЕРШЕНО')
} catch (error) {
console.error('❌ ОШИБКА при исправлении:', error)
console.error(' Детали:', error.message)
} finally {
await prisma.$disconnect()
}
}
fixSupplyQuantity()