- im-service: add GET /messages/group-history/{groupId} for group message history
- im-service: add findGroupHistory query to ImMessageRepository
- im-service: listGroups now filters by user membership (JSON_CONTAINS on member_ids)
- im-service: add groupHistory/listUserGroups/addGroupMember/removeGroupMember methods
- demo-service: add POST /auth/reset-password (unauthenticated forgot-password flow)
- demo-service: rename /user/reset-password → /user/change-password to match client
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add im_friends table with bi-directional add/remove (FriendController)
- Add GET /api/im/conversations: returns per-conversation latest message summaries
using UNION of SINGLE/GROUP queries with correct peer ID computation
- Add ConversationSummary projection interface in ImMessageRepository
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
secretKey field was removed from FeatureServiceEntity in the previous
refactor, but the repository method was left behind, crashing startup.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SERVICE param is already 'tenant-service' etc., compose services are named
the same. Removing the replace() that was stripping the '-service' suffix.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docker and ssh are both natively available on Windows. Credential vars
(%ACR_PASS%, %SSH_KEY%) use bat syntax; Groovy vars use GString.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
OpsController: GET /api/ops/service-requests (with optional status filter),
POST /api/ops/service-requests/{id}/approve, POST .../reject.
OpsService: listServiceRequests() delegates to existing repository queries.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove separate Maven stage. The multi-stage Dockerfile already runs mvn
inside a Linux container, so Windows Jenkins just runs docker build/push.
Server-side docker login pre-configured; deploy only needs docker pull.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Run mvn inside maven:3.9-eclipse-temurin-21 Linux container via Docker
Pipeline plugin; Docker/SSH deploy stages remain on native agent so
Docker Desktop socket is available for image push and SSH for deploy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Jenkinsfile: set ACR registry to crpi-n44qjpuucgjt8e8c.cn-beijing.personal.cr.aliyuncs.com
- tenant-service: fix email SMTP to smtp.sina.com port 465 with SSL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>