chore(repo): reinitialize repository

This commit is contained in:
2026-03-18 11:29:54 +08:00
commit 24871e213a
288 changed files with 44369 additions and 0 deletions
@@ -0,0 +1,87 @@
package dashboard
import (
"sort"
"strings"
"inbox/internal/domain/message"
"inbox/internal/domain/topic"
"inbox/internal/domain/workflow"
)
func latestMessageID(items []message.Record) string {
var latest message.Record
for _, item := range items {
if item.CreatedAt > latest.CreatedAt || (item.CreatedAt == latest.CreatedAt && item.ID > latest.ID) {
latest = item
}
}
return latest.ID
}
func latestMessageTime(items []message.Record) string {
var latest message.Record
for _, item := range items {
if item.CreatedAt > latest.CreatedAt || (item.CreatedAt == latest.CreatedAt && item.ID > latest.ID) {
latest = item
}
}
return latest.CreatedAt
}
func latestTopicTime(record topic.Record, messages []message.Record, runs []workflow.Run) string {
value := record.UpdatedAt
for _, item := range messages {
value = latestString(value, item.CreatedAt)
}
for _, item := range runs {
value = latestString(value, latestRunTime(&item))
}
return value
}
func latestTopicStage(record topic.Record, messages []message.Record, runs []workflow.Run) string {
stage := record.Status
timestamp := record.UpdatedAt
for _, item := range messages {
if item.Stage != "" && item.CreatedAt >= timestamp {
stage = item.Stage
timestamp = item.CreatedAt
}
}
for _, item := range runs {
runTime := latestRunTime(&item)
if runTime >= timestamp {
stage = string(item.Stage)
timestamp = runTime
}
}
return stage
}
func topicStages(record topic.Record, messages []message.Record, runs []workflow.Run) []string {
seen := make(map[string]struct{})
add := func(value string) {
value = strings.TrimSpace(value)
if value == "" {
return
}
if _, ok := seen[value]; ok {
return
}
seen[value] = struct{}{}
}
add(record.Status)
for _, item := range messages {
add(item.Stage)
}
for _, item := range runs {
add(string(item.Stage))
}
out := make([]string, 0, len(seen))
for value := range seen {
out = append(out, value)
}
sort.Strings(out)
return out
}