Перейти к содержанию

Детали модулей и файлов

Уровень: L3 (deep-dive) | Вверх: README.md | Раздел: ../README.md

Модуль api/ — HTTP-клиент и API-модули

Назначение: Инкапсуляция всех HTTP-запросов к серверу. Единственная точка взаимодействия с REST API.

Файл Строк Экспорты Используется в
client.ts 82 apiClient (axios instance) Все api/*.ts модули
auth.ts 32 authApi LoginPage, RegisterPage, SettingsPage, authStore
items.ts 19 itemsApi offline/services, offline/hooks
outfits.ts 47 outfitsApi FeedPage, OutfitBuilderPage, OutfitDetailPage, SharePage
media.ts 42 mediaApi AddItemDetailsPage, SettingsPage, offline/services
feed.ts 7 feedApi FeedPage
reference.ts 19 referenceApi offline/hooks/useLocalReference
share.ts 18 shareApi ShareRecipientPage, ProfilePage

Итого: 8 файлов, ~266 строк.


Модуль components/ui/ — базовые UI-элементы

Назначение: Переиспользуемые UI-примитивы без бизнес-логики. Не зависят от API, сторов или маршрутизации (за исключением offline-компонентов).

Файл Строк Экспорты Используется в
MediaCard.tsx 71 MediaCard ItemCard, OutfitCard
MediaCard.module.css 85 MediaCard
FilterChip.tsx 53 FilterChip FeedPage, WardrobePage
FilterChip.module.css 55 FilterChip
BottomSheet.tsx 26 BottomSheet WardrobeItemPage, OutfitDetailPage
bottomSheet.css ~30 BottomSheet
EmptyState.tsx 31 EmptyState WardrobePage, OutfitsPage, FeedPage
EmptyState.module.css ~35 EmptyState
AuthShell.tsx 45 AuthShell LoginPage, RegisterPage
AuthShell.module.css 75 AuthShell
ActionIconButton.tsx 33 ActionIconButton WardrobeItemPage, OutfitDetailPage, PageHeader
ActionIconButton.module.css 35 ActionIconButton
SharedAccessRow.tsx 65 SharedAccessRow SharedOutfitCard
SharedAccessRow.module.css 65 SharedAccessRow
TextField.tsx 55 TextField LoginPage, RegisterPage, SettingsPage
textField.css ~20 TextField
SelectField.tsx 32 SelectField AddItemDetailsPage, WardrobeItemPage
selectField.css ~15 SelectField
PrimaryButton.tsx 9 PrimaryButton LoginPage, RegisterPage, AddItemDetailsPage
SecondaryButton.tsx 9 SecondaryButton SharePage, SettingsPage
DangerButton.tsx 9 DangerButton SettingsPage
buttons.css ~25 *Button
SkeletonCard.tsx 42 SkeletonCard SimilarItemsRail, SimilarOutfitsGrid, FeedPage, WardrobePage
SkeletonCard.module.css 50 SkeletonCard
OfflineBanner.tsx 47 OfflineBanner AppLayout
OfflineBanner.module.css 35 OfflineBanner
OfflineUnavailable.tsx 22 OfflineUnavailable OfflineErrorBoundary, ShareRecipientPage
OfflineUnavailable.module.css 35 OfflineUnavailable
OfflineErrorBoundary.tsx 57 OfflineErrorBoundary App.tsx (обёртка маршрутов)
UpdateAvailableToast.tsx 16 UpdateAvailableToast App.tsx
UpdateAvailableToast.module.css 40 UpdateAvailableToast
PendingChangesBadge.tsx 25 PendingChangesBadge HomePage
PendingChangesBadge.module.css 15 PendingChangesBadge

Итого: ~34 файла, ~1 307 строк.


Модуль components/common/ — бизнес-компоненты

Назначение: Компоненты, привязанные к доменным сущностям (Item, Outfit, User). Используют типы из types/api.ts и утилиты из utils/media.ts.

Файл Строк Экспорты Используется в
ItemCard.tsx 25 ItemCard WardrobePage, ItemSelectPage, SimilarItemsRail
OutfitCard.tsx 40 OutfitCard OutfitsPage, HomePage, FeedPage, SimilarOutfitsGrid
SharedOutfitCard.tsx 50 SharedOutfitCard ProfilePage
ProfileAvatarButton.tsx 34 ProfileAvatarButton HomePage
ProfileAvatarButton.module.css 25 ProfileAvatarButton
SimilarItemsRail.tsx 41 SimilarItemsRail WardrobeItemPage
SimilarItemsRail.module.css 25 SimilarItemsRail
SimilarOutfitsGrid.tsx 42 SimilarOutfitsGrid OutfitDetailPage
SimilarOutfitsGrid.module.css 20 SimilarOutfitsGrid

Итого: ~9 файлов, ~302 строки.


Модуль components/layout/ — каркас приложения

Назначение: Компоненты верхнего уровня, формирующие визуальный каркас. Используются один раз в App.tsx или в каждой странице.

Файл Строк Экспорты Используется в
AppLayout.tsx 16 AppLayout App.tsx (Route element)
AppLayout.module.css 15 AppLayout
BottomNav.tsx 91 BottomNav AppLayout
BottomNav.module.css 60 BottomNav
PageHeader.tsx 46 PageHeader WardrobeItemPage, OutfitDetailPage, SettingsPage, SharePage и др.
PageHeader.module.css 55 PageHeader

Итого: 6 файлов, ~283 строки.


Модуль hooks/ — пользовательские хуки

Назначение: Переиспользуемая логика, не привязанная к конкретному компоненту.

Файл Строк Экспорты Используется в
useDebounce.ts 12 useDebounce<T> WardrobePage (фильтрация)
useWeather.ts 255 useWeather, readCachedWeather HomePage, FeedPage
useVirtualPagination.ts 53 useVirtualPagination<T> WardrobePage, OutfitsPage
useServiceWorker.ts 32 useServiceWorker App.tsx

Итого: 4 файла, ~352 строки.


Модуль stores/ — Zustand-сторы

Назначение: Глобальное клиентское состояние.

Файл Строк Экспорты Используется в
auth.ts 85 useAuthStore ProfilePage, SettingsPage, ProfileAvatarButton, ProtectedRoute, apiClient
outfitBuilder.ts 70 useOutfitBuilderStore, BuilderItem, BuilderSlotState OutfitBuilderPage, ItemSelectPage

Итого: 2 файла, ~155 строк.


Модуль offline/ — offline-first функциональность

Назначение: Полный цикл работы в офлайне: локальное хранение, CRUD, очередь синхронизации, движок синхронизации.

offline/db/ — схема базы данных

Файл Строк Экспорты Используется в
schema.ts 55 PlechikiDB dexie.ts
dexie.ts 4 db (singleton) Все repositories, services, hooks

offline/hooks/ — хуки для локальных данных

Файл Строк Экспорты Используется в
useLocalItems.ts 110 useLocalItems, useLocalItem WardrobePage, WardrobeItemPage
useLocalItemsByIds.ts 26 useLocalItemsByIds OutfitDetailPage, OutfitBuilderPage
useLocalOutfits.ts 123 useLocalOutfits, useLocalOutfit OutfitsPage, HomePage
useLocalOutfitsByIds.ts 40 useLocalOutfitsByIds
useLocalReference.ts 77 useLocalReference (+aliased: useLocalColors, useLocalCategories, useLocalSlots, useLocalStyles, useLocalCollections) WardrobePage, AddItemDetailsPage, OutfitBuilderPage, FeedPage
usePendingCount.ts 21 usePendingCount OfflineBanner, PendingChangesBadge

offline/network/ — сетевой статус

Файл Строк Экспорты Используется в
networkStatus.ts 32 networkStatus OfflineErrorBoundary, useNetworkStatus
useNetworkStatus.ts 14 useNetworkStatus OfflineBanner, FeedPage, ProfilePage

offline/repositories/ — слой доступа к данным

Файл Строк Экспорты Используется в
itemsRepository.ts 268 itemsRepository, serverItemToLocal, localItemToApi useLocalItems, offlineItemsService, syncEngine
outfitsRepository.ts 221 outfitsRepository, serverOutfitToLocal, outfitFingerprint, findDuplicateOutfit, getOutfitIdsContainingItem useLocalOutfits, offlineOutfitsService, syncEngine
mediaRepository.ts 42 mediaRepository offlineItemsService
syncRepository.ts 96 syncRepository syncEngine, operationQueue

offline/services/ — бизнес-логика

Файл Строк Экспорты Используется в
initialSync.ts 259 performInitialSync, registerRefreshSyncListener main.tsx
localData.ts 44 clearLocalData authStore (logout)
offlineItemsService.ts 170 offlineItemsService AddItemDetailsPage, WardrobeItemPage
offlineOutfitsService.ts 93 offlineOutfitsService OutfitBuilderPage, OutfitDetailPage

offline/sync/ — движок синхронизации

Файл Строк Экспорты Используется в
syncTypes.ts 131 SyncStatus, OperationStatus, OperationType, LocalItem, LocalOutfit, PendingOperation, SyncMetadata, ... Все offline модули
operationQueue.ts 159 operationQueue syncEngine
syncEngine.ts 326 syncEngine main.tsx, offlineServices
retryPolicy.ts 22 calculateNextRetryTime syncEngine

Итого модуль offline: 17 файлов, ~1 933 строки.


Модуль embeddings/ — векторные эмбеддинги

Назначение: Клиентский поиск похожих вещей и образов на основе векторных представлений.

Файл Строк Экспорты Используется в
embeddingTypes.ts 33 SimilarityResult, SimilaritySearchState, WorkerSearchResponse, WorkerSearchMessage similarityService, useEmbeddingSearch
embeddingRepository.ts 92 embeddingRepository similarityService, initialSync
vectorMath.ts 47 cosineSimilarity, euclideanDistance, normalizeVector search.worker
outfitEmbeddingService.ts 40 outfitEmbeddingService offlineOutfitsService
similarityService.ts 141 similarityService useEmbeddingSearch
useEmbeddingSearch.ts 87 useSimilarItems, useSimilarOutfits WardrobeItemPage, OutfitDetailPage
search.worker.ts 43 Web Worker (self-contained) similarityService

Итого: 7 файлов, ~483 строки (включая вспомогательные).


Модуль theme/ — дизайн-система

Файл Строк Экспорты Используется в
tokens.ts 91 tokens (raw design tokens) semanticTokens, antdTheme
semanticTokens.ts 39 semanticTokens antdTheme, cssVars.css
typography.ts 61 typography (CSSProperties styles) antdTheme
antdTheme.ts 113 antdTheme (ThemeConfig) App.tsx (ConfigProvider)
cssVars.css 77 CSS Custom Properties (--pl-*) Все .module.css файлы

Итого: 5 файлов, ~381 строка.


Модуль types/ — TypeScript-типы

Файл Строк Экспорты Используется в
api.ts 288 User, Item, Outfit, Media, Color, ItemCategory, Slot, StyleNode, Collection, FeedList, + 30 DTO-типов Все модули
index.ts 1

Итого: 2 файла, ~289 строк.


Модуль utils/ — утилиты

Файл Строк Экспорты Используется в
compressImage.ts 109 compressImage mediaApi.upload
media.ts 71 getItemImageUrl, getOutfitImageUrl, getOutfitHeroImageUrl, getAvatarUrl, getCollectionCoverUrl, isEmptyPlaceholderImage, handleImgError ItemCard, OutfitCard, Pages
feedSessionCache.ts 84 clearFeedSessionCache authStore.logout
generateOutfitStoryImage.ts 121 generateOutfitStoryJpeg SharePage
ruPluralize.ts 19 ruPluralize Различные страницы
showAppConfirm.ts 16 showAppConfirm OutfitDetailPage, ProfilePage

Итого: 6 файлов, ~420 строк.


Модуль config/ — конфигурация

Файл Строк Экспорты Используется в
attrMappings.ts 64 articleTypeToCategoryName, colourToColorName AddItemDetailsPage (ML-предсказания)

Итого: 1 файл, ~64 строки.


Корневые файлы

Файл Строк Экспорты Назначение
App.tsx 65 App Корневой компонент: Router, QueryClientProvider, ConfigProvider, маршруты
main.tsx 42 Точка входа: hydrate auth, start syncEngine, performInitialSync, render
queryClient.ts 16 queryClient Конфигурация React Query: staleTime 5мин, networkMode always
index.css 54 Глобальные стили: reset, safe-area, .sr-only, ant overrides, shimmer
vite-env.d.ts 1 Vite environment type reference

Итого корневых: 5 файлов, ~178 строк.


Сводная статистика

Модуль Файлов (TS/TSX) Файлов (CSS) Строк кода
pages 16 16 ~3 741
offline 17 0 ~1 933
components/ui 17 12 ~1 307
embeddings 7 0 ~483
utils 6 0 ~420
theme 4 1 ~381
hooks 4 0 ~352
components/common 6 3 ~302
types 2 0 ~289
components/layout 3 3 ~283
api 8 0 ~266
root 4 1 ~178
stores 2 0 ~155
config 1 0 ~64
routes 1 0 ~14
Итого ~98 ~36 ~12 168