v1.4.0: модули с веб-UI, правое меню, расширенные тесты
Реестр MODULE_MOUNTS: API, ui_router, фрагменты главной, EventBus. Главная и страницы модулей с правой навигацией из реестра; wrap_module_html_page. Ingress: публикация alert.received после сохранения в БД. Документация MODULES.md; pytest покрывает API, UI и навигацию. Made-with: Cursor
This commit is contained in:
@ -1,7 +1,28 @@
|
||||
from fastapi import APIRouter
|
||||
from fastapi import APIRouter, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
|
||||
from onguard24.domain.events import EventBus
|
||||
from onguard24.modules.ui_support import wrap_module_html_page
|
||||
|
||||
router = APIRouter(tags=["module-schedules"])
|
||||
|
||||
ui_router = APIRouter(tags=["web-schedules"], include_in_schema=False)
|
||||
|
||||
|
||||
def register_events(_bus: EventBus) -> None:
|
||||
"""Подписка на доменные события (например alert.received)."""
|
||||
# _bus.subscribe("alert.received", handler)
|
||||
|
||||
|
||||
async def render_home_fragment(request: Request) -> str:
|
||||
"""Фрагмент для главной (в root_html вызывается через safe_fragment — падение не ломает главную)."""
|
||||
del request
|
||||
return (
|
||||
'<div class="module-fragment">'
|
||||
"<p>Планирование смен и календарь — следующий этап.</p>"
|
||||
"</div>"
|
||||
)
|
||||
|
||||
|
||||
@router.get("/")
|
||||
async def schedules_root():
|
||||
@ -10,3 +31,18 @@ async def schedules_root():
|
||||
"status": "stub",
|
||||
"note": "календарь и смены — следующий этап",
|
||||
}
|
||||
|
||||
|
||||
@ui_router.get("/", response_class=HTMLResponse)
|
||||
async def schedules_ui_home(request: Request):
|
||||
"""Полная HTML-страница: /ui/modules/schedules/ — то же правое меню, что на главной."""
|
||||
del request
|
||||
inner = """<h1>Календарь дежурств</h1>
|
||||
<p>Здесь будет функционал модуля: смены, календарь, уведомления.</p>"""
|
||||
return HTMLResponse(
|
||||
wrap_module_html_page(
|
||||
document_title="Календарь дежурств — onGuard24",
|
||||
current_slug="schedules",
|
||||
main_inner_html=inner,
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user