From 3f41915ab894f7003002437592e45cb2bcd7e3d1 Mon Sep 17 00:00:00 2001 From: Dmitry Belan Date: Wed, 1 Jul 2026 13:50:04 +0300 Subject: [PATCH] Add comprehensive README with project description and Git practice tasks --- README.md | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ea8ec69..dfd7bc0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,166 @@ -# 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`: + ```bash + git checkout main + ``` + +2. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ `feature-api`: + ```bash + git merge feature-api + ``` + +3. **ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:** ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π² Ρ„Π°ΠΉΠ»Π΅ `farm_core/module.py` Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ `grow()`: + - Π’ `main`: `raise NotImplementedError("Рост Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² main!")` + - Π’ `feature-api`: `self._stage = "ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ"` + +4. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `farm_core/module.py` ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚: + - Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° (`<<<<<<<`, `=======`, `>>>>>>>`) + - ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ· `feature-api` + +5. Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ слияниС: + ```bash + git add farm_core/module.py + git commit -m "Resolve merge conflict in grow() method" + ``` + +### Π—Π°Π΄Π°Π½ΠΈΠ΅ 2: Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅Π±Π΅ΠΉΠ· (очистка истории) + +**ЦСль:** ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ "мусорныС" ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ чистый ΠΊΠΎΠΌΠΌΠΈΡ‚. + +**Π¨Π°Π³ΠΈ:** + +1. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ `feature-api`: + ```bash + git checkout feature-api + ``` + +2. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²: + ```bash + git log --oneline -5 + ``` + + Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ мусорных ΠΊΠΎΠΌΠΌΠΈΡ‚Π°: + ``` + 9ae915a done + 930b346 fix2 + f358639 fix + eaafccb Implement grow method and harvest function + ``` + +3. ЗапуститС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅Π±Π΅ΠΉΠ· для послСдних 3 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²: + ```bash + git rebase -i HEAD~3 + ``` + +4. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: + ``` + pick f358639 fix + squash 930b346 fix2 + squash 9ae915a done + ``` + (Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `fixup` вмСсто `squash`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²) + +5. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°: + ``` + Clean up: remove debug comments + ``` + +6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: + ```bash + git log --oneline -3 + ``` + + Π’Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто Ρ‚Ρ€Π΅Ρ… мусорных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² β€” ΠΎΠ΄ΠΈΠ½ чистый ΠΊΠΎΠΌΠΌΠΈΡ‚. + +### Π—Π°Π΄Π°Π½ΠΈΠ΅ 3 (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ): ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π° + +1. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° `main` послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ слияния +2. Π”ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π² `main.py` Ρ†ΠΈΠΊΠ» для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹: + ```python + for culture in module.cultures: + culture.grow() + + print(f"Π“ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ сбору: {agent.harvest()} ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€(Ρ‹)") + ``` + +3. ЗапуститС ΠΊΠΎΠ΄: + ```bash + python main.py + ``` + +**ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:** +``` +Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ: pH 6.0 +Π“ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ сбору: 3 ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€(Ρ‹) +``` + +## πŸ“š ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Git + +```bash +# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ статуса +git status + +# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории +git log --oneline --graph --all + +# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ +git diff + +# ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Π΄ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) +git restore + +# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π²Π΅Ρ‚ΠΎΠΊ +git branch -a + +# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ +git checkout -b +``` + +## βœ… ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния + +- [ ] ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π² `module.py` ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ +- [ ] ΠœΠ΅Ρ‚ΠΎΠ΄ `grow()` Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (измСняСт ΡΡ‚Π°Π΄ΠΈΡŽ Π½Π° "ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ") +- [ ] Π’Ρ€ΠΈ мусорных ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ +- [ ] Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² чистая ΠΈ понятная +- [ ] Код запускаСтся Π±Π΅Π· ошибок + +--- + +**Автор:** Dmitry Belan +**Π”Π°Ρ‚Π°:** 2026-07-01