dongmucat
284b0992af
test(subscription): add frontend unit and e2e tests
2026-04-29 09:52:54 +08:00
dongmucat
d0e79266f1
feat(subscription): add i18n for subscription notification events
2026-04-29 09:52:54 +08:00
dongmucat
fb3035e545
test(subscription): add SkillSubscriptionController integration tests
2026-04-29 09:52:50 +08:00
dongmucat
fbbd20a5a6
fix(auth): require verified email for domain access
...
变更摘要:
- 修复 EMAIL_DOMAIN 准入策略,未验证邮箱不再因域名匹配被放行
- 新增回归测试,覆盖 OIDC 场景下 email_verified=false 的拒绝行为
- 保持修复范围收敛,仅调整策略判定与对应测试
关键文件:
- server/skillhub-auth/src/main/java/com/iflytek/skillhub/auth/policy/EmailDomainAccessPolicy.java
- server/skillhub-auth/src/test/java/com/iflytek/skillhub/auth/policy/AccessPolicyTest.java
2026-04-28 16:31:52 +08:00
dongmucat
4f44ea3976
fix(auth): add OIDC sub claim validation and complete env example
...
- Add null/blank validation for OIDC sub claim in CustomOidcUserService
- Throw OAuth2AuthenticationException when sub is missing or blank
- Complete .env.release.example with all required OIDC environment variables
- Add test cases for sub validation and providerLogin fallback scenarios
- All 5 tests passing
2026-04-28 13:49:26 +08:00
dongmucat
78b7e4f0c2
chore(api): regenerate OpenAPI types for subscription endpoints
2026-04-28 11:15:57 +08:00
dongmucat
f707cfee61
Merge pull request #342 from iflytek/feature/batch-member-import
...
feat(namespace): batch member import via CSV upload
2026-04-28 09:44:53 +08:00
dongmucat
c667cab280
fix(subscription): replace any type with explicit type assertion
2026-04-27 17:29:31 +08:00
dongmucat
658c44603b
feat(subscription): add Chinese i18n for subscription feature
2026-04-27 17:21:39 +08:00
dongmucat
e70de0fc2e
feat(subscription): add English i18n for subscription feature
2026-04-27 17:19:50 +08:00
dongmucat
12ed6f9146
feat(subscription): add subscriptions card to dashboard
2026-04-27 17:18:07 +08:00
dongmucat
6b3855e061
feat(subscription): add subscriptions menu item to user menu
2026-04-27 17:17:24 +08:00
dongmucat
6eee7342f3
feat(subscription): add /dashboard/subscriptions route
2026-04-27 17:16:48 +08:00
dongmucat
f0c2403134
feat(subscription): add MySubscriptionsPage component
2026-04-27 17:15:24 +08:00
dongmucat
1afb2085d9
feat(subscription): add SubscribeButton to skill detail page
2026-04-27 17:14:53 +08:00
dongmucat
b0623660c9
feat(subscription): add SubscribeButton component
2026-04-27 17:13:49 +08:00
dongmucat
0175897f45
feat(subscription): add useSubscription and useToggleSubscription hooks
2026-04-27 17:13:19 +08:00
dongmucat
d6ea91e069
feat(subscription): add useMySubscriptions query hooks
2026-04-27 17:12:52 +08:00
dongmucat
ebc3280d65
feat(subscription): add meApi subscriptions methods
2026-04-27 17:12:23 +08:00
dongmucat
7063a6d348
test(subscription): add SkillSubscriptionService unit tests
2026-04-27 17:02:48 +08:00
dongmucat
9bc5d0c784
feat(subscription): notify subscribers on skill publish and version yank
2026-04-27 16:51:40 +08:00
dongmucat
6f0103f013
feat(subscription): publish SkillVersionYankedEvent on version yank
2026-04-27 16:50:38 +08:00
dongmucat
4e62698231
feat(subscription): add /me/subscriptions endpoint for user subscription list
2026-04-27 16:49:26 +08:00
dongmucat
4713e864bd
feat(subscription): add SkillSubscriptionController REST endpoints
2026-04-27 16:47:56 +08:00
dongmucat
a2aa4c3fb1
feat(subscription): update subscription count on subscribe/unsubscribe
2026-04-27 16:47:14 +08:00
dongmucat
9d4422cd6c
feat(subscription): add increment/decrement subscription count methods
2026-04-27 16:46:34 +08:00
dongmucat
79f1aa4db1
feat(subscription): add subscriptionCount field to Skill entity
2026-04-27 16:44:34 +08:00
dongmucat
7da8ffdb1b
feat(subscription): add JPA implementation for SkillSubscriptionRepository
2026-04-27 16:43:34 +08:00
dongmucat
1567a67bdd
feat(subscription): add SkillSubscriptionService domain service
2026-04-27 16:43:15 +08:00
dongmucat
7391c26843
feat(subscription): add subscription and version yanked domain events
2026-04-27 16:42:50 +08:00
dongmucat
9c05e91a6c
feat(subscription): add SkillSubscription entity and repository interface
2026-04-27 16:40:34 +08:00
dongmucat
8c75409b72
feat(subscription): add skill_subscription table migration V40
2026-04-27 16:39:46 +08:00
dongmucat
c71e4c197a
Merge pull request #354 from iflytek/fix/namespace-skill-pagination
...
fix(namespace): add pagination to namespace skill list
2026-04-27 16:06:19 +08:00
dongmucat
c330db0bf3
feat(ui): display user ID on dashboard and profile settings pages
2026-04-27 14:54:39 +08:00
dongmucat
c1241ff83a
test(namespace): fully mock search api in pagination e2e test
...
Root cause: two issues caused CI failure:
1. publishSkill hit 429 rate limit from other tests in the suite
2. glob pattern '?' was ambiguous for matching literal '?' in URLs
Fix: remove publishSkill dependency, use regex route matching, and
return fully mocked API responses with fake skill data. This tests
the frontend pagination UI behavior without needing real published
skills.
2026-04-27 11:42:43 +08:00
dongmucat
548ded0ad0
test(namespace): fix pagination e2e rate limit by intercepting search api
2026-04-27 11:25:07 +08:00
dongmucat
0020989ccb
fix(namespace): add pagination to namespace skill list
...
The namespace detail page hardcoded a limit of 20 skills with no
pagination controls, so namespaces with more than 20 skills appeared
truncated. Add page state, wire it into the search query, and render
the shared Pagination component when total exceeds PAGE_SIZE. Also
reset page to 0 when the namespace param changes.
Closes #350
2026-04-27 10:54:57 +08:00
dongmucat
0cc3c46831
Merge pull request #340 from iflytek/feature/web-update-skill
...
feat(dashboard): add Update button to My Skills with publish prefill
2026-04-24 15:25:04 +08:00
dongmucat
bb9f8915e2
feat(auth): support oidc login
2026-04-24 13:45:20 +08:00
dongmucat
c5c76d3bb0
Merge pull request #346 from iflytek/fix/search-empty-keyword-results
...
fix(search): preserve empty-query discovery results
2026-04-23 16:48:23 +08:00
dongmucat
df85ea0e18
fix(search): preserve empty-query discovery results
2026-04-23 16:24:23 +08:00
dongmucat
1591ee02b5
feat(ui): add dependencies and i18n for version diff
2026-04-23 11:08:33 +08:00
dongmucat
3739c7879b
Merge pull request #305 from iflytek/fix/bootstrap-admin-role-backfill
...
fix(auth): backfill bootstrap admin role binding
2026-04-23 10:11:43 +08:00
dongmucat
17b30c8f30
docs(namespace): clarify intentional no-transaction on batchAddMembers
2026-04-22 16:47:18 +08:00
dongmucat
068cdaf84c
test(namespace): add batch import members E2E tests
...
Adds Playwright E2E tests for batch member import dialog:
- Opens dialog and verifies upload step UI elements
- Uploads CSV with mixed valid/invalid rows and verifies preview with validation messages
Uses admin context pattern to create namespace and add test user as ADMIN member.
2026-04-22 16:36:18 +08:00
dongmucat
ee8ca10b3a
feat(namespace): add batch import button to members page
2026-04-22 16:18:40 +08:00
dongmucat
ebb873e8b3
test(namespace): add batch import CSV parsing and validation tests
2026-04-22 16:16:27 +08:00
dongmucat
ca29994816
feat(namespace): add batch import members dialog component
2026-04-22 16:15:03 +08:00
dongmucat
5f3e7a0441
feat(namespace): add batch member import i18n keys
2026-04-22 16:12:07 +08:00
dongmucat
7baf059783
feat(namespace): add useBatchAddNamespaceMembers mutation hook
2026-04-22 16:11:17 +08:00