64 lines
6.0 KiB
Markdown
64 lines
6.0 KiB
Markdown
# Журнал командировок сотрудников
|
||
|
||
## Тип решения
|
||
Статический сайт: 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/` закоммить вместе с проектом — иначе опубликованная страница останется без стилей.
|