Приложение 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` - после удаления
  • Обновление прогресса цели
  • Расчет взвешенного завершения

Особенности реализации

Управление прогрессом

  • Автоматический расчет
  • Взвешенное завершение
  • Обновление связанных целей

Отслеживание времени

  • Даты начала и окончания
  • Длительность мероприятий
  • Расчет прогресса

Дополнительные поля

  • Доля в достижении цели
  • Архивный статус
  • Описание проекта