Почта органайзер · Письма в задачи с помощью AI

Каркас системы: входящие письма → черновик задачи → UI оператора. Сейчас это MVP-скелет: FastAPI и React уже поднимаются, почтовые коннекторы, БД и живой LLM ещё не подключены.
Не путать с Android EmailInterface и плагином Email Bot на HuskyServer.
Возможности
- Приём письма —
POST /mails/ingest: нормализация темы, превью тела, отправителя. - Черновик задачи — пайплайн собирает
TaskProposal(заголовок, резюме, действия). Сейчас используетсяfake_proposal, не ответ модели. - Демо для UI —
GET /tasks/example-proposal. - Экран входящих и задач — React: Inbox и Tasks, карточки письма/задачи.
- Промпт — шаблон извлечения задач в
ai/prompts/task_extractor.md. - Docker Compose — api, worker (Celery), Postgres, Redis для будущего стека.
Inbox и список задач с API возвращают пустые массивы: persistence нет. OpenAI-провайдер — заглушка (мок-строка), ключ не обязателен для запуска.
Требования
- Python 3.11+, Node.js 18+ (для Vite).
- Опционально Docker + Compose.
- Опционально Tesseract не нужен. Для живого LLM позже — ключ провайдера в
infra/env/dev.env(файл не коммитить).
Установка и запуск
cd "D:\WinProjects\Почта органайзер"
python -m venv .venv
.\.venv\Scripts\activate
pip install -e backend[dev]
if (-not (Test-Path infra\env\dev.env)) { Copy-Item infra\env\dev.env.example infra\env\dev.env }
uvicorn backend.app.main:app --reload
API: http://localhost:8000 · health: GET /health.
Frontend (второй терминал):
cd frontend
npm install
npm run dev
UI: http://localhost:3000 (прокси/CORS на backend :8000).
Через Docker:
docker compose -f infra/docker-compose.yml up -d
Bootstrap: .\scripts\bootstrap.ps1 (копия env; -InstallDeps ставит venv).
Использование
Демо-задача в UI
- Запустите backend и frontend.
- Откройте
/tasks— можно запросить пример через APIGET /tasks/example-proposal. /— входящие; список пуст, пока нет БД и коннектора.
Ручной ingest
curl -X POST http://localhost:8000/mails/ingest -H "Content-Type: application/json" -d "{\"message_id\":\"1\",\"subject\":\"Согласовать договор\",\"body_text\":\"Нужно до пятницы\",\"sender\":\"client@example.com\"}"
Ответ — TaskProposal из заглушки, без записи в Postgres.
Структура проекта
Почта органайзер/
├── backend/app/ # FastAPI, ingest, AI-обёртки, pipeline
├── frontend/src/ # React Inbox / Tasks
├── ai/prompts/ # шаблоны LLM
├── infra/ # docker-compose, env example
├── scripts/bootstrap.ps1
└── doc/
Технологии
- Python 3.11, FastAPI, Pydantic, uvicorn.
- React 18, TypeScript, Vite, Axios, React Router.
- Заготовки: SQLAlchemy/Alembic, Redis, Celery, openai (зависимость есть, вызов замокан).
- Docker: Postgres 15, Redis 7.
История изменений
Формат Keep a Changelog.
[Unreleased]
Changed
- Документация приведена к четвёрке; README описывает фактический MVP (заглушки inbox/LLM), а не целевой стек как готовый продукт.
[0.1.0]
Added
- Каркас FastAPI: health, ingest, пустые inbox/tasks, example-proposal.
- React UI Inbox/Tasks.
- Docker Compose (api, worker, Postgres, Redis).
- Черновик промпта task extractor.



