# Product ## Platform web ## Users Основная аудитория — студенты всех факультетов Полоцкого государственного университета. Пользователь подтвердил этот охват при инициализации контекста 15 октября 2026 года. Первый проверенный сценарий — ФЭФ, группа 23-БА. Это начальная группа для проверки качества, а не ограничение аудитории продукта. ## Product Purpose Сделать университетское расписание из Word удобным для просмотра со смартфона. Студент выбирает свою группу и читает занятия по дням, без необходимости разбирать большую таблицу Word на маленьком экране. Успешный основной сценарий: найти расписание своей группы, понять время, предмет, преподавателя, аудиторию и условия проведения занятия; при необходимости сверить запись с исходным документом. ## Positioning Независимый PWA-клиент для существующих расписаний ПГУ. Механизм продукта — преобразование таблиц Word из университетского источника в структурированное расписание с сохранением исходных условий и доступа к оригиналу. Университет остаётся источником данных. Официальный статус приложения и партнёрство с университетом не подтверждены; такие заявления добавлять нельзя. ## Operating Context - Университет публикует документы в публичном [каталоге Nextcloud](https://nextcloud.psu.by/index.php/s/no5zKbMrns6j5jQ?dir=/2026-2027). Сервер сам выбирает папку текущего учебного года (с 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 до правки парсера. - Хостинг, публичный адрес и порядок регулярной публикации не выбраны. Локальная сборка не означает опубликованный сервис. - Другие языки, роли кроме студентов, уведомления и интеграции с календарями не утверждены как обязательные функции.