Конкретно пересмотрел логику работы. Легаси вынесена в архив
All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
This commit is contained in:
@@ -8,18 +8,13 @@
|
||||
# AI_RULES — правила работы ассистента в проекте MES_Core
|
||||
|
||||
## 1) Коммуникация
|
||||
- Пиши по-русски (если пользователь пишет по-русски).
|
||||
- Не используй формулировки вида «по твоей просьбе», «добавил для тебя», «как договаривались» в комментариях к коду.
|
||||
- Если предлагаешь новые файлы — всегда указывай: полное имя, абсолютный путь и весь контент в одном блоке.
|
||||
- Пиши по-русски всегда.
|
||||
|
||||
## 2) Изменения в коде
|
||||
- Любые правки существующих файлов показывай через diff-превью (SEARCH/REPLACE).
|
||||
- Не вставляй “просто код” для существующих файлов без diff-превью.
|
||||
- Сначала читай файл и только потом предлагай правки (чтобы не ломать стиль и импорты).
|
||||
- При создании новых файлов заголовок блока должен быть: язык + путь, например: python MES_Core/warehouse/services.py
|
||||
|
||||
## 3) Создание новых файлов
|
||||
- Для новых файлов заголовок блока должен быть: язык + путь, например: python MES_Core/warehouse/services.py
|
||||
- Для новых файлов звсегда указывай: полное имя, абсолютный путь и весь контент в одном блоке.
|
||||
|
||||
## 4)Комментарии
|
||||
- В Python/бекенде:
|
||||
@@ -27,19 +22,17 @@
|
||||
- комментарии должны быть нейтральными и описывать поведение/причину, без личных формулировок.
|
||||
- В HTML-шаблонах Django:
|
||||
- не добавляй template-комментарии {# ... #} .
|
||||
- В остальных местах:
|
||||
- не добавляй комментарии “для красоты”; только там, где они реально помогают поддержке.
|
||||
|
||||
## 5) Стиль и конвенции проекта
|
||||
- Смотри на соседние файлы и придерживайся уже принятого стиля (структура, именование, импорты, форматирование).
|
||||
- Не вводи новые библиотеки/фреймворки, пока не проверил, что они уже используются в проекте.
|
||||
- Для UI-таблиц:
|
||||
- если добавляешь новую таблицу — по умолчанию делай её сортируемой (если не мешает UX).
|
||||
- для колонок с кнопками/прогрессом/иконками отключай сортировку.
|
||||
|
||||
- Использовать Service Layer: сложная логика живет в services.py, вьюхи остаются тонкими.
|
||||
|
||||
- Импорты моделей из других приложений — через строковые ссылки в полях ('app.Model') для избежания циклических импортов.
|
||||
|
||||
## 6) Безопасность и секреты
|
||||
- Никогда не логируй и не печатай в stdout:
|
||||
- SECRET_KEY
|
||||
@@ -57,13 +50,36 @@
|
||||
- с датой/временем
|
||||
- доступны из интерфейса “Обслуживание сервера” (tail)
|
||||
- очищаемы кнопкой (если задача не running)
|
||||
|
||||
## 8) Транзакции и гонки данных (warehouse/shiftflow)
|
||||
- Все операции списания/начисления на складе делай в transaction.atomic() .
|
||||
- На изменяемые складские остатки используй select_for_update() чтобы избежать гонок.
|
||||
- Для массовых операций избегай N+1:
|
||||
- select_related / prefetch_related
|
||||
- bulk update/create там, где это безопасно.
|
||||
- bulk update/create там, где это безопасно.
|
||||
|
||||
## 9) Роли и доступ (Django Groups)
|
||||
- Использовать Django Groups как роли приложения (мульти-роли).
|
||||
- Имена групп должны совпадать с кодами ролей, используемых в коде, например:
|
||||
- operator
|
||||
- master
|
||||
- technologist
|
||||
- clerk
|
||||
- supply
|
||||
- prod_head
|
||||
- director
|
||||
- observer
|
||||
- admin
|
||||
- Назначение ролей в Django admin:
|
||||
- Users → выбрать пользователя → поле Groups → добавить нужные группы → Save.
|
||||
- Примечание: на этапе миграции допускается fallback на EmployeeProfile.role, чтобы при деплое до раздачи групп доступ не "слетал".
|
||||
|
||||
### Назначение станков и цехов пользователю
|
||||
- Привязка станков/цехов делается через профиль сотрудника:
|
||||
- Shiftflow → Employee profiles → выбрать профиль пользователя.
|
||||
- Machines: закреплённые станки (для операторов).
|
||||
- Allowed workshops: доступные цеха (ограничение видимости/действий).
|
||||
- Is readonly: режим "только просмотр".
|
||||
|
||||
Правило для новых внутренних функций (как договор):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user