version: "1.0"
module: Authentication
description: "Модуль регистрации и входа пользователей"

# --- 1. АРХИТЕКТУРА И ИНТЕРФЕЙС (Глазами человека и разметки ИИ) ---
components:
  - name: LoginView
    type: Page
    route: "/login"
    children: [LoginForm]

  - name: LoginForm
    type: Component
    inputs:
      - name: defaultEmail
        type: String
    outputs:
      - name: onSubmit
        action: AuthWorkflow.startLogin

# --- 2. БИЗНЕС-ПРОЦЕССЫ И СЦЕНАРИИ (Четкие инструкции для ИИ) ---
workflows:
  AuthWorkflow:
    description: "Процесс аутентификации пользователя"
    initial_state: Idle

    states:
      Idle:
        "on":
          SUBMIT_FORM:
            target: Validating
            payload: { email: String, pass: String }

      Validating:
        entry: executeValidation
        "on":
          VALIDATION_SUCCESS:
            target: RequestingApi
          VALIDATION_FAIL:
            target: Idle
            action: showValidationError

      RequestingApi:
        entry: AuthService.login
        "on":
          API_SUCCESS:
            target: Authenticated
            action: [saveToken, redirectToDashboard]
          API_ERROR:
            target: Idle
            action: showApiError

      Authenticated:
        type: Final

# --- 3. ИНТЕГРАЦИИ И ДАННЫЕ (Контракты для генерации кода) ---
services:
  AuthService:
    methods:
      - name: login
        async: true
        params: { email: String, pass: String }
        returns: { token: String, user: { id: ID, name: String } }
        error: { code: String, message: String }
