# 🌱 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