- internal/model: единый источник статусов задачи (Status, TraceStatus, машина переходов), без зависимости от storage. - internal/storage: совместимый мост (type Status = model.Status, re-export констант) — внешний код не меняется. - internal/events: шина событий (fan-out, блокирующий Publish с гарантией порядка), события задач/трейсов, отдельная логовая шина + LogWriter, Publisher/NilPublisher для внедрения в Core/Worker. - docs/ui-spec.md: спецификация десктопного UI (Fyne).
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package events
|
|
|
|
import "github.com/kamelion/ratatoskr-go/internal/model"
|
|
|
|
// TaskCreated — создана новая задача.
|
|
type TaskCreated struct {
|
|
ID int64
|
|
ChatID string
|
|
Title string
|
|
}
|
|
|
|
// TaskUpdated — задача изменена (поля, права, репозитории).
|
|
type TaskUpdated struct {
|
|
ID int64
|
|
}
|
|
|
|
// TaskDeleted — задача удалена.
|
|
type TaskDeleted struct {
|
|
ID int64
|
|
}
|
|
|
|
// TaskStatusChanged — статус задачи изменился (переход из From в To).
|
|
type TaskStatusChanged struct {
|
|
ID int64
|
|
From model.Status
|
|
To model.Status
|
|
}
|
|
|
|
// HistoryAppended — добавлено сообщение в историю задачи.
|
|
type HistoryAppended struct {
|
|
TaskID int64
|
|
Role string // user | assistant | реплика события
|
|
Content string
|
|
}
|
|
|
|
// TraceAppended — добавлен/обновлён трейс субагента.
|
|
type TraceAppended struct {
|
|
TaskID int64
|
|
Agent string
|
|
Status model.TraceStatus
|
|
}
|
|
|
|
// AgentActivity — смена этапа работы агента (для анимации «состояния»).
|
|
type AgentActivity struct {
|
|
TaskID int64
|
|
Agent string
|
|
Stage string
|
|
}
|
|
|
|
func (TaskCreated) _event() {}
|
|
func (TaskUpdated) _event() {}
|
|
func (TaskDeleted) _event() {}
|
|
func (TaskStatusChanged) _event() {}
|
|
func (HistoryAppended) _event() {}
|
|
func (TraceAppended) _event() {}
|
|
func (AgentActivity) _event() {} |