Система управления матрицей навыков сотрудников, построенная на Spring Boot 3 с Java 21 и PostgreSQL.
- Java 21
- Spring Boot 3.5.4
- Spring Security с JWT аутентификацией
- Spring Data JPA
- PostgreSQL 15
- Swagger/OpenAPI 3
- Docker & Docker Compose
- Lombok
- Maven
-
Управление пользователями
- Просмотр списка сотрудников
- Просмотр детальной информации о сотруднике
- Добавление новых сотрудников
- Редактирование информации о сотрудниках
- Удаление сотрудников
- Редактирование баллов за навыки
-
Управление критериями
- Просмотр списка критериев
- Создание, редактирование, удаление категорий
- Создание, редактирование, удаление навыков
- Управление максимальными баллами за навыки
- Настройка обязательности навыков для должностей
- Управление описаниями навыков
-
Управление распределением баллов
- Просмотр распределения
- Настройка минимальных требований по soft/hard баллам для должностей
- Все функции администратора, кроме удаления пользователей
- Регистрация и авторизация
- Просмотр личной информации
- Просмотр своих баллов по навыкам
- Просмотр категорий и навыков с описаниями
src/main/java/com/example/skillmatrix/
├── config/ # Конфигурации (Security, OpenAPI)
├── controller/ # REST контроллеры
├── dto/ # Data Transfer Objects
├── model/ # JPA сущности
├── repository/ # Spring Data репозитории
└── service/ # Бизнес-логика
- Клонируйте репозиторий:
git clone <repository-url>
cd skill-matrix- Запустите приложение:
docker-compose up -d- Приложение будет доступно по адресу: http://localhost:8080
-
Установите Java 21 и Maven
-
Установите и запустите PostgreSQL:
# Создайте базу данных
createdb skill_matrix
# Или используйте Docker:
docker run --name postgres-skill-matrix -e POSTGRES_DB=skill_matrix -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=1234 -p 5433:5432 -d postgres:15-alpine-
Обновите настройки в
src/main/resources/application.properties -
Запустите приложение:
./mvnw spring-boot:runПосле запуска приложения API документация доступна по адресам:
- JSON API: http://localhost:8080/api/docs
- HTML документация: http://localhost:8080/api-docs.html
Документация содержит:
- Список всех эндпоинтов
- Описание ролей и прав доступа
- Примеры запросов и ответов
- Информацию об аутентификации
- Интерактивную HTML страницу с примерами
API использует JWT токены для аутентификации. Для доступа к защищенным эндпоинтам добавьте заголовок:
Authorization: Bearer <your-jwt-token>
# Регистрация
POST /api/auth/register
{
"username": "user",
"email": "user@example.com",
"firstName": "Иван",
"lastName": "Иванов",
"direction": "Разработка",
"currentPosition": "Junior Developer"
}
# Авторизация
POST /api/auth/login
{
"username": "user",
"password": "password"
}- User - пользователи системы
- Category - категории навыков
- Skill - навыки с типами (HARD/SOFT)
- UserSkill - связь пользователей и навыков с баллами
- Position - должности с требованиями
- PositionSkill - требования должностей к навыкам
Основные настройки в application.properties:
# База данных
spring.datasource.url=jdbc:postgresql://localhost:5432/skill_matrix
spring.datasource.username=postgres
spring.datasource.password=password
# JWT
jwt.secret=your-secret-key
jwt.expiration=86400000
# Swagger
springdoc.swagger-ui.path=/swagger-ui.htmlЗапуск тестов:
./mvnw testСоздание JAR файла:
./mvnw clean packagedocker build -t skill-matrix .docker run -p 8080:8080 skill-matrixcurl -X POST "http://localhost:8080/api/categories" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Программирование",
"description": "Навыки программирования"
}'curl -X POST "http://localhost:8080/api/skills" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Java",
"description": "Программирование на Java",
"type": "HARD",
"categoryId": 1,
"maxPoints": 5
}'curl -X PUT "http://localhost:8080/api/users/1/skills/1?points=4" \
-H "Authorization: Bearer <token>"