{fullName}
-{employee.position?.name || 'Не указана'}
-diff --git a/corp.front/.dockerignore b/corp.front/.dockerignore deleted file mode 100644 index 13e59b48..00000000 --- a/corp.front/.dockerignore +++ /dev/null @@ -1,35 +0,0 @@ -# Dependencies -node_modules -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Next.js -.next/ -out/ -build -dist - -# Environment -.env*.local -.env - -# Testing -coverage - -# Misc -.DS_Store -*.pem - -# Debug -*.log - -# IDE -.vscode -.idea -*.swp -*.swo -*~ - -# Vercel -.vercel diff --git a/corp.front/.env.example b/corp.front/.env.example deleted file mode 100644 index f0f5164d..00000000 --- a/corp.front/.env.example +++ /dev/null @@ -1,5 +0,0 @@ -# Backend API URL -NEXT_PUBLIC_API_URL=http://localhost:8000 - -# WebSocket URL for real-time features -NEXT_PUBLIC_WS_URL=ws://localhost:8000 diff --git a/corp.front/Dockerfile b/corp.front/Dockerfile deleted file mode 100644 index 75ed2dd4..00000000 --- a/corp.front/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# Build stage -FROM node:20-alpine AS builder - -WORKDIR /app - -# Copy package files -COPY package.json package-lock.json* ./ -RUN npm ci - -# Copy source files -COPY . . - -# Set environment variables for build -ENV NEXT_TELEMETRY_DISABLED=1 -ENV NODE_ENV=production - -# Build the application -RUN npm run build - -# Production stage -FROM node:20-alpine AS runner - -WORKDIR /app - -ENV NODE_ENV=production -ENV NEXT_TELEMETRY_DISABLED=1 - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -# Copy necessary files from builder -COPY --from=builder /app/public ./public -COPY --from=builder /app/.next ./.next -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/package.json ./package.json - -# Set correct permissions -RUN chown -R nextjs:nodejs /app - -USER nextjs - -EXPOSE 3000 - -ENV PORT=3000 -ENV HOSTNAME="0.0.0.0" - -# Start Next.js server -CMD ["npm", "start"] diff --git a/corp.front/INTEGRATION_GUIDE.md b/corp.front/INTEGRATION_GUIDE.md deleted file mode 100644 index 31c6835d..00000000 --- a/corp.front/INTEGRATION_GUIDE.md +++ /dev/null @@ -1,410 +0,0 @@ -# Frontend Integration Guide - -## Обзор - -Фронтенд corp.front полностью интегрирован с Django Backend через REST API. Используется Next.js 16 с TypeScript и Tailwind CSS. - -## Структура проекта - -``` -corp.front/ -├── src/ -│ ├── app/ # Next.js страницы -│ │ ├── page.tsx # Главная (Лента) ✅ Интегрирован -│ │ ├── employees/ # Сотрудники ✅ Интегрирован -│ │ ├── departments/ # Отделы -│ │ ├── documents/ # Документы -│ │ ├── messages/ # Сообщения -│ │ ├── requests/ # Заявки -│ │ ├── finances/ # Финансы -│ │ └── login/ # Вход -│ ├── lib/ -│ │ └── api.ts # API клиент ✅ -│ ├── types/ -│ │ └── api.ts # TypeScript типы ✅ -│ └── hooks/ -│ └── useApi.ts # React хуки для API ✅ -``` - -## API клиент - -### Базовая конфигурация - -API клиент автоматически: -- Добавляет JWT токен к запросам -- Обрабатывает ошибки авторизации -- Сохраняет токены в localStorage -- Перенаправляет на /login при 401 - -### Использование - -```typescript -import apiClient from '@/lib/api'; - -// Авторизация -const { access, refresh, user } = await apiClient.login({ - username: 'user@example.com', - password: 'password' -}); - -// Получение данных -const employees = await apiClient.getEmployees(); -const posts = await apiClient.getPosts(); -``` - -## React хуки - -Используйте готовые хуки из `@/hooks/useApi`: - -```tsx -import { useCurrentUser, useEmployees, usePosts } from '@/hooks/useApi'; - -function MyComponent() { - const { user, loading, error } = useCurrentUser(); - const { employees } = useEmployees({ search: 'John' }); - const { posts } = usePosts({ page: 1 }); - - if (loading) return
{error.message}
- -
- Команда
-Загрузка сотрудников...
-Ошибка загрузки: {error.message}
-Сотрудники не найдены
-{fullName}
-{employee.position?.name || 'Не указана'}
-- Используйте учетные данные LDAP для входа -
- - - - - -- Для входа используйте корпоративные учетные данные -
-
-
- Загрузка...
-Ошибка загрузки: {error.message}
-Проверьте подключение к серверу
-Нет постов в ленте
-{post.author.first_name} {post.author.last_name}
-{formatTimeAgo(post.created_at)}
-{post.content}
- {post.tags && post.tags.length > 0 && ( -- Создайте новый аккаунт, указав имя и контактные данные. -
- - - -- Регистрируясь, вы принимаете условия использования и подтверждаете ознакомление с политикой конфиденциальности. -
-
-
-
+
+
+
+
+
+
+ {userName}
+{user?.is_active ? 'Онлайн' : 'Оффлайн'}
+Календарь
+