stefanfeng
e2b02ddf30
feat(avatar): optimize embedded H5 management flow
2026-08-27 09:27:17 +08:00
stefanfeng
c37294be17
feat(avatar): integrate Huihui payments
2026-08-26 14:41:21 +08:00
stefanfeng
5360cac8ad
fix(avatar): normalize legacy plan copy
2026-08-26 14:02:38 +08:00
stefanfeng
ea932f27fb
feat(avatar): rename Token display to points
2026-08-26 14:01:12 +08:00
deploy
bf0183bef4
add wechat mini-program domain verification file
2026-08-26 13:44:56 +08:00
stefanfeng
730f586784
Merge pull request 'docs(avatar): 配置 digital.99hui.com 生产域名' ( #4 ) from codex/avatar-multi-management-integrated-20260825 into main
...
Reviewed-on: #4
2026-08-26 10:17:40 +08:00
stefanfeng
ef2b1c6dd6
chore(avatar): add WeChat verification file
2026-08-26 09:51:13 +08:00
stefanfeng
c693899b12
docs(avatar): set production H5 domain
2026-08-26 09:44:22 +08:00
stefanfeng
d274ccb5e2
Merge pull request 'feat: 完成数字分身多分身管理与生产 H5 接入' ( #3 ) from codex/avatar-multi-management-integrated-20260825 into main
...
Reviewed-on: #3
2026-08-26 09:43:52 +08:00
stefanfeng
5d19992f00
fix(avatar): remove SSO token from router state
2026-08-26 09:25:07 +08:00
stefanfeng
81aec1c63a
feat(avatar): support production H5 token SSO
2026-08-26 09:17:41 +08:00
stefanfeng
4029c31ed7
fix(avatar): bundle uni bridge and add favicon
2026-08-25 17:19:30 +08:00
stefanfeng
e24e89d326
fix(deploy): serialize model migration and pin nginx
2026-08-25 16:59:15 +08:00
stefanfeng
dc34a03357
feat(ai): add dedicated digital avatar model config
2026-08-25 16:50:33 +08:00
stefanfeng
3f7ff9329a
fix(avatar): align QA cards to the left
2026-08-25 15:36:49 +08:00
stefanfeng
699bbbde57
feat(avatar): add user token accounting
2026-08-25 13:24:02 +08:00
stefanfeng
7a0199e685
feat(avatar): improve multi-avatar management
2026-08-25 11:44:27 +08:00
stefanfeng
672019830d
fix(avatar): prevent takeover replies blocking across chats
2026-08-21 16:21:00 +08:00
stefanfeng
e720baa21e
fix(avatar): batch knowledge embedding requests
2026-08-21 13:21:05 +08:00
stefanfeng
9e86cc64ac
Merge pull request 'Codex/avatar integrated 20260819' ( #2 ) from codex/avatar-integrated-20260819 into main
...
Reviewed-on: #2
2026-08-21 09:31:43 +08:00
stefanfeng
e2b928273c
fix(avatar): acknowledge BOXIM messages as read
2026-08-20 17:10:54 +08:00
stefanfeng
64b7680ec4
fix(avatar): keep BOXIM status ready during long polls
2026-08-20 15:58:07 +08:00
stefanfeng
89f52963b7
fix(avatar): persist takeover toggle immediately
2026-08-20 15:55:12 +08:00
stefanfeng
76bd22c24b
fix(avatar): preserve ownership across Huihui environments
2026-08-20 15:27:29 +08:00
stefanfeng
51a317ccd9
fix(avatar): fail closed on BOXIM connection errors
2026-08-20 14:47:13 +08:00
stefanfeng
08590bf9ea
fix(avatar): refresh BOXIM takeover status
2026-08-19 18:03:59 +08:00
stefanfeng
25fb8fbee5
feat(avatar): add BOXIM chat takeover
2026-08-19 17:56:57 +08:00
stefanfeng
cfcfe7146e
feat(avatar): align authorization page with design
2026-08-19 17:05:22 +08:00
stefanfeng
2e2adeb9e2
feat(avatar): complete authorization management
2026-08-19 16:21:19 +08:00
stefanfeng
25d2494616
fix: surface missing knowledge files
2026-08-19 15:13:22 +08:00
stefanfeng
bd5f64d000
fix: align avatar route titles
2026-08-19 15:09:38 +08:00
stefanfeng
350df1d119
build: pin secure frontend transitive dependencies
2026-08-19 15:01:39 +08:00
stefanfeng
64462fac92
build: enforce locked frontend type checks
2026-08-19 14:57:40 +08:00
stefanfeng
6bf446f889
fix: restore reproducible frontend builds
2026-08-19 14:56:39 +08:00
stefanfeng
68ea87e1b2
fix: persist avatar data and uploads
2026-08-19 14:44:58 +08:00
stefanfeng
c5bfa47a23
fix: await takeover polling jobs
2026-08-19 14:32:10 +08:00
stefanfeng
4ab7732da9
fix: preserve takeover and share token integrity
2026-08-19 14:23:43 +08:00
stefanfeng
4a2d788e85
feat: complete grounded digital avatar chat experience
2026-08-19 14:21:56 +08:00
stefanfeng
07d4a21379
fix: sync Huihui app user homepage profile
2026-08-18 08:48:20 +08:00
stefanfeng
efc419e301
fix: sync virtual user profiles to Huihui public pages
2026-08-18 08:48:20 +08:00
stefanfeng
c748950402
fix: accept camelCase authorizationId from frontend
2026-08-07 17:18:34 +08:00
stefanfeng
f13d488f82
feat: add takeover config API endpoint
...
PUT /api/avatar/{avatar_id}/authorizations/takeover to update authorization
takeover settings (enabled, mode, delay_seconds) with validation.
2026-08-07 17:15:12 +08:00
stefanfeng
43f2ad9edb
feat: add takeover config UI to authorization management page
...
- Added updateTakeoverConfig API function (PUT /api/avatar/{id}/authorizations/takeover)
- Added expandable takeover config section per auth card with toggle switch, mode selector (immediate/delayed), and delay seconds input
- Added takeover summary badge showing current config when not editing
- Styles follow existing light theme with indigo (#6366F1) accent
2026-08-07 17:07:21 +08:00
stefanfeng
8e365e63e1
feat: add scheduled message polling for avatar takeover
...
Add APScheduler BackgroundScheduler to on_startup that polls
takeover_service.poll_and_process_messages every 10 seconds. Added
redis and apscheduler dependencies. Added poll_and_process_messages,
fetch_unread_messages, and process_message methods to TakeoverService.
Scheduler initialization is graceful — Redis/Box IM failures do not
prevent app startup.
2026-08-07 17:01:04 +08:00
stefanfeng
dbd668e451
fix: resolve owner through Avatar model in takeover service
...
- Fix C1: check_takeover_enabled now uses owner_huihui_id to query Avatar first
- Fix C2: execute_takeover resolves owner_id via Avatar model (Authorization has no owner_id)
- Fix I1: add test for None case (no Avatar found)
- Fix I2: add test verifying filter arguments
- Fix I3: implement process_delayed_queue to scan and dispatch expired messages
2026-08-07 16:55:25 +08:00
stefanfeng
190ec48d9c
feat: add takeover service core logic
...
Implement TakeoverService for avatar takeover chat feature:
- check_takeover_enabled: query Authorization for enabled takeover
- generate_reply: call local chat API via httpx to generate responses
- execute_takeover: get owner IM credentials, generate reply, send via BoxIM
- enqueue_delayed_message: Redis delayed queue with graceful degradation
- process_delayed_queue: placeholder for scheduled worker
Service degrades gracefully when Redis is unavailable.
2026-08-07 16:46:57 +08:00
stefanfeng
0cc43a0d8c
fix: exclude signature from signing string in BoxIMClient
...
Prevents stale signature values from leaking into the MD5 signing
calculation, matching the news_service.py pattern. Adds a test that
passes a stale signature in extra params and verifies the returned
signature is freshly computed.
2026-08-07 16:42:00 +08:00
stefanfeng
43bb57eacf
feat: add Box IM client for Netease Yunxin integration
...
Add BoxIMClient with get_credentials and send_p2p_message methods,
using Huihui platform MD5 signing mechanism (sorted keys, 24h timestamp,
12-char alphanumeric nonce). Includes full test coverage.
2026-08-07 16:36:50 +08:00
stefanfeng
7327939b4d
feat: add takeover fields to Authorization model
...
Add takeover_enabled, takeover_mode, and takeover_delay_seconds columns
to the Authorization model with a SQLite migration, and include them
in to_dict(). Test: test_takeover_model.py.
2026-08-07 16:30:29 +08:00
stefanfeng
76f0730b57
docs: add avatar takeover chat implementation plan
2026-08-07 16:22:58 +08:00