# Follow-up Questions (q-003) ## Структура данных для переменных окружения 3. **Тип `Env` содержит только `Name` и `Path`:** ```golang type Env struct { Name string `json:"name"` Path string `json:"path"` } ``` Но `parseLocals` возвращает `map[K]map[string]any` — т.е. `filename → (key → value)`. **Вопрос:** Где хранятся сами переменные (key-value pairs)? - (a) Нужен отдельный тип `EnvVar` с ключом и значением? - (b) Добавить поле `Vars map[string]string` в `Env`? - (c) Переменные хранятся только на сервере, `Env` — только metadata? Answer: Переменные окружения бывают не только строками, учти это и создай подходящую структуру; --- ## Создание проекта 4. **Как создаётся новый проект?** - `project save -n` — обновляет имя существующего проекта - `project remove` — удаляет проект - **Нет команды для создания проекта** Варианты: - (a) `aevs project create -n "name"` — отдельная команда - (b) `aevs sync` создаёт проект автоматически, если `project_id` в конфиге пустой - (c) Проекты создаются только через веб-интерфейс сервера Answer: (b) --- ## Инициализация конфига 5. **Как создаётся `aevs.yaml` впервые?** - `aevs sync` без конфига → ошибка "no config found" Варианты: - (a) Пользователь создаёт вручную - (b) Команда `aevs init` создаёт шаблон конфига - (c) `aevs init` + интерактивные промпты (project name, api_key, scan for env files) Answer: (c) --- ## Merge: контекст проекта 6. **Команда `aevs merge -v "ts1 ts2"` — как определяется проект?** - Сейчас нет `-c, --config` флага в описании merge - Версии принадлежат конкретному проекту **Нужно добавить:** - `-c, --config` для чтения `project_id` из конфига? - Или `-p, --project {uuid}` для явного указания? Answer: Нужно добавить оба флага как опциональные, если ни одного нет выводить ошибку --- ## Sync: "save into current version" 7. **В sync описаны два варианта:** > - result files creates new version > - result files should be saved into current version **Вопрос по второму варианту:** - "Save into current version" = обновление существующей версии in-place? - Не создаст ли это конфликты, если другой пользователь уже синхронизировался с этой версией? - Или имеется в виду что-то другое? Answer: да, ты прав, это создаст конфликты, поэтому всегда создавай новые версии, пока их кто-то не смерджит; --- ## Wrangler reference 8. **По поводу wrangler:** Изучил — Cloudflare wrangler использует REST API с Bearer token authentication. **Предлагаю для aevs:** ``` Base URL: configurable (e.g., https://api.aevs.io) Auth: Header `Authorization: Bearer {api_key}` Format: JSON Endpoints: GET /projects → []Project POST /projects → Project (create) PATCH /projects/{id} → Project (update name) DELETE /projects/{id} → void GET /projects/{id}/versions → []Version POST /projects/{id}/versions → Version (create) GET /projects/{id}/versions/{ts} → Version (with full env data) PATCH /projects/{id}/versions/{ts} → Version (update state/merge) ``` **Подходит такой интерфейс?** Answer: да; --- ## Server Base URL 9. **Где хранится URL сервера?** - В конфиге `aevs.yaml`? - В environment variable (e.g., `AEVS_API_URL`)? - Захардкожен для MVP? Answer: давай указывать его в конфиге;