Timothy Jaeryang Baek
68c77295bd
refac
2026-02-09 13:31:59 -06:00
Timothy Jaeryang Baek
f7406ff576
refac
2026-02-09 13:28:14 -06:00
Timothy Jaeryang Baek
3ae44d11a5
refac
2026-02-08 22:37:13 -06:00
Timothy Jaeryang Baek
b147616080
refac
2026-02-08 21:32:12 -06:00
Timothy Jaeryang Baek
9747b07ca5
refac
2026-02-08 21:24:38 -06:00
Timothy Jaeryang Baek
0f78451c2b
refac
2026-02-08 21:24:20 -06:00
Timothy Jaeryang Baek
42763cbbd8
enh: access grants table
2026-02-08 21:21:25 -06:00
Timothy Jaeryang Baek
d193c143a5
refac
2026-02-08 21:18:38 -06:00
Timothy Jaeryang Baek
9be85b6d3c
refac: access control migration
2026-02-07 19:07:49 -06:00
G30
cac5dd12e9
fix: handle null data in model_response_handler ( #21112 )
...
Fix `AttributeError` in `model_response_handler` when processing channel messages with `null` data field. The function iterates over thread messages to build conversation history, but some messages may have `data=None` causing a crash when accessing `thread_message.data.get()`. Added null check using `(thread_message.data or {}).get("files", [])` to safely handle messages without data.
2026-02-05 15:15:34 -05:00
Classic298
f751c0b46c
Update builtin.py ( #21115 )
2026-02-05 15:14:58 -05:00
Timothy Jaeryang Baek
e62649f940
enh: analytics
2026-02-05 00:00:49 -06:00
Timothy Jaeryang Baek
68a1e87b66
enh: analytics model modal
2026-02-04 23:42:46 -06:00
Timothy Jaeryang Baek
e8a36f033b
refac
2026-02-04 23:05:08 -06:00
Timothy Jaeryang Baek
2cf2565e80
refac
2026-02-04 22:57:46 -06:00
Timothy Jaeryang Baek
5669d1062c
refac
2026-02-04 21:54:45 -06:00
Timothy Jaeryang Baek
3ace75820e
refac
2026-02-04 21:46:20 -06:00
Timothy Jaeryang Baek
020cb0d4bf
refac
2026-02-04 21:09:05 -06:00
Timothy Jaeryang Baek
8b75d34a8a
refac
2026-02-04 21:07:30 -06:00
Timothy Jaeryang Baek
6320a9aaa9
refac
2026-02-04 20:47:21 -06:00
Timothy Jaeryang Baek
ecf3fa2feb
refac
2026-02-03 23:36:15 -06:00
Thomas Rehn
654172d757
fix: redis clustermode instrumentation
2026-02-03 15:25:37 +01:00
Timothy Jaeryang Baek
527d48efa9
refac
2026-02-02 10:04:13 -06:00
Tim Baek
cfd30581d5
Merge branch 'dev' into chat-message-rebased
2026-02-02 09:33:41 -06:00
Timothy Jaeryang Baek
3c0313f41b
refac
2026-02-02 09:31:52 -06:00
Timothy Jaeryang Baek
d938eb0e76
refac
2026-02-02 09:23:46 -06:00
Timothy Jaeryang Baek
b0c5f7b668
refac
2026-02-02 09:02:34 -06:00
Timothy Jaeryang Baek
767343dc5b
refac
2026-02-02 08:57:26 -06:00
Timothy Jaeryang Baek
c22bb4f853
refac
2026-02-02 08:55:13 -06:00
Timothy Jaeryang Baek
117c091b95
refac
2026-02-01 20:07:11 -06:00
Timothy Jaeryang Baek
6ffce4bccd
refac
2026-02-01 20:00:21 -06:00
Timothy Jaeryang Baek
ea9c58ea80
feat: experimental responses api support
2026-02-01 19:39:28 -06:00
Tim Baek
b2c2f1bd49
refac
2026-02-01 10:24:04 +04:00
Tim Baek
679e56c494
feat: token analytics
2026-02-01 10:19:59 +04:00
Tim Baek
3da4323ef3
refac
2026-02-01 10:11:13 +04:00
Tim Baek
75e5a485d2
refac
2026-02-01 10:06:52 +04:00
Tim Baek
7bb3a827bb
refac
2026-02-01 08:10:25 +04:00
Tim Baek
96f106319e
refac
2026-02-01 07:59:02 +04:00
Tim Baek
599cd2eeeb
feat: analytics backend API with chat_message table
...
- Add chat_message table for message-level analytics with usage JSON field
- Add migration to backfill from existing chats
- Add /analytics endpoints: summary, models, users, daily
- Support hourly/daily granularity for time-series data
- Fill missing days/hours in date range
2026-02-01 07:04:13 +04:00
Tim Baek
ee5fd1246c
refac
2026-02-01 03:26:59 +04:00
Classic298
ee27fd8de1
perf: replace double lookup with single JOIN in authenticate_user_by_email ( #21010 )
...
* perf: replace double lookup with single JOIN in authenticate_user_by_email
* Update auths.py
2026-01-30 10:22:07 -05:00
Classic298
aac98120c8
perf: batch fetch filter functions to eliminate N+1 queries ( #21018 )
2026-01-30 00:50:04 +04:00
Timothy Jaeryang Baek
f9ab66f51a
refac
...
Co-Authored-By: Hsienz <55347238+hsienz@users.noreply.github.com >
2026-01-30 00:46:42 +04:00
Classic298
baef422a28
perf: eliminate redundant query after memory update ( #21013 )
...
## Summary
Eliminates redundant database query in update_memory_by_id_and_user_id. Previously, after modifying the memory object, it called get_memory_by_id which opened a new session and queried again.
## Changes
models/memories.py update_memory_by_id_and_user_id:
- Replace self.get_memory_by_id(id) with db.refresh(memory)
- Return the same memory object that was already modified
## Performance Impact
Before: 2 queries (get + get_memory_by_id)
After: 1 query + refresh on same session
2026-01-29 21:45:09 +04:00
Classic298
68e257849d
perf: optimize database queries in functions, feedbacks, and groups ( #21019 )
2026-01-29 21:44:50 +04:00
Classic298
e686554392
fix: resolve N+1 query in SCIM group_to_scim user lookup ( #21005 )
2026-01-29 21:43:33 +04:00
Timothy Jaeryang Baek
93ed4ae2cd
enh: files data controls
2026-01-29 19:50:06 +04:00
Timothy Jaeryang Baek
a10ac774ab
enh: manage shared chats
2026-01-29 18:51:02 +04:00
Classic298
5749f78262
fix: reduce triple query to single fetch in model toggle ( #21009 )
2026-01-29 17:24:09 +04:00
Classic298
1eaae9d934
perf: eliminate redundant SELECT after UPDATE in users.py ( #21011 )
2026-01-29 17:22:28 +04:00