it0/packages/shared
hailin 8751c85881 feat(dingtalk): unified DingTalk bot router with binding flow
- Add DingTalkRouterService: maintains single DingTalk Stream WS
  connection, handles binding codes, routes messages to agent containers
- Add AgentChannelController: POST bind/:id, GET status/:id, POST unbind/:id
- Add findByDingTalkUserId() to AgentInstanceRepository
- Add dingTalkUserId field to AgentInstance entity + migration 011
- Register DingTalkRouterService + AgentChannelController in AgentModule
- Add IT0_DINGTALK_CLIENT_ID/SECRET env vars to docker-compose.yml
- Flutter: DingTalk bind UI in _InstanceCard (bottom sheet with code
  display, countdown, auto-poll, open DingTalk deep link, bound badge)

Robustness improvements in DingTalkRouterService:
  - Concurrent connect guard (connecting flag)
  - Periodic cleanup timer for dedup/rateWindows/bindingCodes maps
  - Non-text message graceful reply
  - Empty senderStaffId guard
  - serverHost null guard before bridge call
  - unref() cleanup timers from event loop

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 08:12:27 -07:00
..
common feat: implement complete commercial monetization loop (Phases 1-4) 2026-03-03 21:09:17 -08:00
database feat(dingtalk): unified DingTalk bot router with binding flow 2026-03-08 08:12:27 -07:00
events feat: implement complete commercial monetization loop (Phases 1-4) 2026-03-03 21:09:17 -08:00
proto Initial commit: IT0 AI-powered server cluster operations platform 2026-02-08 22:54:37 -08:00
testing fix: correct billing migration schema refs and testing mock TenantInfo 2026-03-03 21:22:02 -08:00