← Вернуться к приложению

Техническое задание

Модуль «Биржа Труда» (Labor Stock v3)

Версия: 3.0 · Дата: 19 февраля 2026 · Статус: Актуально
Продукт: HRlink · Платформа: Web (SPA + PHP API)

Содержание

  1. Общие сведения о проекте
  2. Функциональные возможности
  3. Роли пользователей
  4. Бизнес-процесс
  5. Архитектура системы
  6. Структура данных
  7. API-эндпоинты
  8. Дизайн-система
  9. Адаптивность и мобильная версия
  10. Безопасность и логирование
  11. Развёртывание

1. Общие сведения о проекте

1.1 Назначение

HRlink — Биржа Труда — это B2B-платформа (модуль HR-системы), обеспечивающая внутренний рынок подработок внутри одной или нескольких юридических лиц холдинга. Система позволяет работодателям создавать временные задания (подработки), а сотрудникам — откликаться на них, получать назначения и вести учёт рабочего времени.

1.2 Цели

1.3 Ключевые характеристики v3

2. Функциональные возможности

2.1 Модуль «Каталог подработок»

ФункцияОписаниеРоли
Просмотр каталогаСписок подработок в виде карточек с фильтрацией и поискомВсе
Детальная карточкаПолная информация: описание, условия, оплата, история, откликиВсе
ФильтрацияПо типу, отделу, юрлицу, статусу; полнотекстовый поискВсе
Создание подработкиФорма с полями: название, тип, отдел, юрлицо, даты, оплата, местHR, Руководитель
ПубликацияПеревод из черновика в опубликованнуюHR, Руководитель

2.2 Типы подработок

ТипКодОписание
СменаSHIFTРабота по сменам с фиксированным графиком
ЗадачаTASKРазовое задание с определённым результатом
ПроектPROJECTДолгосрочная проектная работа
ПочасоваяHOURLYОплата по фактически отработанным часам

2.3 Модуль «Отклики»

ФункцияОписаниеРоли
Подать откликСотрудник откликается на подработку с комментариемСотрудник
Отозвать откликОтмена поданного отклика до одобренияСотрудник
Управление откликамиПросмотр, фильтрация, одобрение/отклонение откликовHR, Руководитель
Мои откликиПерсональный список откликов со статусамиСотрудник

2.4 Модуль «Назначения»

ФункцияОписаниеРоли
АвтоназначениеПри политике AUTO — сотрудник назначается автоматическиСистема
Ручное назначениеHR/Руководитель одобряет отклик → создаётся назначениеHR, Руководитель
Статус документовОтслеживание подписания документов (На подписании / Подписаны)Все
Подтверждение выполненияСотрудник запрашивает → Руководитель подтверждаетВсе

2.5 Модуль «Учёт времени»

2.6 Модуль «Уведомления»

2.7 Модуль «Отчёты»

2.8 Модуль «Администрирование»

ФункцияОписание
Глобальные лимитыМакс. назначений, макс. откликов, макс. часов за период
Политики по подразделениямПереопределение лимитов на уровне отдела
Синхронизация с HRlinkСтатус синхронизации сотрудников и отделов
Управление пользователямиCRUD операции над пользователями (Users.xlsx)
Настройки дизайнаЦветовая схема, брендинг компании
Журнал аудитаВсе действия с фильтрацией по типу, пользователю, дате
Журнал подключенийЛог с IP-адресами, датой/временем, user-agent

3. Роли пользователей

РольКодОписаниеКлючевые права
Сотрудникemployee Рядовой сотрудник компании, ищущий подработку Просмотр каталога (только опубликованные), подача/отзыв откликов, просмотр назначений, учёт времени, уведомления
HR-менеджерhr Специалист по управлению персоналом Создание/публикация подработок, управление откликами и назначениями, отчёты, учёт времени всех сотрудников
Руководительmanager Руководитель подразделения Создание подработок отдела, подтверждение выполнения, управление откликами, отчёты по подразделению
Администраторadmin Системный администратор биржи Все функции + настройки лимитов, политик, дизайна, управление пользователями, аудит, журнал подключений

3.1 Матрица доступа к разделам

РазделСотрудникHRРуководительАдмин
Дашборд
Каталог✅ (только опубл.)
Создание подработки
Мои отклики
Мои назначения
Управление откликами
Управление назначениями
Учёт времени
Уведомления
Отчёты
Администрирование
Дизайн
Пользователи
Журнал аудита
Журнал подключений

4. Бизнес-процесс

4.1 Жизненный цикл подработки

┌─────────────┐ ┌──────────────┐ ┌───────────────┐ ┌──────────┐ │ ЧЕРНОВИК │────▶│ ОПУБЛИКОВАНА │────▶│ НАБОР ИДЁТ │────▶│ ЗАКРЫТА │ │ (DRAFT) │ │ (PUBLISHED) │ │ (RECRUITING) │ │ (CLOSED) │ └─────────────┘ └──────────────┘ └───────────────┘ └──────────┘ HR создаёт HR публикует Есть отклики Все места заполнены

4.2 Жизненный цикл отклика

┌──────────┐ ┌───────────┐ ┌────────────┐ │ ПОДАН │────▶│ ОДОБРЕН │────▶│ НАЗНАЧЕНИЕ │ │(SUBMITTED│ │(APPROVED) │ │ создано │ └──────────┘ └───────────┘ └────────────┘ │ │ ┌───────────┐ └──────────▶│ ОТКЛОНЁН │ │(REJECTED) │ └───────────┘

4.3 Жизненный цикл назначения

┌─────────────┐ ┌────────────┐ ┌───────────────┐ ┌───────────┐ │ АКТИВНО │────▶│ ОЖИДАЕТ │────▶│ ЗАВЕРШЕНО │ │ ОТМЕНЕНО │ │ (ACTIVE) │ │ ПОДТВ. │ │ (COMPLETED) │ │(CANCELLED)│ └─────────────┘ │(COMP_PEND) │ └───────────────┘ └───────────┘ └────────────┘ Сотрудник Сотрудник Руководитель работает запрашивает подтверждает

4.4 Основной бизнес-процесс (end-to-end)

  1. Создание: HR/Руководитель создаёт подработку (черновик)
  2. Публикация: Подработка публикуется и становится видна сотрудникам
  3. Отклик: Сотрудник просматривает каталог и откликается
  4. Рассмотрение: HR/Руководитель одобряет или отклоняет отклик
  5. Назначение: При одобрении создаётся назначение, формируются документы
  6. Подписание: Документы отправляются на электронную подпись
  7. Работа: Сотрудник выполняет работу, ведёт учёт времени
  8. Завершение: Сотрудник запрашивает подтверждение выполнения
  9. Подтверждение: Руководитель подтверждает завершение
  10. Закрытие: Подработка закрывается при заполнении всех мест

5. Архитектура системы

5.1 Обзор архитектуры

┌─────────────────────────────────────────────────────────┐ │ КЛИЕНТ (Браузер) │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ HTML/CSS │ │ JavaScript │ │ Fetch API │ │ │ │ (Inter font) │ │ (SPA Logic) │ │ (REST calls) │ │ │ └──────────────┘ └──────────────┘ └───────┬───────┘ │ └──────────────────────────────────────────────┼──────────┘ │ HTTP ▼ ┌─────────────────────────────────────────────────────────┐ │ СЕРВЕР (Nginx + PHP-FPM) │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌────────────────┐ │ │ │ settings.php │ │ users.php │ │ log.php │ │ │ │ (дизайн) │ │ (авториз.) │ │ (логирование) │ │ │ └──────┬──────┘ └──────┬──────┘ └───────┬────────┘ │ │ │ │ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌───────▼────────┐ │ │ │ settings.json│ │ Users.xlsx │ │ Log.xlsx │ │ │ │ (JSON) │ │ (Excel) │ │ (Excel) │ │ │ └─────────────┘ └─────────────┘ └────────────────┘ │ │ │ │ PhpSpreadsheet Library (Excel R/W) │ └─────────────────────────────────────────────────────────┘

5.2 Технологический стек

КомпонентТехнологияВерсия
ФронтендHTML5 + CSS3 + Vanilla JavaScript (SPA)
ШрифтInter (Google Fonts)Variable
БэкендPHP (FastCGI)8.3
Excel-движокPhpSpreadsheet5.4
Веб-серверNginx1.24
Хранение данныхExcel (.xlsx) + JSON
ОСUbuntu Linux24.04

5.3 Структура проекта

Labor_Stock_v3/ ├── index.html # Основное SPA-приложение ├── api/ │ ├── log.php # API логирования подключений │ ├── users.php # API управления пользователями │ └── settings.php # API настроек дизайна ├── data/ │ ├── Users.xlsx # Данные пользователей (Excel) │ ├── Log.xlsx # Журнал подключений (Excel) │ └── design_settings.json # Настройки дизайна (JSON) ├── assets/ │ ├── logo.png # Логотип компании │ ├── icon.png # Иконка приложения │ └── short-logo.png # Компактный логотип ├── docs/ │ └── technical_spec.html # Техническое задание (этот файл) ├── vendor/ # Composer-зависимости ├── composer.json # Конфигурация Composer └── composer.lock

6. Структура данных

6.1 Users.xlsx — Пользователи

КолонкаТипОписание
A — IDIntegerУникальный идентификатор
B — ЛогинStringИмя для входа в систему
C — ПарольStringПароль (в прототипе — открытый текст)
D — ФИОStringПолное имя пользователя
E — ИнициалыString(2)Инициалы для аватара
F — РольEnumadmin | hr | manager | employee
G — ОтделStringПодразделение сотрудника
H — EmailStringЭлектронная почта
I — АктивенStringДа | Нет

6.2 Log.xlsx — Журнал подключений

КолонкаТипОписание
A — IDIntegerПорядковый номер записи
B — Дата/ВремяDateTimeФормат: ДД.ММ.ГГГГ ЧЧ:ММ:СС
C — IP адресStringIP-адрес клиента (включая X-Forwarded-For)
D — ПользовательStringФИО пользователя
E — РольStringРоль на момент действия
F — ДействиеStringТип события (login, role_select, и т.д.)
G — User-AgentStringСтрока User-Agent браузера
H — ДеталиStringДополнительная информация

6.3 design_settings.json — Настройки дизайна

КлючПо умолчаниюОписание
primaryColor#1A3C6EОсновной цвет бренда
primaryLight#4A7FC1Светлый вариант основного
secondaryColor#0D9488Акцентный цвет
sidebarBg#0F172AФон боковой панели
successColor#16A34AЦвет успеха
warningColor#F59E0BЦвет предупреждения
dangerColor#DC2626Цвет ошибки
companyNameHRlinkНазвание компании
productNameБиржа ТрудаНазвание продукта

7. API-эндпоинты

7.1 Аутентификация — POST /api/users.php

ПараметрЗначение
action"auth"
loginЛогин пользователя
passwordПароль пользователя

Ответ: {"success": true, "user": {...}} или {"success": false, "error": "..."}

7.2 Список пользователей — GET /api/users.php?action=list

Возвращает массив пользователей без паролей.

7.3 Добавление пользователя — POST /api/users.php

action: "add", поля: login, password, name, initials, role, department, email

7.4 Логирование — POST /api/log.php

ПараметрОписание
userИмя пользователя
roleТекущая роль
actionТип действия
detailsДополнительные данные

IP-адрес и User-Agent определяются автоматически на сервере.

7.5 Чтение логов — GET /api/log.php

Возвращает: {"entries": [...], "total": N}

7.6 Настройки дизайна — GET/POST /api/settings.php

GET — текущие настройки. POST — обновление (merge с существующими).

8. Дизайн-система

8.1 Цветовая палитра

ТокенHEXПрименение
Primary#1A3C6EКнопки, заголовки, активная навигация
Primary Light#4A7FC1Ссылки, hover-состояния
Secondary#0D9488Прогресс-бары, акцентные элементы
Background#F5F7FAФон страниц
Success#16A34AУспешные операции
Warning#F59E0BПредупреждения
Danger#DC2626Ошибки, удаление

8.2 Типографика

Основной шрифт: Inter (Google Fonts). Размеры: H1 — 28px/800, H2 — 22px/700, H3 — 18px/600, Body — 14px/400, Caption — 12px/400.

8.3 Кастомизация

Администратор может через раздел «Дизайн» изменить:

Изменения сохраняются в design_settings.json и применяются через CSS custom properties (переменные), что обеспечивает мгновенное обновление без перезагрузки.

9. Адаптивность и мобильная версия

9.1 Брейкпоинты

УстройствоШиринаПоведение
Desktop≥ 1280pxПолный интерфейс с раскрытым sidebar (260px)
Laptop1024–1279pxСвёрнутый sidebar (64px, только иконки)
Tablet768–1023pxDrawer-навигация (hamburger menu)
Mobile< 768pxОдноколоночный layout, карточки вместо таблиц

9.2 Мобильные адаптации

10. Безопасность и логирование

10.1 Аутентификация

10.2 Логирование подключений

10.3 CORS

API-эндпоинты возвращают заголовки Access-Control-Allow-Origin для кросс-доменных запросов.

11. Развёртывание

11.1 Требования

11.2 Установка

  1. Скопировать проект в директорию веб-сервера
  2. Выполнить composer install для установки PhpSpreadsheet
  3. Настроить nginx location с поддержкой PHP FastCGI
  4. Установить права: chown -R www-data:www-data data/
  5. Перезагрузить nginx: systemctl reload nginx

11.3 Текущее развёртывание

ПараметрЗначение
URLhttp://89.124.75.69/Labor_Stock_v3/
Путь на сервере/var/www/html/Labor_Stock_v3/
Веб-серверNginx 1.24 + PHP-FPM 8.3
Демо-доступadmin/admin, hr/hr, manager/manager, employee/employee

HRlink — Биржа Труда v3 · Техническое задание · Версия 3.0 · Февраль 2026