Files
psu-schedule/PRODUCT.md
2026-10-16 22:08:45 +03:00

16 KiB
Raw Permalink Blame History

Product

Platform

web

Users

Основная аудитория — студенты всех факультетов Полоцкого государственного университета. Пользователь подтвердил этот охват при инициализации контекста 15 октября 2026 года.

Первый проверенный сценарий — ФЭФ, группа 23-БА. Это начальная группа для проверки качества, а не ограничение аудитории продукта.

Product Purpose

Сделать университетское расписание из Word удобным для просмотра со смартфона. Студент выбирает свою группу и читает занятия по дням, без необходимости разбирать большую таблицу Word на маленьком экране.

Успешный основной сценарий: найти расписание своей группы, понять время, предмет, преподавателя, аудиторию и условия проведения занятия; при необходимости сверить запись с исходным документом.

Positioning

Независимый PWA-клиент для существующих расписаний ПГУ. Механизм продукта — преобразование таблиц Word из университетского источника в структурированное расписание с сохранением исходных условий и доступа к оригиналу.

Университет остаётся источником данных. Официальный статус приложения и партнёрство с университетом не подтверждены; такие заявления добавлять нельзя.

Operating Context

  • Университет публикует документы в публичном каталоге Nextcloud. Сервер сам выбирает папку текущего учебного года (с 1 сентября) и находит таблицу недель и звонков по смыслу имени; состояние источников видно в /api/health.
  • Каталог организован по факультету, форме обучения, разделу и курсу. Один Word-файл может содержать несколько групп, общие занятия и подгруппы.
  • Основной пользовательский язык текущего приложения — русский. Календарные подписи используют часовой пояс Europe/Minsk.
  • Существуют два входа: выбор документа университета и импорт собственного Word с предпросмотром перед сохранением.
  • Открытое расписание можно сохранить в браузере и просматривать при недоступной сети. Обновление из университетского источника требует подключения.
  • Помимо основного расписания пользователь может искать предмет, преподавателя или аудиторию, переключать дни и открывать полную исходную запись.

Capabilities and Constraints

Реализованный MVP

  • Просмотр по дням и на неделю, поиск и ссылка на оригинал Word.
  • Выбор группы — отдельный экран: поиск по номеру группы во всём каталоге, недавние группы, просмотр каталога по факультету, курсу и форме. Студент думает группами, а не файлами: имена документов в выборе не показываются. Первый запуск не открывает чужую группу.
  • Календарь учебных недель: переключатель недель с датами, режим «По неделям» (только занятия выбранной недели) и режим «Все строки Word» для сверки. Занятия других недель доступны в свёрнутом блоке, у карточек — статус по датам, в деталях — сетка недель семестра.
  • Номера пар и текущая пара по университетскому расписанию звонков.
  • Список изменений для группы при перепубликации документа (сравнение с копией на устройстве).
  • Выбор своей подгруппы и скрытие отдельных занятий; хранятся только в браузере.
  • Ссылка и QR-код на расписание группы для распространения внутри группы; личные настройки по ссылке не передаются.
  • Поиск по университету: занятия преподавателя или аудитории на дату и свободные аудитории на пару, по всем документам каталога, с явной оговоркой «по расписаниям из Word» и числом учтённых документов. Только онлайн.
  • Раздел сессии: экзамены, зачёты и консультации группы с обратным отсчётом. Реальные документы экзаменационной сессии ещё не публиковались; распознавание проверено на образцах.
  • Разбор .docx, включая объединённые ячейки, общие занятия, отдельные колонки и альтернативные строки. Старые .doc требуют серверной конвертации через LibreOffice; максимальный размер импорта — 10 МБ.
  • Сохранение последних 12 расписаний и выбранной группы в текущем браузере. Очистка данных браузера удаляет сохранённые расписания.
  • PWA с офлайн-кэшем интерфейса, иконок и локальных шрифтов. Установка на телефон требует подходящего браузера и HTTPS; разработка возможна на localhost.
  • При недоступности источника сохранённые данные обозначаются явно. Кэширование не означает, что расписание проверено на актуальность.
  • В текущем MVP нет учётных записей, платежей и аналитики. Загруженные пользователем Word-файлы не сохраняются на сервере; извлечённое расписание сохраняется в браузере. Сервер кэширует данные университетского каталога.

Точность и границы интерпретации

  • Год документа каталога берётся из папки («2026–2027»), а не из шапки Word: в части файлов шапка осталась от прошлого года (26-КБ, 25-КБ — «2025/2026»).
  • Даты занятий рассчитываются по университетской таблице «Расписание белых и зеленых недель» из корня того же каталога (файл от 26 августа 2026 года): неделя 1 — 01.09–06.09.2026 (начинается со вторника), нечётные недели белые, чётные зелёные, 18 недель до 03.01.2027. Звонки берутся из «Расписание звонков.docx» там же.
  • Пометка недель в белой или зелёной строке относится только к неделям этого цвета («1-13н» в белой строке — недели 1, 3, …, 13). Проверка 16 октября 2026 года: все 53 пометки в цветных строках распознанных документов согласуются с этим правилом.
  • Нераспознанная пометка (например, опечатка «6-12-16н») не скрывает занятие: оно показывается с предупреждением «сверьте с Word». Исходная пометка всегда видна в деталях.
  • Таблица недель делится на семестры; расписание использует только недели своего семестра (по тексту Word, датам сессии или текущей дате). Вне своего семестра или без опубликованной таблицы приложение не угадывает даты и показывает все строки Word.
  • Сохранённое расписание сверяется с каталогом при запуске: перепубликованный файл обновляется тихо, новый документ группы (следующий семестр или год) только предлагается, пропавший документ обозначается явно.
  • Условия вроде 7,9,11н., конкретные даты, примечания, подгруппы и особое время занятия должны оставаться доступными. Неизвестное окончание занятия не выдумывается.
  • В общем файле студенту показываются занятия выбранной группы и общие занятия; дисциплины соседней группы не должны попадать в его расписание.
  • Универсальность парсера для произвольных Word-документов не доказана. Нераспознанная структура должна давать понятную ошибку, а сложная запись — сохранять исходный текст для сверки.
  • PDF, Excel и сканы пока не импортируются. Фоновое обновление при закрытом приложении не реализовано.

Evidence on Hand

  • README.md — текущие возможности, запуск и ограничения реализации.
  • server/source.js, server/parser.js — фактический источник и правила извлечения данных.
  • test/fixtures/ — реальные Word-документы нескольких факультетов и метаданные источников; основной образец — fef-23-ba.docx.
  • test/parser.test.js — проверки разделения групп, общих занятий, условий, времени и распознавания таблиц.
  • VALIDATION.md — протокол первого этапа от 15 октября 2026 года: девять прошедших тестов, сборка, браузерные проверки и сохранённое расписание при остановленном сервере. В том снимке каталога было 113 Word-документов, для 23-БА распознано 33 записи. Это результаты того этапа, а не обещание неизменных данных источника.
  • artifacts/mobile-390.jpg, artifacts/desktop-1440.jpg, artifacts/offline-390.jpg — снимки существующего интерфейса и состояния без сервера.
  • Публикация на HTTPS-хостинг, установка на физический телефон и Docker-сборка в указанном протоколе не подтверждены.

Product Principles

  1. Главная задача — быстро прочитать расписание своей группы на смартфоне.
  2. Достоверность важнее догадки: сохранять условия, примечания и возможность сверки с Word.
  3. Разделять данные групп корректно, сохраняя общие занятия.
  4. Делать сохранённое расписание доступным при сбое связи и ясно сообщать о непроверенной актуальности.
  5. Развивать общий клиент для всех факультетов; изменения парсинга проверять на реальных документах, включая исходный сценарий 23-БА.

Accessibility & Inclusion

Исходная потребность пользователя — удобное и понятное чтение на мобильном устройстве. При дальнейшей работе сохранять читаемый текст, доступные действия на узком экране и текстовые условия занятий: одного цвета строки недостаточно для объяснения расписания.

Отдельный обязательный уровень соответствия WCAG пользователем пока не установлен.

Brand Commitments

Пользователь закрепил Material 3 Expressive для PWA: крупный читаемый текст и функциональные подписи без декоративных слоганов. Главный экран содержит расписание; импорт, установка и сведения об источнике доступны через меню.

Open Decisions

  • Таблица недель весеннего семестра и папка следующего учебного года ещё не опубликованы; автоматика рассчитана на тот же формат таблиц. Если университет его изменит, сервер сообщит «таблица не распознана», а приложение покажет строки Word до правки парсера.
  • Хостинг, публичный адрес и порядок регулярной публикации не выбраны. Локальная сборка не означает опубликованный сервис.
  • Другие языки, роли кроме студентов, уведомления и интеграции с календарями не утверждены как обязательные функции.