From 6396b524535a117ea5d0674986dda147cea1365d Mon Sep 17 00:00:00 2001 From: nkoji21 <133028205+nkoji21@users.noreply.github.com> Date: Sat, 1 Aug 2026 12:00:39 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9C=AA=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=BC=E3=83=AB=E3=83=89=E3=83=BB=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=83=BB=E3=83=95=E3=82=A9=E3=83=BC=E3=83=AB=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=AF=E6=96=87=E8=A8=80=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - internal/summary/collector.go | 17 +++++++---------- internal/summary/helpers.go | 11 ----------- internal/summary/service.go | 5 ----- internal/summary/types.go | 18 ++++++------------ 5 files changed, 13 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 795bdcd..167e054 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,6 @@ Cloud Scheduler/Tasks ──► HTTP /tasks/daily-summary | `YUKAN_SUMMARY_MAX_HIGHLIGHTS` | | Gemini に要求する最大ハイライト数 (既定 3) | | `YUKAN_SUMMARY_MAX_ATTEMPTS` | | Gemini 呼び出しリトライ回数 (既定 5) | | `YUKAN_SUMMARY_MAX_CONCURRENCY` | | チャンネル収集の並列数 | -| `YUKAN_FORCE_EMPTY_HIGHLIGHTS` | | テスト・デバッグ用: `true` で Gemini を呼ばず空ハイライトを返す | ## デプロイ デプロイは GitHub Actions で行います。手元からの `make deploy` は廃止しました。 diff --git a/internal/summary/collector.go b/internal/summary/collector.go index 5a7d875..01548a4 100644 --- a/internal/summary/collector.go +++ b/internal/summary/collector.go @@ -23,7 +23,6 @@ type Collector struct { const ( fallbackNoMessages = "過去24時間のメッセージはありません" - fallbackGeneric = "夕刊を生成できませんでした。しばらくしてから再実行してください。" ) // Collect gathers messages from the target guild within the configured lookback window. @@ -187,7 +186,7 @@ func fallbackMessage(total int) string { if total <= 0 { return fallbackNoMessages } - return fallbackGeneric + return "" } func (c *Collector) collectChannel(ctx context.Context, guildID, botID string, cutoff time.Time, ch *discordgo.Channel, parentNames map[string]string, memberNames *nameCache) (*ChannelDigest, bool, error) { @@ -225,14 +224,12 @@ func (c *Collector) collectChannel(ctx context.Context, guildID, botID string, c } digest := MessageDigest{ - Author: resolveAuthor(c.Session, guildID, msg, memberNames), - AvatarURL: userAvatarURL(msg.Author), - Content: extractContent(msg), - Timestamp: timestamp, - MessageID: msg.ID, - ChannelID: ch.ID, - Link: buildMessageLink(guildID, ch.ID, msg.ID), - AttachmentURLs: extractAttachmentURLs(msg), + Author: resolveAuthor(c.Session, guildID, msg, memberNames), + AvatarURL: userAvatarURL(msg.Author), + Content: extractContent(msg), + Timestamp: timestamp, + ChannelID: ch.ID, + Link: buildMessageLink(guildID, ch.ID, msg.ID), } collected = append(collected, digest) diff --git a/internal/summary/helpers.go b/internal/summary/helpers.go index 9da8f6f..d9df6cc 100644 --- a/internal/summary/helpers.go +++ b/internal/summary/helpers.go @@ -99,17 +99,6 @@ func displayNameFromUser(user *discordgo.User) string { return username } -func extractAttachmentURLs(msg *discordgo.Message) []string { - if msg == nil || len(msg.Attachments) == 0 { - return nil - } - urls := make([]string, 0, len(msg.Attachments)) - for _, attachment := range msg.Attachments { - urls = append(urls, attachment.URL) - } - return urls -} - func userAvatarURL(user *discordgo.User) string { if user == nil { return "" diff --git a/internal/summary/service.go b/internal/summary/service.go index bf0b889..57de690 100644 --- a/internal/summary/service.go +++ b/internal/summary/service.go @@ -112,10 +112,6 @@ func (s *Service) Generate(ctx context.Context, req Request) (Result, error) { return result, err } - result.Digests = collectorResult.Digests - result.Fallback = collectorResult.FallbackText - result.TotalMessages = collectorResult.TotalMessages - s.info(ctx, fmt.Sprintf("メッセージ取得終了 (チャンネル=%d, メッセージ=%d, 所要%s)", len(collectorResult.Digests), collectorResult.TotalMessages, formatDuration(time.Since(workflowStart)))) if collectorResult.SkippedChannels > 0 { s.info(ctx, fmt.Sprintf("取得できないチャンネルを%d件スキップしました", collectorResult.SkippedChannels)) @@ -196,7 +192,6 @@ func (s *Service) Generate(ctx context.Context, req Request) (Result, error) { result.Embeds = embeds result.Highlights = highlights result.Publishable = len(embeds) > 0 - result.CompletedAt = time.Now() s.info(ctx, fmt.Sprintf("出力準備完了 (文字数=%d, 累計%s)", utf8.RuneCountInString(result.Content), formatDuration(time.Since(workflowStart)))) diff --git a/internal/summary/types.go b/internal/summary/types.go index 481dfcc..98bad35 100644 --- a/internal/summary/types.go +++ b/internal/summary/types.go @@ -18,14 +18,12 @@ type Highlight struct { // MessageDigest represents a single Discord message used for summarization. type MessageDigest struct { - Author string - AvatarURL string - Content string - Timestamp time.Time - MessageID string - ChannelID string - Link string - AttachmentURLs []string + Author string + AvatarURL string + Content string + Timestamp time.Time + ChannelID string + Link string } // ChannelDigest aggregates messages per channel or thread. @@ -56,11 +54,7 @@ type Result struct { Content string Embeds []*discordgo.MessageEmbed Highlights []Highlight - Digests []ChannelDigest - Fallback string - TotalMessages int WorkflowStart time.Time - CompletedAt time.Time Publishable bool // Posted は Run で実際に Discord へ投稿されたかを示す Posted bool