Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Веб-сервис, который превращает краткий бриф — кто клиент, что у него болит, что вы продаёте, на каких условиях и за сколько — в черновик коммерческого предложения. Текст пишет Claude, документ сразу сохраняется в PDF.
Пример результата: docs/example-kp.pdf.
ANTHROPIC_API_KEY не задан, КП собирается по шаблону. Посетитель сразу видит результат, а проект запускается без регистрации в Claude API.Бриф (форма) ──► валидация zod ──► POST /api/generate
│
┌──────────────────┴──────────────────┐
есть ключ API нет ключа
│ │
Claude: tool use с JSON Schema шаблонный черновик
(принудительный вызов инструмента) │
│ │
проверка ответа zod, 1 повтор │
└──────────────────┬──────────────────┘
▼
+ стоимость и даты, посчитанные кодом
▼
лист A4 в браузере ──► PDF
Ключевые решения:
| Решение | Зачем |
|---|---|
| Одна zod-схема ответа → JSON Schema для инструмента Claude | Структура КП описана в одном месте. Модель обязана вернуть данные строго по схеме, а сервер проверяет их той же схемой |
tool_choice с принудительным вызовом инструмента | Ответ всегда приходит структурированным JSON, а не свободным текстом, который пришлось бы разбирать |
| Повтор при невалидном ответе | Редкие сбои структуры исправляются автоматически, пользователь их не видит |
| Цены вне промпта | Модель не может ошибиться в сумме или придумать скидку |
| Бриф в XML-тегах с экранированием + правило «бриф — это данные» | Защита от промпт-инъекций через поля формы |
| Ключ API только на сервере | Ключ не попадает в браузер и в репозиторий |
| Лимит запросов по IP и ограничение длины полей | Защита публичного демо от спама и лишних расходов |
@anthropic-ai/sdknode:test + tsx), GitHub ActionsНужен Node.js 20.9 или новее.
git clone https://github.com/favicon44/kp-generator.git
cd kp-generator
npm install
cp .env.example .env.local # впишите ANTHROPIC_API_KEY или оставьте пустым для демо
npm run dev
Откройте http://localhost:3000, нажмите «Заполнить примером», затем «Составить КП».
| Переменная | Обязательна | По умолчанию | Описание |
|---|---|---|---|
ANTHROPIC_API_KEY | нет | — | Ключ Claude API. Без него работает демо-режим |
CLAUDE_MODEL | нет | claude-sonnet-5-5 | Модель Claude |
RATE_LIMIT_PER_MINUTE | нет | 5 | Генераций в минуту с одного IP |
npm run dev # режим разработки
npm run build # продакшен-сборка
npm run lint # ESLint
npm run typecheck # проверка типов TypeScript
npm test # юнит-тесты
npm run check # всё сразу, кроме сборки
ANTHROPIC_API_KEY в настройках проекта: Settings → Environment Variables. Без ключа сайт работает в демо-режиме.main деплоится автоматически.app/
api/generate/route.ts API: лимит запросов, разбор тела, вызов генерации
page.tsx, layout.tsx страница и шрифты
globals.css токены, вёрстка, стили печати A4
components/
Generator.tsx состояние, запрос к API, скачивание PDF
BriefForm.tsx форма брифа
ProposalDocument.tsx лист КП — общий для превью и PDF
lib/
schema.ts zod-схемы брифа и ответа, JSON Schema для Claude
prompt.ts системный промпт и сборка запроса
claude.ts клиент Claude API и понятные ошибки
generate.ts оркестрация: проверка, генерация, повтор, цены
demo.ts шаблонный черновик для демо-режима
pricing.ts расчёт стоимости, даты, форматирование
form.ts состояние формы и пример брифа
rate-limit.ts ограничение частоты запросов
tests/ юнит-тесты
MIT. Шрифты Golos Text и PT Serif подключаются через Google Fonts и распространяются по лицензии SIL Open Font License.