Compare commits

..

7 Commits

Author SHA1 Message Date
Dmitry Belan 9de6832bc0 Remove Git commands from tasks - test student knowledge 2026-07-01 13:56:33 +03:00
Dmitry Belan e38abcc9c4 Remove Git commands reference section 2026-07-01 13:52:35 +03:00
Dmitry Belan 054c875996 Add README with project description and tasks 2026-07-01 13:51:24 +03:00
Dmitry Belan 9ae915a457 done 2026-07-01 13:47:41 +03:00
Dmitry Belan 930b3465a4 fix2 2026-07-01 13:47:33 +03:00
Dmitry Belan f358639881 fix 2026-07-01 13:47:27 +03:00
Dmitry Belan eaafccbb2e Implement grow method and harvest function 2026-07-01 13:47:20 +03:00
3 changed files with 97 additions and 3 deletions
+86 -1
View File
@@ -1,2 +1,87 @@
# Igor-kr # 🌱 Farm Automation System
Учебный проект для практики работы с Git: слияние конфликтов и интерактивный ребейз.
## Описание проекта
Простая система автоматизации гидропонной фермы на Python с использованием ООП:
- **BioCulture** — класс биокультуры со стадиями роста ("Зеленый" → "Красный")
- **HydroponicModule** — модуль, управляющий несколькими культурами
- **FarmAgent** — агент-оператор для управления модулем и сбора урожая
## Структура проекта
```
Igor-kr/
├── main.py # Точка входа
├── farm_core/
│ ├── __init__.py
│ ├── module.py # Классы BioCulture и HydroponicModule
│ └── agent.py # Класс FarmAgent
└── README.md
```
## Ветки
- **main** — базовая заготовка со "сломанным" методом `grow()` (вызывает `NotImplementedError`)
- **feature-api** — рабочая реализация метода `grow()` и новая функция `harvest()`
## 🎯 Практические задания
### Задание 1: Разрешение конфликтов при слиянии
**Цель:** Научиться разрешать merge conflicts.
**Шаги:**
1. Убедитесь, что вы на ветке `main`
2. Попытайтесь слить ветку `feature-api`
3. **Ожидаемый результат:** Конфликт в файле `farm_core/module.py` в методе `grow()`:
- В `main`: `raise NotImplementedError("Рост не реализован в main!")`
- В `feature-api`: `self._stage = "Красный"`
4. Откройте файл `farm_core/module.py` и разрешите конфликт
5. Завершите слияние
### Задание 2: Интерактивный ребейз (очистка истории)
**Цель:** Научиться объединять "мусорные" коммиты в один чистый коммит.
**Шаги:**
1. Переключитесь на ветку `feature-api`
2. Посмотрите на историю коммитов (вы увидите три мусорных коммита: done, fix2, fix)
3. Запустите интерактивный ребейз для последних 3 коммитов
4. Объедините три мусорных коммита в один
5. Проверьте результат — вместо трех мусорных коммитов должен быть один чистый коммит
### Задание 3 (дополнительно): Проверка работы кода
1. Переключитесь на `main` после успешного слияния
2. Допишите в `main.py` цикл для проверки работы:
```python
for culture in module.cultures:
culture.grow()
print(f"Готово к сбору: {agent.harvest()} культур(ы)")
```
3. Запустите код
**Ожидаемый вывод:**
```
Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)
```
## ✅ Критерии успешного выполнения
- [ ] Конфликт в `module.py` успешно разрешен
- [ ] Метод `grow()` работает корректно (изменяет стадию на "Красный")
- [ ] Три мусорных коммита объединены в один
- [ ] История коммитов чистая и понятная
- [ ] Код запускается без ошибок
---
**Автор:** Dmitry Belan
**Дата:** 2026-07-01
+9
View File
@@ -6,3 +6,12 @@ class FarmAgent:
@staticmethod @staticmethod
def get_manual(): def get_manual():
return "Инструкция: pH 6.0" return "Инструкция: pH 6.0"
def harvest(self):
ready = [c for c in self._module.cultures if c._stage == "Красный"]
return len(ready)
# TODO: fix this later
# DEBUG: проверить параметры
# FIXME: оптимизировать
+2 -2
View File
@@ -4,8 +4,8 @@ class BioCulture:
self._stage = "Зеленый" self._stage = "Зеленый"
def grow(self): def grow(self):
# Заглушка, которая вызовет конфликт # Рабочий код вместо исключения
raise NotImplementedError("Рост не реализован в main!") self._stage = "Красный"
class HydroponicModule: class HydroponicModule: