aenvs/.docs/00-initial-qa-session/q-003.md

117 lines
4.7 KiB
Markdown
Raw Permalink 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.

# 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: давай указывать его в конфиге;