diff --git a/backend/alembic/versions/029_add_tracked_time.py b/backend/alembic/versions/029_add_tracked_time.py new file mode 100644 index 0000000..d029f53 --- /dev/null +++ b/backend/alembic/versions/029_add_tracked_time.py @@ -0,0 +1,30 @@ +"""Add tracked_time_minutes to assignments + +Revision ID: 029_add_tracked_time +Revises: 028_add_promo_codes +Create Date: 2026-01-10 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '029_add_tracked_time' +down_revision: Union[str, None] = '028_add_promo_codes' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # Add tracked_time_minutes column to assignments table + op.add_column( + 'assignments', + sa.Column('tracked_time_minutes', sa.Integer(), nullable=False, server_default='0') + ) + + +def downgrade() -> None: + op.drop_column('assignments', 'tracked_time_minutes') diff --git a/frontend/src/pages/PlayPage.tsx b/frontend/src/pages/PlayPage.tsx index 50ed278..30847e9 100644 --- a/frontend/src/pages/PlayPage.tsx +++ b/frontend/src/pages/PlayPage.tsx @@ -1418,9 +1418,28 @@ export function PlayPage() {
- - +{currentAssignment.playthrough_info?.points} очков - + {/* Points - calculated from tracked time if available */} + {currentAssignment.tracked_time_minutes !== undefined && currentAssignment.tracked_time_minutes > 0 ? ( + + ~{Math.floor(currentAssignment.tracked_time_minutes / 60 * 30)} очков + + ) : ( + + +{currentAssignment.playthrough_info?.points} очков + + )} + {/* Time tracker indicator */} + {currentAssignment.tracked_time_minutes !== undefined && currentAssignment.tracked_time_minutes > 0 ? ( + + + {Math.floor(currentAssignment.tracked_time_minutes / 60)}ч {currentAssignment.tracked_time_minutes % 60}м + + ) : ( + + + Установите трекер + + )}
{currentAssignment.playthrough_info?.proof_hint && ( diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index d76fe51..ecb0fbb 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -270,6 +270,7 @@ export interface Assignment { proof_comment: string | null points_earned: number streak_at_completion: number | null + tracked_time_minutes?: number // Time tracked by desktop app (for playthroughs) started_at: string completed_at: string | null drop_penalty: number