Приложение Projects, системы Карта Успеха
Материал из m6a
Версия от 14:02, 30 марта 2025; Vshpagin (обсуждение | вклад) (Новая страница: «== Общее описание == Приложение `projects` отвечает за управление проектами в системе "Карта ус…»)
Содержание
Общее описание
Приложение `projects` отвечает за управление проектами в системе "Карта успеха". Каждый проект связан с целью и содержит набор задач для её достижения.
Модель данных
Project
- (Опишите поля модели `Project`, например:
- `id` - Integer (Primary Key)
- `goal` - ForeignKey (связь с моделью Goal)
- `name` - CharField (название проекта)
- `description` - TextField (описание)
- `start_date` - DateField (дата начала)
- `end_date` - DateField (дата окончания)
- `completion_percentage` - IntegerField (процент выполнения, от 0 до 100)
- `contribution_to_goal` - IntegerField (доля в достижении цели, от 0 до 100)
- `is_archived` - BooleanField (архивный статус)
)
Методы модели
- (Опишите методы модели `Project`, например:
- `clean()` - Валидация модели
- `calculate_duration()` - Расчет длительности проекта
)
Функциональность
Основные операции
- Создание проектов
- Редактирование проектов
- Удаление проектов
- Просмотр списка проектов
- Просмотр деталей проекта
Управление статусом
- Архивация проектов
- Фильтрация активных/архивных проектов
- Отслеживание прогресса
Дополнительные функции
- Расчет длительности мероприятий
- Управление задачами
- Обновление процента выполнения
URL маршруты
- (Перечислите URL маршруты приложения и их соответствие представлениям, например:
- `/projects/` - Список проектов
- `/projects/<int:pk>/` - Детали проекта
- `/projects/create/` - Создание проекта
- `/projects/<int:pk>/update/` - Обновление проекта
- `/projects/<int:pk>/delete/` - Удаление проекта
- `/projects/<int:pk>/archive/` - Архивирование проекта
)
Формы
ProjectForm
- (Опишите поля формы `ProjectForm`, например:
- `name` - CharField (поле для ввода названия)
- `description` - TextField (поле для ввода описания)
- `goal` - ForeignKey (выбор цели)
- `start_date` - DateField (поле для ввода даты начала)
- `end_date` - DateField (поле для ввода даты окончания)
- `completion_percentage` - IntegerField (поле для ввода процента выполнения)
- `contribution_to_goal` - IntegerField (поле для ввода доли в достижении цели)
)
Шаблоны
Основные шаблоны
- `project_list.html` - список проектов
- `project_detail.html` - детали проекта
- `project_form.html` - форма создания/редактирования
Особенности шаблонов
- Фильтрация проектов
- Отображение прогресса
- Управление задачами
- Навигация по хлебным крошкам
Тестирование
Модульные тесты
- Валидация процента выполнения
- Проверка дат
- Тест пустых полей
- Валидация доли в достижении цели
Проверяемые аспекты
- Корректность данных
- Ограничения модели
- Валидация полей
- Связи с целями
Безопасность
Защита
- Декоратор `@login_required`
- Валидация данных
- Проверка прав доступа
- CSRF защита
Валидация
- Проверка процентов
- Валидация дат
- Обязательные поля
- Форматы данных
Интеграция
С другими приложениями
- Связь с целями
- Связь с задачами
- Интеграция с пользователями
Сигналы
- `post_save` - после сохранения
- `post_delete` - после удаления
- Обновление прогресса цели
- Расчет взвешенного завершения
Особенности реализации
Управление прогрессом
- Автоматический расчет
- Взвешенное завершение
- Обновление связанных целей
Отслеживание времени
- Даты начала и окончания
- Длительность мероприятий
- Расчет прогресса
Дополнительные поля
- Доля в достижении цели
- Архивный статус
- Описание проекта