-
-
Notifications
You must be signed in to change notification settings - Fork 2
uk CONTRIBUTING
Дякуємо за інтерес до проєкту!
- Спочатку Issue — вся робота починається зі створення GitHub Issue
- Одне завдання за раз — берете Issue, реалізуєте, комітите, закриваєте
-
Тести обов'язкові — не можна пушити в
mainз тестами, що не проходять
- Зміни до 200 рядків — працюйте безпосередньо в
main - Більше 200 рядків —
feat/<issue-number>-<slug>
git checkout -b feat/5-device-registry
# ... work ...
git checkout main
git merge feat/5-device-registry
git push origin mainФормат: <type>(<scope>): <description> [#<N>]
# Examples
git commit -m "feat(registry): add Device Registry CRUD with state history [#5]"
git commit -m "fix(agent): handle missing manifest file on first init [#12]"
git commit -m "test(registry): add pytest for state_changed event emission [#68]"Типи: feat, fix, chore, refactor, test, docs, security, perf
Заборонено: загальні повідомлення на кшталт fix, update, wip, . або порожні повідомлення.
- Python 3.11+, усі публічні методи —
async def - Анотації типів обов'язкові для всіх сигнатур функцій
-
logging.getLogger(__name__)— ніякихprint() -
except Exception as e:— ніколи голийexcept: pass - Один файл = одна відповідальність
- FastAPI-роутери: лише парсинг HTTP, вся логіка в сервісах
- Pydantic-моделі для всіх схем запитів/відповідей
- Користувацькі модулі взаємодіють лише через WebSocket Module Bus
- Базовий клас:
SmartHomeModuleзsdk/base_module.py - Використовуйте декоратори:
@intent(),@on_event(),@scheduled() - Системні модулі успадковують
SystemModuleзcore/module_loader/system_module.py - Див. Посібник з розробки модулів та Посібник з системних модулів
pytest tests/ -v
pytest tests/ --cov=core --cov-report=term-missingПеред кожним пушем:
pytest tests/ -x -q # all tests green
python -m mypy core/ --ignore-missing # type checkingЯкщо ви знайшли вразливість — не створюйте публічний Issue. Використовуйте GitHub Security Advisories.
-
eval(),exec()у будь-якому коді -
os.system(),subprocess.run(shell=True)без крайньої необхідності - Секрети у
.env(лише.env.example) - Пряме читання
/secure/з модуля - Публікація подій
core.*з модуля - Біометричні дані у вихідних HTTP-запитах
- Голий
raise Exception()— використовуйте власні класи винятків
Усі внески приймаються на умовах ліцензії MIT.
🤖 This wiki is auto-synced from docs/ in the main repo. Hand-edits on the wiki UI get overwritten on the next push. Open a PR against the main repo instead.
MIT License · Sponsor · Ko-fi
SelenaCore
🇬🇧 English
Getting started
Architecture
Voice & translation
Hardware integration
Development
- Modules overview
- Module development
- System module development
- Module API guide
- Module bus protocol
- Widget development
- User manager / auth
Reference
🇺🇦 Українська
Початок
Архітектура
Голос і переклад
Інтеграція заліза
Розробка
- Розробка модулів
- Розробка системних модулів
- Module API
- Module bus
- Widget development
- User manager / auth
Довідник