Edvance

Релизы

История релизов и изменений платформы Edvance.

Фронтенд

Features

  • rename Learning tab and restrict enrollments to admins
  • complete GDPR settings UI — i18n, API helpers, unit tests
  • hide Delete Account for super-admin in settings SecurityTab
  • overhaul privacy policy page — i18n, GDPR Art.13/14 compliance
  • GDPR cookie consent banner and privacy policy page (EDV-392, EDV-395)
  • add separate tests CI job with coverage badge
  • add generate:api:schema script using committed openapi.json (EDV-381)
  • show enrollment cap in schedule event details dialog
  • teacher workload panel + school holiday calendar UI
  • mobile list view for schedule, student progress overview, TODO updates
  • mark event completed with attendee count, booking tab placeholder
  • student availability and busy windows UI in StudentTab
  • show student conflict warnings after reschedule
  • export schedule as .ics (iCalendar)
  • drag-to-reschedule on schedule grid + teacher canEdit for own flows
  • schedule multi-select filters (teacher, course, flow)
  • schedule event dialog — past guard, quick links, student count
  • schedule calendar visual — course colors, flow stripes, auto-fit hours
  • add student_count field to TenantScheduleEvent type
  • unify schedule source of truth (EDV-377)
  • editable schedule events on /dashboard/schedule (EDV-339)
  • school scheduling page, teacher availability and feature flag (EDV-339)
  • lesson recordings list, save-now button and docs (EDV-112)

Bug Fixes

  • prettier locale files and add GDPR Art. 20 export info dialog
  • apply Prettier formatting to test and source files
  • set coverage thresholds to current baseline (not EDV-377 targets)
  • add msw dep, fix tsc errors, update pnpm allowBuilds
  • rewrite linters.yml to use corepack and frozen-lockfile
  • format test files, migrate to pnpm v11, fix linters workflow
  • format pnpm-workspace.yaml via prettier
  • replace onlyBuiltDependencies with allowBuilds for pnpm v11
  • restore coverage badges, migrate to pnpm v11
  • pin pnpm to v10 via packageManager and use corepack in CI
  • allow build scripts for parcel/watcher, swc/core, canvas in pnpm
  • move pnpm overrides to pnpm-workspace.yaml (pnpm v10+ compat)
  • add pnpm.overrides to package.json and regenerate lockfile
  • use --no-frozen-lockfile to handle pnpm overrides mismatch
  • simplify Tests workflow — remove coverage and badge steps
  • convert coverage badge script to ESM to pass eslint no-require-imports
  • apply prettier formatting to 8 source files
  • align test payloads with actual API types
  • schedule calendar UX — parallel slots, filters, scroll, i18n
  • inline links + student modal in EventDetailsDialog, drag past events for admins, UUID in unavailability cards, missing i18n keys
  • i18n colour legend in schedule page — replace hardcoded Russian text with t() keys
  • suppress pre-existing any warnings and remove unused variable in users page
  • show admin seat usage in school-admin toggle
  • correct school-admin flag hint text in all 7 locales
  • show school-admin toggle only for admin-role users
  • resolve enrollment names and refresh after enroll-in-group
  • add teacher profile links to schedule dialog, show reschedule form inline for future events
  • remove mark-as-completed from schedule dialog, replace window.confirm with AlertDialog, fix settings tabs visibility and enrollment cards
  • remove stale eslint-disable directives in schedule types
  • date-fns locale from user settings, WeekCalendar React.memo
  • drag-to-reschedule (document pointer events) + teacher accent dot on card
  • schedule dialog — course link, inline links, i18n, student count, self-study note
  • align settings.weekday* i18n keys with backend 0=Mon..6=Sun indexing
  • cap schedule student picker limit at 100 (EDV-339)
  • add nav.schedule i18n key for sidebar (EDV-339)
  • preserve empty alt-correct rows in fill-in-blanks editor (#85)
  • replace bare usePuck with createUsePuck selectors (#84)
  • super-admin school visibility and admin-flag toggle (#82)
  • drop bogus @babel/core dependency and unpublished linux-x64 binaries (#83)

Miscellaneous

  • add Zod schema, component, and HOC unit tests
  • add nav and layout component tests
  • add component tests for RoleGuard, DataTable, LessonProgress, ScrollablePills
  • add lib/hooks, chat/WebSocket, query-key tests
  • expand frontend unit tests — coverage +8pp
  • add React Query hooks tests for all 15 feature domains (+217 tests)
  • bump frontend dependencies
  • add comprehensive vitest unit and integration test suite
  • date-locale, WeekCalendar render, and ICS download unit tests
  • vitest unit tests for ics generator, schedule colors, and Zod schemas
  • openapi-typescript codegen setup, API type safety assertions

Бэкенд

Features

  • bind tenant in auth and get_tenant log context
  • bind user and tenant ids to structlog contextvars
  • cancel active subscription on GDPR self-delete
  • GDPR — super-admin self-delete guard + billing in export
  • add separate tests CI job with coverage badge
  • sub-cent AI credit accumulation with threshold-based flush (EDV-302)
  • auto-generate and publish OpenAPI schema in CI (EDV-381)
  • EDV-297 P1 — column-level AES-256-GCM encryption for chat/notes/dictionary
  • add admin_seats capacity type with LS variants 1759498/1759499
  • expose flow max_students on schedule events
  • teacher workload stats API + school holiday calendar
  • GET /schedule/my endpoint for teacher and student rich schedule
  • student availability and busy windows API
  • student conflict warnings on reschedule
  • schedule filter params support arrays (teacher_ids, course_ids, flow_ids)
  • add student_count to schedule event feed
  • unify schedule source of truth (EDV-377)
  • editable schedule events with availability checks (EDV-339)
  • mirror Cloudflare Stream webinar recordings into MinIO (EDV-375) (#76)
  • school scheduling MVP with admin schedule and availability CRUD (EDV-339)
  • stream Cloudflare lesson recordings into MinIO (EDV-112)
  • per-tenant minio buckets with auto-provisioning (#70)
  • hash session refresh tokens with HMAC-SHA256 + pepper (#64)

Bug Fixes

  • unblock release-please and coverage badge CI
  • restore GDPR export cooldown to 24 hours
  • mock FEATURE_PAYWALL_ENABLED in billing history tests
  • correct mypy/pyright type errors in gap test files
  • add missing last_export_requested_at to User constructors
  • prevent patch leakage in enrollment gap tests (use ExitStack context, not patch.start)
  • update extended flows integration tests after flows_router.py split (EDV-390)
  • update integration test imports after flows_router.py split (EDV-390)
  • add last_export_requested_at to User factory and media_router user builder
  • update integration test imports after ai_router.py split (EDV-389)
  • pin all wildcard * dependencies in pyproject.toml, add poetry.lock (EDV-388)
  • add allure-pytest dev dep and restore allure flags in pytest addopts
  • add ripgrep as dev dependency for test suite
  • install ripgrep in CI before running pytest
  • remove allure-pytest flags from pytest addopts in pyproject.toml
  • replace DATABASE_URL with individual POSTGRES_* fields in CI env
  • add MINIO_ROOT_USER and MINIO_ROOT_PASSWORD to CI env
  • apply black formatting to all test files, fix ruff N806
  • mock datetime.now in schedule availability tests — was comparing against real time
  • suppress pylint warnings in test files (C0415, W0613, R0903, etc.)
  • resolve all CI linter failures (pylint, black, mypy, ruff, pyright)
  • modernize type annotations — Optional[X]→X|None, Dict→dict, UP035
  • tighten langchain ecosystem version pins (EDV-272)
  • pin langchain-core to >=1.0 in pyproject.toml (EDV-272)
  • enrich schedule validation errors with availability windows
  • add max_admins to UpsertUserQuotaParams in integration test fixture
  • multiply capacity amount by LS subscription quantity
  • exclude super-admins from school-admin count and user listings
  • correct max_admins default to 0 and fix off-by-one in check_admin_seats
  • add max_admins quota check before granting school-admin flag
  • make migrations 0082-0084 idempotent (IF NOT EXISTS)
  • resolve all pre-existing test failures — encrypt roundtrip, schedule router mounting
  • correct double-segment routing in schedule_router — /schedule/my prefix duplication
  • add venvPath to pyright config so it resolves the virtualenv
  • materialize past lesson_schedule_events on first run (EDV-377)
  • build Medium via _medium_from_row helper (EDV-112, EDV-375)
  • keep migration 0076 COMMENT on a single SQL literal (EDV-368) (#73)
  • seed integrations and secrets on tenant creation (#71)
  • super-admin permission gaps reported on prod (EDV-368) (#68)

Performance

  • stream ZIP media uploads via MinIO to cap memory (EDV-278)

Refactoring

  • split flows_router.py into sub-routers under app/api/flows/ (EDV-390)
  • split ai_router.py into sub-routers under app/api/ai/ (EDV-389)
  • remove dead _load_teacher_rows, cover remaining schedule branches to ≥95%
  • encapsulate db engine lifecycle (EDV-275) (#67)
  • split ai_service.py into app/services/ai package (EDV-256)

Documentation

  • document Flows unlock policy, LLM routing, and RLS design (EDV-386)
  • add RBAC security audit report — Jun 2026
  • add Jira service-account provisioning and rotation runbook (#69)