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

4.7 KiB
Raw Blame History

Follow-up Questions (q-003)

Структура данных для переменных окружения

  1. Тип Env содержит только Name и Path:

    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: Переменные окружения бывают не только строками, учти это и создай подходящую структуру;


Создание проекта

  1. Как создаётся новый проект?

    • project save -n — обновляет имя существующего проекта
    • project remove — удаляет проект
    • Нет команды для создания проекта

    Варианты:

    • (a) aevs project create -n "name" — отдельная команда
    • (b) aevs sync создаёт проект автоматически, если project_id в конфиге пустой
    • (c) Проекты создаются только через веб-интерфейс сервера

    Answer: (b)


Инициализация конфига

  1. Как создаётся 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: контекст проекта

  1. Команда aevs merge -v "ts1 ts2" — как определяется проект?

    • Сейчас нет -c, --config флага в описании merge
    • Версии принадлежат конкретному проекту

    Нужно добавить:

    • -c, --config для чтения project_id из конфига?
    • Или -p, --project {uuid} для явного указания?

    Answer: Нужно добавить оба флага как опциональные, если ни одного нет выводить ошибку


Sync: "save into current version"

  1. В sync описаны два варианта:

    • result files creates new version
    • result files should be saved into current version

    Вопрос по второму варианту:

    • "Save into current version" = обновление существующей версии in-place?
    • Не создаст ли это конфликты, если другой пользователь уже синхронизировался с этой версией?
    • Или имеется в виду что-то другое?

    Answer: да, ты прав, это создаст конфликты, поэтому всегда создавай новые версии, пока их кто-то не смерджит;


Wrangler reference

  1. По поводу 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

  1. Где хранится URL сервера?
    • В конфиге aevs.yaml?
    • В environment variable (e.g., AEVS_API_URL)?
    • Захардкожен для MVP? Answer: давай указывать его в конфиге;