Show summarier capturing the actual weeks in the user's timezone

https://3.basecamp.com/2914079/buckets/37331921/todos/9010176047#__recording_9037056688
This commit is contained in:
Jorge Manrubia
2025-09-05 13:47:26 +02:00
parent e15cc80929
commit b15cb4541f
9 changed files with 34 additions and 9 deletions
@@ -22,7 +22,7 @@ class Admin::PromptSandboxesController < AdminController
private
def build_weekly_highlights
period = PeriodHighlights::Period.new(Current.user.collections, starts_at: @day_timeline.day.utc.beginning_of_week(:sunday), duration: 1.week)
period = PeriodHighlights::Period.new(Current.user.collections, starts_at: @day_timeline.day.beginning_of_week(:sunday), duration: 1.week)
summarizer = Event::Summarizer.new(period.events, prompt: @prompt, llm_model: @llm_model)
content = summarizer.summarized_content
PeriodHighlights.new(content: content, cost_in_microcents: summarizer.cost.in_microcents)
+2 -2
View File
@@ -18,7 +18,7 @@ class PeriodHighlights::Period
end
def key
@keu ||= Digest::SHA256.hexdigest(events.ids.sort.join("-"))
@key ||= Digest::SHA256.hexdigest(events.ids.sort.join("-"))
end
private
@@ -27,6 +27,6 @@ class PeriodHighlights::Period
end
def normalize_anchor_date(date)
date.utc.beginning_of_day
date.beginning_of_day
end
end
+9 -1
View File
@@ -34,7 +34,15 @@ class User::DayTimeline
end
def weekly_highlights
@weekly_highlights ||= user.weekly_highlights_for(day - 1.week)
@weekly_highlights ||= user.weekly_highlights_for(week_starts_at - 1.week)
end
def week_starts_at
day.beginning_of_week(:sunday)
end
def week_ends_at
week_starts_at + 1.week
end
private
-1
View File
@@ -3,7 +3,6 @@ module User::Role
included do
enum :role, %i[ admin member system ].index_by(&:itself), scopes: false
scope :regular, -> { where(role: %i[ admin member ]) }
scope :member, -> { where(role: :member) }
scope :active, -> { where(active: true, role: %i[ admin member ]) }
+1
View File
@@ -1,6 +1,7 @@
<section class="events__day" data-controller="related-element"
data-related-element-highlight-class="event--related">
<% if day_timeline.has_activity? %>
<div>highlights: <%= day_timeline.has_weekly_highlights? %></div>
<div class="events__columns">
<%= render "events/day_timeline_column", event_type: "added", day_timeline: day_timeline %>
<%= render "events/day_timeline_column", event_type: "updated", day_timeline: day_timeline %>
+2 -2
View File
@@ -3,9 +3,9 @@
<span class="events__day-time min-width max-width">
<span class="overflow-ellipsis">
<span>Weekly Highlights for</span>
<%= local_datetime_tag day_timeline.weekly_highlights.starts_at, style: :shortdate %>
<%= local_datetime_tag day_timeline.week_starts_at, style: :shortdate %>
<%= local_datetime_tag day_timeline.weekly_highlights.ends_at, style: :shortdate %>
<%= local_datetime_tag day_timeline.week_ends_at - 1.day, style: :shortdate %>
</span>
</span>
</h2>
+1 -1
View File
@@ -9,7 +9,7 @@
</header>
<%= render "layouts/shared/flash" %>
<%= render "layouts/shared/time_zone" %>
<%= render "layouts/shared/time_zone" if Current.user %>
<main id="main">
<%= yield %>
Generated
+1
View File
@@ -419,6 +419,7 @@ ActiveRecord::Schema[8.1].define(version: 2025_09_05_101432) do
t.datetime "created_at", null: false
t.string "title"
t.datetime "updated_at", null: false
t.index ["title"], name: "index_tags_on_account_id_and_title", unique: true
end
create_table "user_settings", force: :cascade do |t|
+17 -1
View File
@@ -2858,7 +2858,23 @@ indexes:
nulls_not_distinct:
comment:
valid: true
tags: []
tags:
- !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition
table: tags
name: index_tags_on_account_id_and_title
unique: true
columns:
- title
lengths: {}
orders: {}
opclasses: {}
where:
type:
using:
include:
nulls_not_distinct:
comment:
valid: true
user_settings:
- !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition
table: user_settings