Files
scud_orion_ai_v2/HOWTO/работа с кодом.md
T

73 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🛠 HOWTO: Правила внесения изменений и передачи кода в проекте
## 📌 Зачем это нужно
Проект `scud_orion_ai_v2` активно растет (17+ модулей, СУБД SQLite, ИИ-контур). Передача полных файлов кода при каждой мелкой правке сжигает окно контекста LLM, замедляет диалог и приводит к потере ранее внесенных архитектурных фич.
---
## 🎯 Правила для разработчика и ИИ
### 1. Формат передачи изменений
При запросах и ответах используются **точечные фрагменты кода** (Diff-стиль) с указанием привязок.
Любой фрагмент должен содержать:
1. **Точный путь к файлу** (`services/excel_exporter.py`).
2. **Имя целевой функции/класса** (`generate_summary_excel`).
3. **Зацепку (Context Anchor)** — уникальную соседнюю строку или блок `try/except`.
---
## 📐 Шаблоны фрагментов
### Вариант А: Замена существующей логики
> **Файл:** `services/excel_exporter.py`
> **Функция:** `generate_summary_excel()`
> **Место:** Строка ~150, блок фильтрации `no_pass_df`
>
> ❌ **Удалить:**
> ```python
> no_pass_df = merged_df[merged_df.get('no_scud_pass', False) == True]
> ```
>
> ✅ **Вставить:**
> ```python
> if 'no_scud_pass' in merged_df.columns:
> no_pass_df = merged_df[merged_df['no_scud_pass'] == True]
> else:
> no_pass_df = pd.DataFrame()
> ```
---
### Вариант Б: Вставка нового условия/блока
> **Файл:** `main.py`
> **Функция:** `detect_all_anomalies()`
> **Место:** После цикла `for idx, row in merged_df.iterrows():`
>
> ➕ **Вставить код:**
> ```python
> # ИСКЛЮЧЕНИЯ без документов 1С НЕ пропускаются дальше к аномалиям СКУД
> if is_exc and not has_1c_reason:
> continue
> ```
---
### Вариант В: Git Unified Diff Format
> **Файл:** `services/data_loader.py`
> ```diff
> @@ def process_scud_anomalies(df_scud, exceptions=None): @@
> - first_act = '—'
> + # Сохраняем вычисленную ранее активность из БД/файла
> + first_act = existing_fa if existing_fa not in ['—', '', 'None'] else '—'
> ```
---
## 🚀 Чек-лист перед запуском
1. Проверить синтаксис через `python -m py_compile <файл.py>`.
2. Запустить скрипт с флагом отладки `python main.py -d`.
3. Убедиться, что снапшот записан в SQLite (`python scripts/db_cli.py snapshots`).