zhurnal-komandirovok-sotrudn/brief.md

64 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Журнал командировок сотрудников
## Тип решения
Статический сайт: index.html + style.css + script.js (ванильный JS, Tailwind через CDN). Публикация по постоянной ссылке.
## Задача
Создать прототип журнала учёта командировок для визуализации списка поездок, статусов согласования и бюджетов.
## Кто пользуется
Владелец процесса и его команда для ручного ведения и просмотра списка командировок в браузере.
## Что делает прототип
1. **Главный экран (Дашборд):**
- Сверху: 4 карточки-счётчика (Всего, На согласовании, Согласовано, В поездке).
- Ниже: строка поиска по ФИО или городу.
- Ниже: фильтр статусов кнопками-чипсами (Все, На согласовании, Согласовано, Отказано).
- Основная таблица: столбцы «Сотрудник», «Куда», «Даты» (ДД.ММ.ГГГГ), «Бюджет», «Статус», «Действия».
- Кнопка «+ Добавить командировку» справа сверху.
2. **Форма (Модальное окно):**
- Поля: ФИО сотрудника, Город назначения, Дата начала, Дата окончания, Бюджет (тенге), Статус (выпадающий список).
- Кнопки: «Сохранить» (добавляет или обновляет запись), «Отмена».
3. **Логика работы:**
- При нажатии на строку таблицы открывается форма для редактирования.
- Кнопка удаления в строке вызывает подтверждение («Удалить запись?»), после чего запись исчезает, а в журнал изменений (внизу страницы или в консоли) пишется событие.
- Данные сохраняются в LocalStorage браузера (не пропадают после обновления страницы F5).
- Кнопка «Выгрузить в Excel» формирует CSV-файл текущей выборки.
## Демо-данные
5 записей с реалистичными данными:
- Иванов А. (Алматы -> Астана, 10.10.2023, 150 000 тг, Согласовано)
- Петров Б. (Шымкент -> Алматы, 12.10.2023, 80 000 тг, На согласовании)
- Смирнов В. (Актобе -> Москва, 01.11.2023, 450 000 тг, В поездке)
- Ахметов К. (Караганда -> Астана, 05.11.2023, 120 000 тг, Отказано)
- Ли Д. (Уральск -> Атырау, 20.11.2023, 90 000 тг, На согласовании)
## Допущения
- Валюта бюджета везде в тенге.
- Статусы фиксированы: «На согласовании», «Согласовано», «Отказано», «В поездке», «Завершено».
- Журнал изменений хранится в памяти браузера.
## Чего пока нет
- Авторизации и разделения прав доступа.
- Интеграции с 1С, SAP или кадровыми системами.
- Отправки уведомлений в Telegram или на почту.
## Дизайн — дизайн-система KT AI
Весь интерфейс собирай на дизайн-системе KT AI, которая уже лежит в папке проекта `design-system/`.
Перед первой строкой вёрстки прочитай `design.md` и `design-system/AGENTS.md` и следуй им.
Подключай файлы ДС относительными путями и в этом порядке: `./design-system/kt-ai-fonts.css`,
`./design-system/kt-ai-tokens.css`, `./design-system/kt-ai-components.css`, `./design-system/kt-ai-page.css`.
Тема по умолчанию — светлая: `<html lang="ru" data-theme="light">`; не ставь `dark` и не ставь `auto`
(auto уходит в тёмную по системной теме). Переключатель темы можно оставить, но открываться страница должна светлой.
Цвета, отступы и размеры — только токенами `var(--kt-ai-…)`, иконки — из `design-system/icons/kt-ai-lucide-sprite.svg`.
Таблицы, списки, журналы, дашборды и формы собирай из готовых классов ДС (`design-system/COMPONENTS.md`),
архетип экрана выбирай по `design-system/docs/ARCHETYPES.md`. Каркас страницы — из `design.md`, с обычными `<link>`.
Шаблон `design-system/templates/kt-ai-app-shell.html` целиком не копируй: его скрипты-загрузчики (`data-kt-ai-base-resolver`,
`data-kt-ai-boot`) тянут CSS с корня сайта по абсолютному пути `/design-system/…`, а сайт публикуется в подпапке — стили не загрузятся.
Подключай только файлы, которые реально лежат в `design-system/` (проверь `ls design-system`): файла `kt-ai-components.js` там нет.
Свой стиль не выдумывай, Bootstrap/Tailwind/Material/Google Fonts не подключай, сырые hex-цвета не пиши.
Папку `design-system/` закоммить вместе с проектом — иначе опубликованная страница останется без стилей.