aenvs/.docs/01-opus-docs/02-q.md

3.5 KiB
Raw Permalink Blame History

Remaining Questions (02-q)

EnvValue type design

  1. Предложенный тип EnvValue:

    type EnvValue struct {
        Type  string `json:"type"`  // "string", "number", "bool", "json"
        Value any    `json:"value"`
    }
    

    Вопросы:

    • Достаточно ли типов: string, number, bool, json?
    • Или нужны дополнительные (например, array, secret)?
    • Нужно ли шифрование для sensitive values (passwords, tokens)?

    Answer: нужны все типы для того чтобы создать валидный .env файл на их основе


Config creation during init

  1. При aevs init — что делать если aevs.yaml уже существует?

    • (a) Ошибка: "Config already exists"
    • (b) Перезаписать с предупреждением
    • (c) Merge: добавить новые env файлы в существующий конфиг

    Answer: (c) если эта логика не предусмотрена в другой команде, (a) если у нас уже существует команда для добавления новых env файлов


Version timestamp uniqueness

  1. Timestamp как ID версии:

    • Unix timestamp в секундах может не быть уникальным (два пользователя создают версию в одну секунду)
    • Использовать миллисекунды?
    • Или сервер должен гарантировать уникальность и возвращать корректный ts?

    Answer: используй nanosec


Sync without changes

  1. Что делать если при sync нет изменений (local = remote)?
    • (a) Сообщение "Already up to date" и ничего не делать
    • (b) Всё равно создавать новую версию
    • (c) Опционально через флаг --force

Answer: (a)

Delete confirmation

  1. При aevs project remove — как именно подтверждать удаление?

    • Ввести полное имя проекта?
    • Ввести "DELETE" или подобное ключевое слово?
    • Флаг --force для skip confirmation?

    Answer: ввести полное имя проекта (в промпте напиши его, чтобы нужно было перепечатать просто)


parseLocals edge cases

  1. Какие файлы считать env файлами?
    • Только *.env.* или также просто .env? --> .env тоже;
    • Игнорировать .env.example, .env.sample? --> не игнорировать;
    • Игнорировать файлы в node_modules/, .git/? --> игнорировать;

API error responses

  1. Формат ошибок от сервера:
    {
      "error": "Project not found",
      "code": "PROJECT_NOT_FOUND"
    }
    
    Или другой формат? Answer: этот формат норм

Concurrent sync

  1. Если два пользователя делают sync одновременно:

    • Оба создадут новые версии?
    • Нужен ли механизм блокировки (optimistic locking)?
    • Или это решается на уровне merge?

    Answer: оба создают новые версии;