architect/_archive/2025-11-26-cleanup/cifra/domains/02_development/docs/guide.md

CODE MODE - Правила работы с кодом

Версия: 1.0
Дата: 2025-11-10

НАЗНАЧЕНИЕ

Режим для работы с кодом: разработка, правки, добавление функций.


🔍 ПОИСК ГОТОВОГО КОДА (ОБЯЗАТЕЛЬНО!)

ПРАВИЛО НОМЕР 1: Всегда искать перед генерацией

ПЕРЕД любой генерацией кода:

1. Декомпозировать задачу
2. Читать реестр
3. Искать готовые решения
4. Использовать найденное
5. Генерировать ТОЛЬКО недостающее

📚 ПОРЯДОК ПОИСКА

Шаг 1: Читать реестр

# Главный индекс
cat /opt/claude-workspace/registry/INDEX.yaml

# Поиск по функциональности
cat /opt/claude-workspace/registry/index/by-function.yaml

Шаг 2: Определить тип задачи

Примеры:
- "Добавить авторизацию" → authentication
- "Показать таблицу" → table_display
- "Вызвать API" → api_calls
- "Хэшировать пароль" → password_hashing

Шаг 3: Проверить источники в приоритете

ПРИОРИТЕТ ИСТОЧНИКОВ:

1️⃣ EXTERNAL LIBRARY (внешняя библиотека)
   ✅ Если есть - использовать её!
   ✅ Экономия: 95-99% токенов (только import)

   Примеры:
   - Авторизация → streamlit-authenticator
   - Таблицы → streamlit-aggrid
   - API вызовы → requests
   - Парсинг дат → dateutil

2️⃣ INTERNAL COMPONENT (наш компонент)
   ✅ Если создан - копировать
   ✅ Экономия: 70-90% токенов

   Примеры:
   - components/atoms/functions/auth/hash_password.py
   - components/molecules/pages/table_page.py
   - components/organisms/auth_system/

3️⃣ PROJECT CODE (код из проектов)
   ✅ Извлечь и адаптировать
   ✅ Экономия: 50-70% токенов

   Примеры:
   - projects/marketplace/core/auth.py
   - projects/marketplace/modules/api/ozon.py

4️⃣ ARCHIVE CODE (из архива)
   ⚠️ Может быть устаревшим
   ✅ Экономия: 30-50% токенов

   Примеры:
   - archive/2025-11-09-old-structure/

5️⃣ GENERATE NEW (генерация с нуля)
   ❌ ПОСЛЕДНИЙ ВАРИАНТ!
   💸 Дорого: 0% экономии

💡 ПРИМЕРЫ РАБОТЫ

Пример 1: Добавить авторизацию

ЗАДАЧА: "Добавить авторизацию в проект analytics"

ШАГ 1: Декомпозиция
- Login форма
- Хэширование паролей
- Сессии
- Права доступа

ШАГ 2: Поиск в реестре
cat registry/index/by-function.yaml | grep -A 20 "authentication:"

ШАГ 3: Найдено
 EXTERNAL: streamlit-authenticator (готовое решение, 5 мин)
 PROJECT CODE: marketplace/core/auth.py (работает, можно копировать)

ШАГ 4: Рекомендация
Для быстрого MVP: pip install streamlit-authenticator
Для гибкости: копировать из marketplace

ШАГ 5: Использование
# Вариант A: External library
pip install streamlit-authenticator
# Копировать пример из документации

# Вариант B: Код из проекта
cp projects/marketplace/core/auth.py projects/analytics/core/

ЭКОНОМИЯ: 4500 tokens (генерация с нуля)  200 tokens (адаптация)

Пример 2: Показать таблицу с фильтрами

ЗАДАЧА: "Добавить страницу Products с таблицей и фильтрами"

ШАГ 1: Декомпозиция
- Таблица с данными
- Фильтры (поиск, категория)
- Экспорт в Excel
- Пагинация

ШАГ 2: Поиск
cat registry/index/by-function.yaml | grep -A 15 "table_display:"

ШАГ 3: Найдено
 EXTERNAL: st.dataframe (простая таблица)
 EXTERNAL: streamlit-aggrid (сложная с фильтрами)
 PROJECT CODE: marketplace/pages/03_Orders.py (таблица + фильтры + экспорт)

ШАГ 4: Решение
Копировать marketplace/pages/03_Orders.py как основу:

cp projects/marketplace/solution/mvp/code/pages/03_Orders.py \
   projects/analytics/pages/01_Products.py

Заменить:
- orders  products
- get_orders()  get_products()
- Адаптировать фильтры

ЭКОНОМИЯ: 3500 tokens  800 tokens

Пример 3: Вызвать API

ЗАДАЧА: "Интеграция с API поставщика"

ШАГ 1: Поиск
grep -A 10 "api_calls:" registry/index/by-function.yaml

ШАГ 2: Найдено
 EXTERNAL: requests (стандарт)
 PROJECT CODE: marketplace/modules/api/ozon.py (пример интеграции)

ШАГ 3: Решение
Использовать requests + паттерн из ozon.py:

import requests

class SupplierAPI:
    def __init__(self, api_key):
        self.session = requests.Session()
        self.session.headers.update({"Authorization": f"Bearer {api_key}"})

    def get_products(self):
        response = self.session.get("https://api.supplier.com/products")
        return response.json()

ЭКОНОМИЯ: 2000 tokens  500 tokens

❌ ЧТО НИКОГДА НЕ ДЕЛАТЬ

 Генерировать авторизацию с нуля
    Использовать streamlit-authenticator ИЛИ копировать из marketplace

 Генерировать API клиент с нуля
    Использовать requests ИЛИ копировать паттерн из проекта

 Генерировать таблицу с фильтрами с нуля
    Использовать streamlit-aggrid ИЛИ копировать из marketplace

 Генерировать CRUD операции с нуля
    Использовать SQLAlchemy session

 Игнорировать реестр
    ВСЕГДА читать registry/ перед генерацией

✅ ЧТО ВСЕГДА ДЕЛАТЬ

 Декомпозировать задачу на части
 Читать registry/INDEX.yaml
 Искать по функциональности в registry/index/by-function.yaml
 Проверять external libraries
 Проверять код в проектах
 Комбинировать готовые части
 Генерировать ТОЛЬКО недостающее

💾 ПОСЛЕ ГЕНЕРАЦИИ

Если создал что-то переиспользуемое:

1. Извлечь как компонент

# Если это функция (atom)
mv new_function.py /opt/claude-workspace/components/atoms/functions/

# Если это модуль (molecule)
mv new_module.py /opt/claude-workspace/components/molecules/

# Если это система (organism)
mv new_system/ /opt/claude-workspace/components/organisms/

2. Добавить в catalog.yaml

# components/catalog.yaml
atoms:
  - id: func-xxx-001
    name: "Название функции"
    file: atoms/functions/category/function.py
    description: "Что делает"
    usage_example: |
      from components.atoms.functions.category import function
      result = function(args)

3. Обновить реестр

# registry/INDEX.yaml
internal_components:
  total: 88  # было 87, стало 88

📊 МЕТРИКИ ЭКОНОМИИ

Отслеживать экономию токенов:

Задача: Добавить авторизацию

БЕЗ реестра:
- Генерация с нуля: 5000 tokens
- Время: 2 минуты генерации

С реестром:
- Использование streamlit-authenticator: 200 tokens
- Время: 30 секунд

ЭКОНОМИЯ: 4800 tokens (96%)

🎯 WORKFLOW

1. ЗАДАЧА получена
   
2. ДЕКОМПОЗИЦИЯ (на части)
   
3. ПОИСК в registry/
   
4. НАЙДЕНО?  использовать
   НЕ НАЙДЕНО?  генерировать
   
5. СОХРАНИТЬ переиспользуемое
   
6. ОБНОВИТЬ catalog.yaml

📚 ССЫЛКИ


Версия: 1.0
Дата: 2025-11-10
Статус: Активен