Приложение Projects, системы Карта Успеха — различия между версиями

Материал из m6a
Перейти к: навигация, поиск
(Новая страница: «== Общее описание == Приложение `projects` отвечает за управление проектами в системе "Карта ус…»)
 
(Project)
Строка 5: Строка 5:
  
 
=== Project ===
 
=== Project ===
* (Опишите поля модели `Project`, например:
+
  class Project(models.Model):
** `id` - Integer (Primary Key)
+
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='projects')
** `goal` - ForeignKey (связь с моделью Goal)
+
    goal = models.ForeignKey(Goal, on_delete=models.CASCADE, related_name='projects')
** `name` - CharField (название проекта)
+
    name = models.CharField(max_length=100)
** `description` - TextField (описание)
+
    description = models.TextField(blank=True)
** `start_date` - DateField (дата начала)
+
    start_date = models.DateField(null=True, blank=True)
** `end_date` - DateField (дата окончания)
+
    end_date = models.DateField(null=True, blank=True)
** `completion_percentage` - IntegerField (процент выполнения, от 0 до 100)
+
    completion_percentage = models.IntegerField(
** `contribution_to_goal` - IntegerField (доля в достижении цели, от 0 до 100)
+
        default=0,
** `is_archived` - BooleanField (архивный статус)
+
        validators=[MinValueValidator(0), MaxValueValidator(100)]
)
+
    )
 +
    share_percentage = models.DecimalField(
 +
        max_digits=5,
 +
        decimal_places=2,
 +
        default=0,
 +
        validators=[MinValueValidator(0), MaxValueValidator(100)]
 +
    )
 +
    is_archived = models.BooleanField(default=False)
  
 
=== Методы модели ===
 
=== Методы модели ===

Версия 14:03, 30 марта 2025

Общее описание

Приложение `projects` отвечает за управление проектами в системе "Карта успеха". Каждый проект связан с целью и содержит набор задач для её достижения.

Модель данных

Project

 class Project(models.Model):
   user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='projects')
   goal = models.ForeignKey(Goal, on_delete=models.CASCADE, related_name='projects')
   name = models.CharField(max_length=100)
   description = models.TextField(blank=True)
   start_date = models.DateField(null=True, blank=True)
   end_date = models.DateField(null=True, blank=True)
   completion_percentage = models.IntegerField(
       default=0,
       validators=[MinValueValidator(0), MaxValueValidator(100)]
   )
   share_percentage = models.DecimalField(
       max_digits=5,
       decimal_places=2,
       default=0,
       validators=[MinValueValidator(0), MaxValueValidator(100)]
   )
   is_archived = models.BooleanField(default=False)

Методы модели

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

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

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

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

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

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

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

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