Commit graph

68 commits

Author SHA1 Message Date
vsxd
763c908f74 Revert "fix(api): 统一所有分页接口为1-based page"
This reverts commit 3706e920df.
2026-03-13 12:56:29 +08:00
vsxd
3706e920df fix(api): 统一所有分页接口为1-based page
前端传 page=1 表示第一页,后端原来是 0-based 导致首页数据丢失。
涉及: SkillSearch, SkillController, ReviewController,
PromotionController, UserManagement, AuditLog
2026-03-13 12:56:23 +08:00
vsxd
a85a9c3177 fix(publish): 放宽技能包上传校验
- application.yml 补齐缺失的文件扩展名白名单(.js,.ts,.png,.jpg,.svg)
- version 为空时自动生成时间戳版本号,不再强制报错
2026-03-13 12:47:34 +08:00
vsxd
ac32fce08f fix(auth): preserve return target across oauth login 2026-03-13 11:59:17 +08:00
vsxd
84dd08503d merge: bring feature/project-init into main for beta3
# Conflicts:
#	scripts/smoke-test.sh
2026-03-13 11:45:56 +08:00
vsxd
6a9e0845d4 Complete phase 3 and 4 backend workflows 2026-03-13 11:36:34 +08:00
vsxd
76808ca794 test(auth): align auth module tests with current flows 2026-03-13 11:32:50 +08:00
vsxd
5bb2eb0d98 fix(auth): grant global membership to new users 2026-03-13 11:29:01 +08:00
vsxd
0c5e4200cb fix(dev): provide explicit skill repository bean 2026-03-13 11:21:32 +08:00
vsxd
3cee8fbb5a fix(phase4): harden smoke checks and metrics access 2026-03-13 10:56:28 +08:00
vsxd
0ca38e73ba merge: bring phase4 worktree implementation into feature/project-init
# Conflicts:
#	server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/cli/CliPublishController.java
#	server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java
#	server/skillhub-storage/src/main/java/com/iflytek/skillhub/storage/LocalFileStorageService.java
#	web/src/app/router.tsx
2026-03-13 10:35:42 +08:00
vsxd
b982011614 fix(ops): align smoke test with csrf and metrics access 2026-03-13 10:23:46 +08:00
vsxd
07ea0fa822 merge: bring phase4 worktree implementation into main
# Conflicts:
#	server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/cli/CliPublishController.java
#	server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java
#	server/skillhub-storage/src/main/java/com/iflytek/skillhub/storage/LocalFileStorageService.java
#	web/src/app/router.tsx
2026-03-13 10:20:19 +08:00
vsxd
33c44fb9cc feat(phase4): complete auth, governance, observability, and ops polish 2026-03-13 10:17:48 +08:00
vsxd
62d9d88546 chore(release): cut v0.1.0-beta.2 2026-03-13 10:13:50 +08:00
vsxd
d4deb2fb74 fix: address review-reported auth and publish issues 2026-03-13 10:06:25 +08:00
vsxd
f7798dddc5 Revert "merge: bring review fixes into feature/project-init"
This reverts commit 92f63f8b89, reversing
changes made to 78e16f0fe7.
2026-03-13 10:06:14 +08:00
vsxd
5bb887b292 fix: address review-reported auth and publish issues 2026-03-12 22:29:51 +08:00
vsxd
8c5b4d176a feat(auth): add local username-password login 2026-03-12 21:59:28 +08:00
vsxd
3c9b95fd98 refactor(auth): remove local auth flow 2026-03-12 21:36:49 +08:00
vsxd
e63531ca3d feat(dev): stabilize local env and phase3 flows 2026-03-12 21:33:25 +08:00
vsxd
05ec9bfbc2 feat(auth): add local username-password login 2026-03-12 21:27:01 +08:00
vsxd
559a9133ab fix(backend): use DomainBadRequestException and ApiResponse envelope
- IdempotencyInterceptor: restructure Redis check to avoid swallowing
  exceptions inside try-catch, use ApiResponse envelope for 409 response
- IdempotencyInterceptorTest: register JavaTimeModule for Instant
  serialization, align mocks with actual implementation
- SkillRatingServiceTest: update expected exception type to match
  DomainBadRequestException used in entity and service
2026-03-12 20:21:59 +08:00
vsxd
b028937abb refactor(api): improve controllers with dedicated DTOs and better tests
- Extract admin DTOs (AdminUserSummary, AdminUserMutation, etc.)
- Add SkillRating request/response DTOs
- Improve controller input validation and error responses
- Strengthen controller test assertions
2026-03-12 20:12:04 +08:00
vsxd
50adf3545d refactor(auth): improve DeviceAuthService error handling and tests
Strengthen device auth flow with better error messages and
additional test coverage.
2026-03-12 20:11:40 +08:00
vsxd
4dfa17dc4e refactor(domain): improve SkillRating validation and add domain tests
- Add rating value validation in SkillRating entity
- Improve SkillRatingService error handling
- Add SkillPublishService and SkillQueryService test coverage
2026-03-12 20:11:32 +08:00
vsxd
cab627be02 feat(infra): add i18n messages, Redis config, and slug normalization migration
- Add rating/admin i18n message keys (en + zh)
- Improve IdempotencyInterceptor error handling
- Add RedisTemplateConfig for consistent serialization
- Add V4 migration to normalize skill slugs
- Fix RequestIdFilterTest
2026-03-12 20:11:24 +08:00
vsxd
c0e9c10e15 feat(admin): add idempotency layer and admin management API
- Add IdempotencyRecord entity with status tracking (PROCESSING/COMPLETED/FAILED)
- Implement IdempotencyInterceptor for request deduplication via X-Request-Id header
- Add scheduled cleanup tasks for expired and stale idempotency records
- Create admin API endpoints for user management (list/update role/update status)
- Create admin API endpoints for audit log viewing with filtering
- Add comprehensive unit tests for all components
- Configure test Redis mocks to support idempotency layer
2026-03-12 19:32:09 +08:00
vsxd
efd43ef3cd feat(compat): add ClawHub compatibility layer 2026-03-12 19:20:02 +08:00
vsxd
fae775eb97 fix(test): provide mock RedisTemplate for test context
- Add TestRedisConfig with mock RedisTemplate bean
- Restore DeviceAuthService as normal @Service (no conditional)
- Restore controllers as normal @RestController (no conditional)
- Remove DeviceAuthConfig and DeviceAuthWebConfig (not needed)
- All 179 tests pass
2026-03-12 19:08:25 +08:00
vsxd
5cc595b0ff feat(cli): add skill package check endpoint 2026-03-12 18:26:50 +08:00
vsxd
f47377cff1 feat(cli): add Device Auth controllers 2026-03-12 18:19:03 +08:00
vsxd
9a4d64b11b feat(cli): implement DeviceAuthService with Redis storage 2026-03-12 18:13:46 +08:00
vsxd
37fd831ce7 feat(cli): add Device Flow data models 2026-03-12 18:11:13 +08:00
vsxd
dd4f8d8abe feat(social): add SkillStar and SkillRating controllers 2026-03-12 18:06:03 +08:00
vsxd
dbb6d9f39e feat(ops): improve Dockerfile caching, add dockerignore, docker profile, Makefile help
- Server Dockerfile: add Maven dependency caching layer for faster rebuilds
- Add .dockerignore for server and web to reduce build context
- Add docker profile to application.yml for container env var mapping
- Makefile: add help, logs, db-reset targets with ## annotations
2026-03-12 17:50:34 +08:00
vsxd
b520689130 feat(app): update controllers, DTOs, config, rate limiting, and add new components
- Add BaseApiController, MeController, AuthContextFilter
- Add standardized ApiResponse/ApiResponseFactory/PageResponse DTOs
- Add i18n messages (en/zh)
- Replace SlidingWindowRateLimiter with RateLimiter interface + Redis/InMemory impls
- Add localized exception handling
- Update application.yml with messages config
- Update Flyway migrations V1-V3
- Add SkillController and SkillSearchController tests
2026-03-12 17:47:58 +08:00
vsxd
6df55e3768 feat(infra): update JPA repository implementations 2026-03-12 17:47:37 +08:00
vsxd
db0d86ea08 feat(search): update search documents and query services 2026-03-12 17:47:18 +08:00
vsxd
d44f9415fe feat(auth): update security config, auth entities, and token services 2026-03-12 17:47:08 +08:00
vsxd
cfcdb545f0 feat(domain): update entities, services, repositories, and add shared exceptions 2026-03-12 17:46:48 +08:00
vsxd
217ed7e918 feat(social): add SkillStarService and SkillRatingService with events 2026-03-12 17:36:42 +08:00
vsxd
ae24a18e64 feat(social): add SkillStar and SkillRating entities and repositories 2026-03-12 17:19:50 +08:00
vsxd
8b17f2c55b feat(review): add ReviewController and PromotionController REST APIs
- Add review DTOs: ReviewTaskRequest, ReviewTaskResponse, ReviewActionRequest
- Add promotion DTOs: PromotionRequestDto, PromotionResponseDto, PromotionActionRequest
- Add ReviewController with submit/approve/reject/withdraw/list endpoints
- Add PromotionController with submit/approve/reject/list endpoints
- Follow existing BaseApiController + ApiResponse pattern
2026-03-12 16:41:32 +08:00
vsxd
51fa37a9c5 feat(review): implement PromotionService
- Add submitPromotion with duplicate check and validation
- Add approvePromotion with optimistic locking and skill copying
- Add rejectPromotion with reason recording
2026-03-12 15:52:54 +08:00
vsxd
bffc36b815 feat(review): implement ReviewService
- Add submitReview with duplicate check via partial unique index
- Add approveReview with optimistic locking and event publishing
- Add rejectReview with reason recording
- Add withdrawReview with PENDING status check
2026-03-12 15:42:21 +08:00
vsxd
644b3efd44 feat(review): add ReviewPermissionChecker with tests
- canReview: self-review blocked, GLOBAL requires SKILL_ADMIN/SUPER_ADMIN,
  TEAM requires namespace ADMIN/OWNER
- canReviewPromotion: self-review blocked, requires SKILL_ADMIN/SUPER_ADMIN
- NamespaceType passed as parameter to avoid internal repository lookup
- 12 unit tests covering all permission scenarios
2026-03-12 15:24:51 +08:00
vsxd
3ebdc2691d feat(repo): add review repositories
- Add ReviewTaskRepository with optimistic lock update
- Add PromotionRequestRepository
- Implement JPA repositories in infra module
2026-03-12 15:17:11 +08:00
vsxd
8a1b1a9d5f feat(domain): add review workflow domain entities
- Add ReviewTaskStatus enum (PENDING, APPROVED, REJECTED)
- Add ReviewTask entity with optimistic locking
- Add PromotionRequest entity for cross-namespace promotion
2026-03-12 15:10:55 +08:00
vsxd
e57efef41b feat(db): add Phase 3 database migration
- Add review_task table with partial unique index
- Add promotion_request table
- Add skill_star and skill_rating tables
- Add idempotency_record table
2026-03-12 15:05:38 +08:00