структура проекта приложений Fabric

Fabric проекты приложений используют согласованный макет папок, чтобы быстро найти модели данных, конфигурацию серверной части и интерфейсный код. В этой статье описываются файлы и папки, с которыми вы, скорее всего, будете работать после создания проекта.

Макет папки

При создании проекта приложений Fabric шаблон создает следующую структуру:

your-project/
├── rayfin/
│   ├── data/
│   │   ├── schema.ts
│   │   └── *.ts
│   ├── .env
│   ├── rayfin.yml
│   └── tsconfig.json
├── src/
├── package.json
├── tsconfig.json
└── README.md

Файлы конфигурации ключей

rayfin/rayfin.yml

Файл rayfin/rayfin.yml — это основной файл конфигурации для серверной части Fabric Apps. Он определяет, какие службы выполняются во время локальной разработки и поддерживают интерполяцию переменных среды для динамических значений конфигурации.

Полный пример:

id: my-app
name: my-app
version: 1.0.0
services:
  auth:
    enabled: true
    expiryInMinutes: 60
    refreshToken:
      lifetimeInDays: 30
    customClaims:
      tenant: "default"
    scopes:
      - read:data
      - write:data
    allowedRedirectUris:
      - http://localhost:5173
      - http://localhost:5173/auth/callback
    password:
      enabled: true
    fabric:
      enabled: false
    passwordless:
      magicLink:
        enabled: false
        expiryMinutes: 15
      smsOtp:
        enabled: false
    email:
      enabled: false
      provider: smtp
      senderName: Rayfin Platform
      verificationTokenExpirationHours: 24
      passwordResetTokenExpirationMinutes: 30
      smtp:
        host: maildev
        port: 1025
        senderEmail: noreply@rayfin.local
        username: ""
        password: ""
        useSsl: false
        useStartTls: false
        webPort: 1080
  data:
    enabled: true
    dialect: mssql
  storage:
    enabled: false
  staticHosting:
    enabled: true
    root: .
    folder: dist
    buildCommand: npm run build
    indexDocument: index.html

Конфигурация включает следующие ключевые поля:

Поля верхнего уровня

Поле Тип Обязательный Description
id string Да Project slug, используемый в качестве имени project Docker Compose и идентификатор элемента Fabric.
name string Да Отображаемое имя проекта, понятное человеку.
version string Да Версия проекта (semver).
services object Да Блок конфигурации службы.

services.data

Поле Тип По умолчанию Description
enabled boolean false Включите службу данных.

services.auth

Поле Тип По умолчанию Description
enabled boolean false Включите службу проверки подлинности.
expiryInMinutes number Срок действия токена JWT в минутах.
customClaims Record<string, string> Пользовательские утверждения, добавленные в выданные JWT.
scopes string[] Области OAuth (например, ["read:data", "write:data"]).
refreshToken.lifetimeInDays number Срок действия токена обновления в днях.
allowedRedirectUris string[] ["http://localhost:5173"] Разрешенные URI для перенаправления обратных вызовов аутентификации.

services.auth.password

Поле Тип По умолчанию Description
enabled boolean true Включение проверки подлинности электронной почты и пароля для локальной разработки

services.auth.fabric

Поле Тип По умолчанию Description
enabled boolean false Включите аутентификацию Fabric через брокер (единый вход (SSO) Microsoft Entra ID).

services.staticHosting

Поле Тип По умолчанию Description
enabled boolean false Включите размещение статического содержимого.
root string Корневой каталог фронтенд-проекта (относительно корневого каталога проекта).
folder string "dist" Каталог, содержащий встроенные статические ресурсы (относительно root).
buildCommand string Команда оболочки для выполнения перед упаковкой (например, npm run build).
indexDocument string Документ по умолчанию служит для корневого пути (например, index.html).

Подсказка

Все строковые значения поддерживают интерполяцию переменных среды с использованием синтаксиса ${VAR} и ${VAR:-default}. Переменные определяются из rayfin/.env и среды оболочки.

rayfin/.env

Файл rayfin/.env — это необязательный файл переменных среды, используемый для передачи значений в rayfin.yml через интерполяцию. Не фиксируйте секреты в репозитории. Вместо этого создайте rayfin/.env.example файл в целях документации и добавьте .env его в .gitignore файл.

rayfin/tsconfig.json

Файл rayfin/tsconfig.json — это конфигурация TypeScript с ссылкой на проект, используемая интерфейсом командной строки Fabric Apps для компиляции определений сущностей. Он расширяет корневой файл tsconfig.json и переопределяет параметры, которые нужны приложениям Fabric, такие как composite: true и разрешение модулей Node.js. Не нужно изменять этот файл напрямую.

Файлы модели данных

rayfin/data/*.ts

Файлы в папке rayfin/data/ определяют ваши сущности. Сущности — это классы TypeScript с декоратором @entity(), а также с декораторами полей, такими как @uuid() и @text(). Каждый файл сущности экспортирует класс, представляющий модель данных в приложении.

rayfin/data/schema.ts

Файл rayfin/data/schema.ts сопоставляет имена сущностей с их классами. Клиент SDK Rayfin использует это отображение для типобезопасного доступа к сущностям через client.data.<Entity>. При добавлении новой сущности необходимо зарегистрировать ее в этом файле схемы.

Созданные артефакты

rayfin/.temp/

Папка rayfin/.temp/ содержит артефакты серверной части, которые создаются при запуске сервера разработки. Если серверная часть, как представляется, использует устаревшую схему или конфигурацию, остановите и перезапустите стек разработки для повторного создания этих файлов.

Important

Не зафиксируйте папку .temp/ в репозитории. Добавьте его в .gitignore файл.

Структура внешнего интерфейса

Папка src/ содержит код интерфейсного приложения. Точную структуру зависит от того, какой шаблон вы выбрали при создании проекта, например React или Vue.

Fabric шаблоны приложений используют следующие переменные среды Vite для конфигурации внешнего интерфейса:

  • VITE_RAYFIN_API_URL — базовый URL-адрес, направляющий фронтенд к бэкенду Fabric Apps. Задайте эту переменную среды перед запуском npm run dev , чтобы переопределить значение по умолчанию.
  • VITE_RAYFIN_PUBLISHABLE_KEY — доступный для публикации ключ, используемый для проверки подлинности клиента.
  • VITE_FABRIC_ITEM_ID — идентификатор элемента Fabric, заданный rayfin up. Записано в .env.fabric-<workspacename> (и в .env.fabric) во время развертывания. Используется для посреднической проверки подлинности в Fabric.
  • VITE_FABRIC_WORKSPACE_ID — идентификатор рабочей области Fabric, заданный rayfin up. Записывается вместе с VITE_FABRIC_ITEM_ID во время развертывания.