Commit Graph

5 Commits

Author SHA1 Message Date
Dev Server e49fa9e746 feat: subscriptions, referrals, students/mentors removal, email templates, calendar fixes
Deploy to Dev / deploy-dev (push) Failing after 31s Details
Backend:
- Subscriptions: add duration_days field to plan, fix duration logic, remove allowed_durations restriction
- Users: add StudentMentorViewSet (remove_mentor), fix remove_client (board access + notification)
- Users: add STATUS_REMOVED to MentorStudentConnection, fix re-invite after removal
- Users: add authentication_classes=[] to all public auth endpoints (fix user_not_found 401)
- Users: fix verify-email and reset-password URLs in email tasks
- Users: validate IANA timezone on registration
- Schedule: add group/group_name to LessonCalendarItemSerializer
- Referrals: add tasks.py for Celery, add process_pending_referral_bonuses to beat schedule
- Email templates: redesign all 5 templates (gradient header, icons, Училл branding)

Frontend:
- Calendar: fix SWR revalidation after create/update/delete (match childId key), clear errors on tab switch
- Students: add remove buttons with warning dialog (mentor removes student, student removes mentor)
- Students: add tabs for client (Мои менторы / Входящие / Исходящие), fix pending_student filter
- Payment: fix duration_days from plan, show Бесплатно for 0₽, show X дн. period
- Referrals: full redesign — stats, levels progress, referrals list, earnings history, bonus balance
- Sign-up: add referral code field, auto-fill from ?ref= param
- Subscription guard: redirect mentor to /payment-platform if no active subscription
- Error pages: translate to Russian
- Page titles: dynamic Russian titles via usePageTitle hook
- Logo: fix full-page reload on click (use react-router Link directly)
- Favicon: use /logo/favicon.png
- Remove logo from header (keep in nav only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:39:37 +03:00
Dev Server d5ebd2898a feat: invite by link, 8-char code input, universal_code in profile
Backend:
- New InvitationLink model: token, mentor, created_at, used_by, is_banned
- Links expire after 12h, single-use, multiple active links allowed
- generate-invitation-link: creates InvitationLink (doesn't overwrite old)
- info-by-token: validates expiry/usage/ban before returning mentor info
- register-by-link: validates InvitationLink, marks used_by on registration
- Migration 0013_invitation_link_model

Frontend:
- Profile: show user's universal_code with copy button
- InviteDialog: 8 separate input boxes for code (auto-focus, paste support)
- InviteDialog: new "По ссылке" tab — generate link, copy, show expiry
- /invite/:token page: public registration page with mentor info preview
- Auto-login after invite link registration (setSession + checkUserSession)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 17:11:12 +03:00
Dev Server f6caa7df6b feat: role-based UI for student/parent, child selector, timezone fix
- Role-based nav: hide payment/referrals for students, board/progress-children for parents
- Add "Мои группы" to student nav; groups detail page read-only for non-mentors
- Logout button in sidebar nav (signOut + redirect to login)
- Parent: auto-select first child, ChildSelector in nav above profile
- Children fetched from /parent/dashboard/ (not the broken /users/parents/children/)
- Add child by 8-char universal code with role validation (client only)
- Removed "Прогресс" button from child cards in children-view
- Fix redirect on child switch — stay on current page (no router.push)
- Parent child notification settings in profile (per-child + per-type toggles)
- Fix scroll on all pages: Main overflow auto, hasSidebar Box overflow auto
- Fix 403: isMentor guard before getStudents() calls in groups pages
- Fix timezone: FullCalendar timeZone prop + fTime() use user.timezone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 16:45:15 +03:00
Dev Server 1b06404d64 feat: chat fixes, header cleanup, scrollbar, UI improvements
- chat: fix create_direct endpoint (was /chats/ → /chats/create_direct/ with user_id)
- chat: fix backend NotSupportedError — remove select_for_update()+distinct() combo
- chat: normalize chat objects (participant_id from other_participant.id)
- chat: enrich new chats with contact data so contacts section updates correctly
- chat: sendMessage — JSON when no file, FormData only with attachment
- chat: show send errors in UI instead of silent catch
- header: hide search, language, contacts, workspaces, account buttons
- theme: thin custom scrollbar (6px, theme-aware light/dark)
- settings: always high contrast, vertical nav only, purple default, Inter font
- settings-button: replaced gear icon with dark/light toggle + fullscreen button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 21:25:36 +03:00
Dev Server d4ec417ebf feat: migrate Homework, Materials, Students, Notifications to front_minimal
- Homework: kanban view with columns (pending/submitted/returned/reviewed/fill_later/ai_draft), details drawer with submission list for mentor, submit drawer for client, edit draft drawer; full AI-grade support
- Materials: grid view with image preview, upload and delete dialogs
- Students: mentor view with student list + pending requests + invite by email/code; client view with mentors list + incoming invitations + send request by mentor code
- Notifications: full page + NotificationsDrawer in header connected to real API (mark read, delete, mark all)
- New API utils: homework-api.js, materials-api.js, students-api.js, notifications-api.js
- Added routes: /dashboard/homework, /dashboard/materials, /dashboard/students, /dashboard/notifications
- Updated navigation config with new items

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 10:09:30 +03:00