MicroAI Paygate
AI 요청 결제 게이트웨이로 EIP-712 서명, 영수증 발행, 클라이언트 서명 검증 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Конвертер валют онлайн в Беларуси
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Last reviewed: 2026-07-31
Конвертер валют по официальному курсу Национального банка Республики Беларусь.
public/rates-fallback.json): если API НБ РБ недоступен при первой
загрузке, показываются последние сохранённые курсы с пометкой «резервная копия» (issue #80)IM_TEXTAREA в панели чата с вставкой суммы прописью в сообщение
(в мобильном приложении Б24 — крупнее контролы, копирование и вставка скрыты)Приложение умеет работать в двух режимах: как обычный сайт и внутри Битрикс24 как iframe-приложение — виджет в панели над полем ввода сообщения чата.
Как зарегистрировать приложение в портале, что прописать в его карточке и как оно устанавливается —
docs/PROCESS.md§0.1 и §5.
UI виджета и страницы установки переведены через @nuxtjs/i18n. Полные переводы — ru, en; для остальных языков, поддерживаемых Битриксом, ключи падают в английский фолбэк, плюс отдельно переведён app.title (он попадает в LANG_ALL у placement.bind и показывается как имя виджета в нужном языке портала).
Добавить язык: положить JSON в i18n/locales/<code>.json и добавить код в i18n/i18n.ts.
Суммы показываются в формате 1 234 567,89 (decimal, ровно 2 знака после
запятой, группировка тысяч неразрывным пробелом, локаль ru-RU). Код валюты
выводится в левой колонке строки — внутрь поля ввода он намеренно не
включается, чтобы не сужать поле и не обрезать число. Цифры используют
tabular-nums (моноширинные), поэтому не «прыгают» при пересчёте.
Под списком валют выводится служебный расчёт от суммы в BYN:
(BYN − 20%) × 20% = Y
Алгебраически это BYN × 0.8 × 0.2 ≡ BYN × 0.16 — константа
FORMULA_FACTOR = 0.16 в app/utils/formatters.ts.
Результат округляется до 2 знаков. Требование задано владельцем страницы.
Под результатом формулы небольшим шрифтом выводится текущий календарный квартал (например, «II квартал 2026»).
Документация проекта — три файла:
docs/PROJECT_MAP.md(из чего собран проект и что в каком статусе),docs/PROCESS.md(весь путь от настройки до публикации в Bitrix24) иdocs/FUTURE.md(что отложено на потом). Разбор по файлам и конвенции кода — вCLAUDE.md. Ниже — общий обзор.
app/
app.vue — тонкий корень: useHead/SEO, theme-init (FOUC-гард), <NuxtLayout>
layouts/default.vue — каркас сайта: шапка (тема, навигация), подвал и Яндекс.Метрика
layouts/clear.vue — минимальный layout для /install и /widget/converter
app.config.ts — включает colorMode b24ui (без него переключатель темы — no-op)
assets/css/main.css — глобальные стили (подключается в nuxt.config.ts)
pages/index.vue — экран конвертера (тонкий): строки, прописью, формула, nudge «Помог курс?»
pages/install.vue — установка приложения в портал (регистрация виджета в чате)
pages/widget/converter.vue — компактный конвертер для панели над полем ввода чата
config/currencies.ts — каталог валют (состав, MAX_AMOUNT, дефолт)
config/b24.ts — константы встройки: права и код места в портале, куда встраивается виджет
composables/
useNbrbRates.ts — загрузка курсов, кэш, состояние строк, ввод, health-цели
useCopyFeedback.ts — копирование в буфер с вспышкой ok/err
useMetrikaGoal.ts — обёртка над Яндекс.Метрикой (цели, no-op вне standalone)
useB24.ts — обёртка над SDK портала (init/handshake, доступ к фрейму)
utils/ — чистые функции, покрыты тестами:
converter.ts — конвертация и адаптивный шаг
formatters.ts — формат чисел, формула, «чистое» число для буфера, метка квартала
и общее округление до копеек (на экране, в буфере и прописью —
одно и то же число)
numberToWords.ts — сумма прописью на русском
nbrb.ts — парсинг ответа НБ РБ, слияние дневного/месячного фидов
ratesCache.ts — валидация/сериализация кэша курсов
copyFeedback.ts — clipboard + флеш-машина + выбор цвета
site.ts / build.ts — ссылки экосистемы, промо-карточки, версия сборки для подвала
metrika.ts — ядро целей статистики (без счётчика ничего не шлёт)
webVitals.ts — замеры скорости страницы диапазонами
isEmbedded.ts — определение, что страница открыта во фрейме
langAll.ts — имя виджета на всех языках портала
chatMessage.ts — текст, который виджет вставляет в чат
b24Placements.ts — групповые запросы к порталу при установке виджета
url.ts / sleep.ts — только http(s)-ссылки, пауза для шагов демо-установки
directives/holdRepeat.ts — автоповтор +/− при удержании
components/ — SiteFooter, ConverterPromo (промо-карточки), CopyAnnouncer
(озвучка копирования для скринридеров) и др.
plugins/webVitals.client.ts — Core Web Vitals (LCP/CLS/INP) → цели Метрики (только standalone)
public/metrika.js — статический бутстрап Яндекс.Метрики (CSP без inline-скриптов)
public/rates-fallback.json — снапшот «последних известных курсов» (fallback при сбое API, #80)
public/og.png — готовый рендер OG-картинки (закоммичен; регенерация pnpm og:snapshot)
scripts/og.svg — исходник OG-картинки (→ public/og.png через scripts/gen-og.mjs)
scripts/csp-hashes.mjs — подстановка sha256-хэшей inline-скриптов в CSP при сборке
scripts/gen-og.mjs — генератор OG-картинки из og.svg (Chromium; pnpm og:snapshot)
scripts/gen-rates-fallback.mjs — генератор снапшота курсов (pnpm rates:snapshot)
scripts/screenshots.mjs — скриншоты роут × вьюпорт × тема (pnpm screenshots)
scripts/check.sh / .ps1 — все проверки одной командой (см. «Локальная разработка»)
i18n/ — локали: список языков, конфиг, переводы locales/<code>.json
tests/ — vitest: *.test.ts (node) + nuxt/ (@nuxt/test-utils: composables, index.vue)
Диагностика/приватность (цели Метрики, инвариант «shape/outcome, never content») —
docs/PROJECT_MAP.md §4.
Курсы берутся из публичного API НБ РБ:
https://api.nbrb.by/exrates/rates?periodicity=0 (поля Cur_Abbreviation,
Cur_Scale, Cur_OfficialRate; курс за единицу = Cur_OfficialRate / Cur_Scale).
pnpm install # postinstall сам прогонит `nuxt prepare` (генерит .nuxt/ для lint/typecheck/test)
pnpm dev
Проверки перед пушем (запускаются и в CI):
pnpm lint # ESLint (в т.ч. @intlify/vue-i18n/no-unused-keys — осиротевшие ключи локалей)
pnpm typecheck # vue-tsc
pnpm test # Vitest
Одной командой все гейты (install + lint + typecheck + test + generate) — запусти и пришли вывод:
bash scripts/check.sh # Linux/macOS
powershell -ExecutionPolicy Bypass -File scripts\check.ps1 # Windows
Тестами покрыто всё, кроме живого обмена с порталом: вставка в чат, ветка установки
вне портала и чистая логика встройки проверяются автотестами, а сам обмен с реальным
Битрикс24 — только руками. Для визуальной проверки: pnpm dev и открыть /, /install, /widget/converter — на /install
крутится прогресс с редиректом на / (вне портала), виджет показывает конвертер
с прописью и неактивной кнопкой «Вставить в чат».
Переменные для локальной разработки — в .env. Полный список с пояснениями лежит
в .env.example; для pnpm dev ни одна из них не обязательна.
Push в main → GitHub Actions собирает образ → выкладывает в GHCR → Watchtower на сервере
обновляет контейнер за ~5 минут, за общим nginx-proxy с сертификатом Let's Encrypt.
Настройка сервера, переменные, команды
make, откат и разбор инцидентов —docs/PROCESS.md§0.3, §4 и §7.