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
+17 -6
View File
@@ -1,11 +1,22 @@
package activity
// Confidence level for a suggestion.
const (
ConfidenceLow = "low"
ConfidenceMedium = "medium"
ConfidenceHigh = "high"
)
// Suggestion represents a suggested worklog entry derived from today's activity.
type Suggestion struct {
NodeID string `json:"nodeId"`
NodeTitle string `json:"nodeTitle"`
Summary string `json:"summary"`
SuggestedMin int `json:"suggestedMin"`
EventCount int `json:"eventCount"`
NodeKind string `json:"nodeKind"`
NodeID string `json:"nodeId"`
NodeTitle string `json:"nodeTitle"`
Summary string `json:"summary"`
SuggestedMin int `json:"suggestedMin"`
EventCount int `json:"eventCount"`
NodeKind string `json:"nodeKind"`
Confidence string `json:"confidence"`
ConfidenceReason string `json:"confidenceReason"`
Hidden bool `json:"hidden"`
TimeSpreadMin int `json:"timeSpreadMin"` // minutes between first and last event
}