2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00
2026-04-14 00:39:49 +03:00

SparkGuardian Antiplagiat Frontend

Клиентское веб-приложение для управления процессами алгоритмической проверки академических работ на заимствования, работающее поверх REST API системы SparkGuardian Antiplagiat.

A premium single-page web client for managing algorithmic plagiarism checks, handling ZIP course uploads, and reviewing source code overlaps, built on top of the SparkGuardian Antiplagiat REST API.


О проекте

Приложение предназначено для преподавателей, ассистентов и администраторов учебного процесса. Оно позволяет прозрачно и эффективно анализировать сдачу программного кода студентами с применением методов лексической токенизации и алгоритма шинглов (Shingling & Jaccard). Фронтенд построен в соответствии со строгими стандартами T-Bank Design System, полностью адаптивен и предоставляет мощные встроенные инструменты для конфигурации правил анализа.

Ключевые возможности

  • Landing Page: Современная маркетинговая страница с метриками системы и процессом выполнения проверок (pipeline).
  • Управление мероприятиями и группами: Полный CRUD для удобного распределения курсовых и потоков, чтобы исключить пересечения проверок между разными годами.
  • Загрузка ZIP-архивов: Массовое добавление работ (Works) — система на лету распаковывает архивы и распределяет их по студентам выбранной группы.
  • Reference Sets (Эталоны): Управление коллекциями шаблонного исходного кода, позволяющими игнорировать заготовки и базовые классы при расчете плагиата.
  • Анализ заимствований (Analysis Runs): Запуск фоновых задач проверки совпадений, использующих построение AST и N-граммы, благодаря чему переименование переменных не скрывает факт списывания.
  • Выгрузка отчетов: Мгновенная генерация сводных деталей совпадений в PDF, HTML, и JSON форматах с тепловыми картами заимствований (heatmap overlaps).
  • Встроенная Dev-Console: Полноценная in-app консоль разработчика для перехвата API-запросов (dev-log.interceptor) прямо в интерфейсе браузера, без открытия Network Tab.
  • Мониторинг инфраструктуры: Доступ к таблице журнала телеметрии и аудита для отслеживания загруженности серверов.
  • Уведомления: Интеллектуальная классификация HTTP-ошибок (Network/Timeout/Parse) с человекочитаемыми сообщениями.

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

Область Выбор
Фреймворк Angular 21 (Signals, OnPush, Standalone)
Язык TypeScript (strict-mode)
UI & Дизайн Taiga UI v5, кастомные токены T-Bank CSS (color-tokens.css)
Взаимодействие HttpClient, RXJS, Interceptors

Архитектурные особенности

  • Слоевая структура: Строгое деление на core (синглтоны, DI-токены, интерсепторы), features (lazy-loaded самостоятельные компоненты) и shared (чистые pure-функции и date-time утилиты).
  • Производительность: Использование ChangeDetectionStrategy.OnPush повсеместно. Lazy-loading вкладок (@defer).

Локальная настройка и конфигурация

  1. Скопируйте .env.example в .env и настройте значения (например, SG_API_BASE_PATH, SG_API_FALLBACK_ORIGIN).
  2. Выполните: npm install (или make install).
  3. Синхронизируйте переменные (вызывается авто-hooks): npm run env:sync. Создает environment.ts.
  4. Запуск dev-сервера с прокси: npm start (по умолчанию http://localhost:4200/).

Актуальный OpenAPI контракт системы доступен в docs/antiplagiat_api.json.


About the project

The app is aimed at professors, teaching assistants, and administrators. It provides a robust framework to transparently manage the submission and peer-review of source code using tokenization and shingling (Shingling & Jaccard index). The frontend strictly adheres to the T-Bank Design System, ensuring a premium, responsive, and robust user experience.

Core Features

  • Landing Page: A modern entrance showcasing system metrics and technical capabilities (Bento block layout).
  • Event & Group Management: Complete CRUD for grouping courses and isolated assignments.
  • ZIP Batch Uploads: Frictionless batch adding of student assignments directly via ZIP package uploads.
  • Reference Sets: Ignore template code or boilerplate when finding codebase matches.
  • Analysis Runs: Dispatching background tasks verifying structural overlaps, effectively matching similarities despite variable renaming or function shuffles.
  • Formatted Reports: Export matched outputs into highly readable PDF, HTML, or raw JSON deliverables.
  • Built-in Dev-Console: An integrated developer console overlay trapping all API requests and responses directly in the browser window.
  • Infrastructure Telemetry: Direct access to event auditing and system stability metrics.
  • Smart Error Handling: Intelligent HTTP error classification with user-friendly Russian/English notifications.

Tech Stack

Area Choice
Framework Angular 21 (Signals, OnPush, Standalone components)
Language TypeScript (strict-mode)
UI & Design Taiga UI v5, custom T-Bank CSS variables (color-tokens.css)
Data HttpClient, RXJS, specialized interceptors

Architecture

The project strictly isolates modules into core (services, tokens, interceptors), features (routing, smart components), and shared (pure utilities). All components use OnPush change detection and Angular 21's @defer blocks to achieve peak rendering performance across massive administrative data tables.

Running Local Environment

  1. Copy .env.example to .env and set endpoints (SG_API_BASE_PATH, SG_API_FALLBACK_ORIGIN).
  2. Install packages: npm install (or make install).
  3. Sync environment (done automatically on hooks): npm run env:sync.
  4. Run proxy dev-server: npm start (usually at http://localhost:4200/).

Refer to docs/antiplagiat_api.json for the most recent REST Open API specification.


Command Reference

Task Command
Dev server with proxy npm start or make start
Production build npm run build or make build
Development build make build-dev
Unit tests npm test
Lint npm run lint
Clean artifacts make clean
Description
No description provided
Readme 495 KiB
Languages
TypeScript 50.6%
HTML 29.5%
CSS 17.6%
JavaScript 1.8%
Makefile 0.5%