6.14.0: Еженедельное подтверждение приоритетов
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m19s

This commit is contained in:
poignatov
2026-03-12 17:16:57 +03:00
parent 1df00bbefd
commit 64493b9c1f
10 changed files with 411 additions and 81 deletions

View File

@@ -30,6 +30,8 @@ function getLastFiveWeeks() {
return weeks.reverse() // От старой к новой
}
// Проверяет, закончилась ли уже данная ISO-неделя (текущая неделя не закончилась)
function Tracking({ onNavigate, activeTab }) {
const { authFetch } = useAuth()
const [weeks, setWeeks] = useState(() => getLastFiveWeeks())
@@ -147,7 +149,7 @@ function Tracking({ onNavigate, activeTab }) {
) : (
<div className="users-list">
{data?.users.map(user => (
<UserTrackingCard key={user.user_id} user={user} />
<UserTrackingCard key={user.user_id} user={user} selectedWeek={selectedWeek} />
))}
</div>
)}
@@ -156,7 +158,7 @@ function Tracking({ onNavigate, activeTab }) {
}
// Карточка пользователя с прогрессом
function UserTrackingCard({ user }) {
function UserTrackingCard({ user, selectedWeek }) {
// Сортируем проекты по priority (1, 2, остальные)
const sortedProjects = [...user.projects].sort((a, b) => {
const pa = a.priority ?? 99
@@ -169,10 +171,27 @@ function UserTrackingCard({ user }) {
return percent >= 100 ? 'percent-green' : 'percent-blue'
}
// Показываем (черновик) если выбранная неделя позже недели подтверждения
const showDraft = selectedWeek && (() => {
const cy = user.priorities_confirmed_year || 0
const cw = user.priorities_confirmed_week || 0
const sy = selectedWeek.year
const sw = selectedWeek.week
// Неделя не подтверждена вообще (0,0) или выбранная неделя позже подтверждённой
return sy > cy || (sy === cy && sw > cw)
})()
return (
<div className={`user-tracking-card ${user.is_current_user ? 'current-user' : ''}`}>
<div className="user-header">
<span className="user-name">{user.user_name}</span>
<span className="user-name">
{user.user_name}
{showDraft && (
<span style={{ color: '#9ca3af', fontWeight: 'normal', fontSize: '0.85em', marginLeft: '4px' }}>
(черновик)
</span>
)}
</span>
<span className={`user-total ${getPercentColorClass(totalPercent)}`}>{totalPercent.toFixed(0)}%</span>
</div>
<div className="projects-list">