• stanislav's avatar
    feat(sources): задача 6 — PHP-модуль source_gateway, файловый обмен с Python-шлюзом MAX
    · 2fba9fa3
    stanislav создал
    - server/src/source_gateway.php (новый): конфиг секции source_gateway,
      чтение state.json / available_channels.json / channel_{id}.json,
      ленивый опрос (min_interval_sec), обмен request.json -> response.json
      с матчингом по request_id, защита от path traversal
    - server/index.php: интеграция в инжест без правок ядра — ранний выход
      только при выключенных обоих шлюзах; VK/RSS-цикл через $pollableSources;
      вливание MAX-записей в общий пул (global_source_id=MAX_{канал}_{сообщение},
      sender_device_id=MAX_{канал}, source_channel=MAX, url -> source_url);
      при auth_required — заголовок X-Source-Gateway + запись в журнал группы;
      ?force_sources=1 в GET /messages как немедленный опрос
    - тесты: server/tests/source_gateway/run_test.php — 23/23 PASS
    - доки: раздел «Файловый контракт с PHP-сервером» в gateway/README.md,
      API_SPEC (force_sources, X-Source-Gateway), server/README.md,
      секция source_gateway в server_config.json.example (stale_after_sec: 300)
    2fba9fa3