For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Allow anonymous users to enter and browse mini-program activity details, requiring login only when they invoke identity-dependent actions.
Architecture: The backend detail endpoint accepts an optional user and the service treats a missing user as anonymous. The mini-program removes entry-time gates and uses one reusable action guard for detail interactions.
Tech Stack: Java 8, Spring MVC, MyBatis, JUnit 4, Vue 3/uni-app, Node test runner
Spec: docs/superpowers/specs/2026-10-15-anonymous-activity-detail-design.md
Files:
../happytree/happytree-app/src/main/java/com/ringzle/controller/core/AppActivityController.java../happytree/happytree-sys/src/main/java/com/ringzle/modules/core/service/impl/ActivityServiceImpl.java../happytree/happytree-sys/src/test/java/com/ringzle/modules/core/service/impl/ActivityServiceAnonymousDetailTest.javaInterfaces:
AppUserEntity user from the existing argument resolver.Produces: ActivityService.getAppInfoById(Long, AppUserEntity) supports user == null.
[ ] Write service tests proving anonymous lookup passes null user ID and skips user-specific permission queries, while authenticated lookup retains permission checks.
[ ] Run the targeted tests and verify the anonymous case fails with a null dereference.
[ ] Remove the controller's mandatory-login annotation and make the service null-safe.
[ ] Run the targeted test and full happytree-sys suite in Docker Maven.
[ ] Commit the backend change.
Files:
common/utils/auth-session.jscomponents/pages/nonprofitActivety/index.vuepagesHome/activityDetail.vuetests/activity-detail-login-gate.test.jsInterfaces:
hasValidSession() based on token and expiration storage.Produces: activity-card navigation without login and requireLogin(action) for identity-dependent detail interactions.
[ ] Write behavior tests for anonymous card navigation, passive detail loading, guarded actions, expired sessions, valid sessions, and post-login refresh.
[ ] Run the new test and verify it fails for the existing entry-time gates.
[ ] Implement the session helper, remove entry-time prompts, and wrap identity-dependent actions with the reusable guard.
[ ] Run the new test and all mini-program Node tests.
[ ] Commit the mini-program change.
Files:
Interfaces:
Produces: verified build/test evidence for handoff.
[ ] Compile the backend app module with Docker Maven and run all backend tests.
[ ] Run all mini-program Node tests and inspect both repository diffs.
[ ] Record any deviations and complete final review.