Перейти к содержанию

Архитектура

Два полушария + мост

flowchart TB
    subgraph RIGHT["SINQLY — правое полушарие<br/>сигналы · UX · LLM"]
        direction TB
        BOT["Telegram-бот FSM<br/>/state 8 вопросов · /priority · /decisions"]
        WEB["Web-shell sinqly.ru<br/>dashboard + /api proxy"]
        ADV["Advisor digest<br/>1 действие / неделя"]
        UI["Web-UI<br/>задачи · проекты · state · ставки · финансы"]
    end

    subgraph BRIDGE["МОСТ"]
        direction TB
        TGID["tg_user_id<br/>449259198"]
        CLIENT["pfbo_client.py<br/>httpx · retry · X-PFBO-Token"]
    end

    subgraph LEFT["PFBO — левое полушарие<br/>числа · scoring · калибровка"]
        direction TB
        API["FastAPI :8210 · Postgres"]
        STATE["state gate<br/>score + светофор<br/>state_multiplier"]
        LEDGER["decision ledger<br/>Brier · premortem · base_rate"]
        FIN["alloc · portfolio<br/>CapitalTier · fractional"]
        PRIO["prioritize engine"]
        PT["projects · tasks · time_entries"]
    end

    BRAIN["BRAIN<br/>атомы знаний · mnlos"]

    BOT -- "POST /state/checkin" --> CLIENT
    WEB -- "/api/{path}" --> CLIENT
    UI -- "/api/{path}" --> CLIENT
    CLIENT -- "X-PFBO-Token" --> API

    API --> STATE
    API --> LEDGER
    API --> FIN
    API --> PRIO
    API --> PT

    ADV -- "читает" --> LEDGER
    ADV -- "читает" --> STATE
    BRAIN <--> ADV

Слои и готовность (из аудита 2026-09-02)

flowchart LR
    S0["Слой 0<br/>живучесть<br/>10%"] --> S1["Слой 1<br/>самосознание<br/>40%"]
    S1 --> S2["Слой 2<br/>ledger+Brier<br/>55%"]
    S2 --> S4["Слой 4<br/>фин-советник<br/>45%"]
    S0 --> M["Мост tg_user_id<br/>10%"]
    S2 -.-> S3["Слой 3<br/>наставник<br/>0% отложен"]
    S2 -.-> S5["Слой 5<br/>время/фокус<br/>30%"]

Поток данных одного цикла

sequenceDiagram
    participant U as Пользователь
    participant B as Sinqly-бот
    participant C as pfbo_client
    participant P as pfbo API
    participant D as Postgres

    U->>B: /state (8 ответов)
    B->>C: state_checkin(tg_user_id, ...)
    C->>P: POST /state/checkin
    P->>D: INSERT state_checkin
    P-->>C: score + светофор + рекомендация
    C-->>B: render_state
    B-->>U: текст (score, светофор, 1 действие)

Принципы (анти-фейл)

  • Процесс > исход. Один исход = шум, выводы только на ≥30 решениях.
  • Near-zero friction на захвате: 1 сообщение, не форма.
  • pfbo = узкий gate + longitudinal, sinqly = UX/LLM. Не дублировать psych stack.
  • Wellness framing, не диагноз. Без мед. терминов (вне FDA SaMD).
  • НЕ сливать данные brain/pfbo (NDA-периметр).