Step 16.1: global worklog dashboard + conservative suggestions

- Fix date timezone: worklog.Add uses local date (was UTC)
- Conservative suggestion estimator:
  - burst detection (10min window), time spread analysis
  - 5-30 min range, 60+ only with strong evidence
  - confidence levels: low/medium/high with reason
- worklog/report.go: ReportFilter, ListReport, Summary, ExportCSV, ExportMarkdown
- Expanded WorklogDTO: date, details, approximate, billable, nodeTitle
- New bindings: CreateWorklogFull, ListWorklogReport, WorklogSummary, Export*
- New system section 'Журнал' in sidebar with badge (suggestion count)
- Global journal screen: filters (date range, includeChildren), table, summary
- Suggestions shown on Today dashboard + Journal screen + per-node worklog tab
- Suggestion cards: editable minutes, confidence display, apply/open buttons
- i18n: all new keys in ru + en
This commit is contained in:
2026-06-03 09:56:17 +08:00
parent 57d13c9506
commit c25e75f839
14 changed files with 1030 additions and 120 deletions
+29
View File
@@ -123,4 +123,33 @@ export default {
'worklog.suggestions': 'Suggestions for today',
'worklog.apply': 'Apply',
'nav.journal': 'Journal',
'journal.title': 'Work Log',
'journal.empty': 'No entries for the selected period',
'journal.dateFrom': 'From',
'journal.dateTo': 'To',
'journal.filter': 'Filter',
'journal.total': 'Total',
'journal.exportCSV': 'CSV',
'journal.exportMarkdown': 'Markdown',
'journal.billable': 'Billable',
'journal.approximate': 'Approx',
'journal.node': 'Case',
'journal.path': 'Path',
'journal.byDay': 'By day',
'journal.byNode': 'By case',
'journal.includeChildren': 'Include subtasks',
'suggest.title': 'Suggestions',
'suggest.apply': 'Log',
'suggest.dismiss': 'Dismiss',
'suggest.open': 'Open',
'suggest.confidence.low': 'Low confidence',
'suggest.confidence.medium': 'Medium confidence',
'suggest.confidence.high': 'High confidence',
'suggest.minutes': 'min',
'suggest.edit': 'Edit',
'suggest.noSuggestions': 'No suggestions',
}
+28
View File
@@ -2,6 +2,7 @@ export default {
'nav.today': 'Сегодня',
'nav.inbox': 'Неразобранное',
'nav.activity': 'Активность',
'nav.journal': 'Журнал',
'nav.clients': 'Клиенты',
'nav.projects': 'Проекты',
'nav.recipes': 'Рецепты',
@@ -198,6 +199,33 @@ export default {
'today.plural.event_few': 'события',
'today.plural.event_many': 'событий',
'journal.title': 'Журнал работы',
'journal.empty': 'Нет записей за выбранный период',
'journal.dateFrom': 'От',
'journal.dateTo': 'До',
'journal.filter': 'Фильтр',
'journal.total': 'Всего',
'journal.exportCSV': 'CSV',
'journal.exportMarkdown': 'Markdown',
'journal.billable': 'Оплачиваемое',
'journal.approximate': 'Примерно',
'journal.node': 'Дело',
'journal.path': 'Путь',
'journal.byDay': 'По дням',
'journal.byNode': 'По делам',
'journal.includeChildren': 'С подзадачами',
'suggest.title': 'Предложения на сегодня',
'suggest.apply': 'Записать',
'suggest.dismiss': 'Скрыть',
'suggest.open': 'Открыть',
'suggest.confidence.low': 'Низкая уверенность',
'suggest.confidence.medium': 'Средняя уверенность',
'suggest.confidence.high': 'Высокая уверенность',
'suggest.minutes': 'мин',
'suggest.edit': 'Изменить',
'suggest.noSuggestions': 'Нет предложений для журнала',
'activity.title': 'Активность',
'activity.empty': 'Активность пока не зафиксирована',
'activity.perCaseEmpty': 'Активность пока не зафиксирована',