docs: 批量更新历史文档中的 backend-single 引用为 server
This commit is contained in:
@@ -570,13 +570,13 @@ deploy_ssl() {
|
||||
deploy_backend() {
|
||||
log_section "部署后端服务"
|
||||
|
||||
if [ ! -f "backend-single/deploy.sh" ]; then
|
||||
if [ ! -f "server/deploy.sh" ]; then
|
||||
log_error "后端部署脚本不存在"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log_info "执行后端部署..."
|
||||
cd backend-single
|
||||
cd server
|
||||
bash deploy.sh remote
|
||||
local result=$?
|
||||
cd ..
|
||||
@@ -828,7 +828,7 @@ git commit -m "config: 更新管理后台部署脚本访问地址提示"
|
||||
### Task 9: 检查并修改后端 CORS 配置
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/resources/application.yml` (或相应配置文件)
|
||||
- Modify: `server/src/main/resources/application.yml` (或相应配置文件)
|
||||
|
||||
- [ ] **Step 1: 读取当前后端配置文件**
|
||||
|
||||
@@ -841,7 +841,7 @@ git commit -m "config: 更新管理后台部署脚本访问地址提示"
|
||||
- [ ] **Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/resources/application.yml
|
||||
git add server/src/main/resources/application.yml
|
||||
git commit -m "config: 更新 CORS 配置允许新域名访问"
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
**Goal:** Add mini program behavior analytics collection, backend event storage and aggregation, and a web-admin behavior analytics dashboard.
|
||||
|
||||
**Architecture:** The mini program queues analytics events locally and flushes them to `POST /analytics/events/batch`. `backend-single` stores raw events in `t_analytics_event` and exposes admin-only aggregation endpoints under `/admin/analytics`. `web-admin` renders overview, trend, funnel, preference, and top-event stats using Element Plus and ECharts.
|
||||
**Architecture:** The mini program queues analytics events locally and flushes them to `POST /analytics/events/batch`. `server` stores raw events in `t_analytics_event` and exposes admin-only aggregation endpoints under `/admin/analytics`. `web-admin` renders overview, trend, funnel, preference, and top-event stats using Element Plus and ECharts.
|
||||
|
||||
**Tech Stack:** Spring Boot 2.7, MyBatis Plus, MySQL JSON, Java 17, uni-app/Vue, Vue 3, Element Plus, ECharts.
|
||||
|
||||
@@ -13,25 +13,25 @@
|
||||
## File Structure
|
||||
|
||||
- Create `sql/2026-05-17-analytics-event.sql`: migration for `t_analytics_event`.
|
||||
- Create `backend-single/src/main/java/com/emotion/entity/AnalyticsEvent.java`: MyBatis Plus entity.
|
||||
- Create `backend-single/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`: mapper plus aggregation SQL.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`: mini program batch request.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventRequest.java`: one event payload.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java`: admin query filters.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsBatchResponse.java`: accepted/rejected counts.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsOverviewResponse.java`: overview cards.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsTrendItem.java`: trend item.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsFunnelItem.java`: funnel item.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsPreferenceItem.java`: preference item.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsTopEventItem.java`: top event item.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsUserItem.java`: user ranking item.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/AnalyticsService.java`: write and aggregate contract.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`: validation, persistence, aggregation.
|
||||
- Create `backend-single/src/main/java/com/emotion/controller/AnalyticsController.java`: mini program write endpoint.
|
||||
- Create `backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java`: admin read endpoints.
|
||||
- Modify `backend-single/src/main/java/com/emotion/config/WebMvcConfig.java`: allow anonymous analytics batch endpoint while keeping admin analytics protected.
|
||||
- Create `backend-single/src/test/java/com/emotion/service/AnalyticsServiceTest.java`: service validation and aggregation tests.
|
||||
- Create `backend-single/src/test/java/com/emotion/controller/AnalyticsControllerTest.java`: endpoint tests.
|
||||
- Create `server/src/main/java/com/emotion/entity/AnalyticsEvent.java`: MyBatis Plus entity.
|
||||
- Create `server/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`: mapper plus aggregation SQL.
|
||||
- Create `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`: mini program batch request.
|
||||
- Create `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventRequest.java`: one event payload.
|
||||
- Create `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java`: admin query filters.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsBatchResponse.java`: accepted/rejected counts.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsOverviewResponse.java`: overview cards.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsTrendItem.java`: trend item.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsFunnelItem.java`: funnel item.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsPreferenceItem.java`: preference item.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsTopEventItem.java`: top event item.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsUserItem.java`: user ranking item.
|
||||
- Create `server/src/main/java/com/emotion/service/AnalyticsService.java`: write and aggregate contract.
|
||||
- Create `server/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`: validation, persistence, aggregation.
|
||||
- Create `server/src/main/java/com/emotion/controller/AnalyticsController.java`: mini program write endpoint.
|
||||
- Create `server/src/main/java/com/emotion/controller/AdminAnalyticsController.java`: admin read endpoints.
|
||||
- Modify `server/src/main/java/com/emotion/config/WebMvcConfig.java`: allow anonymous analytics batch endpoint while keeping admin analytics protected.
|
||||
- Create `server/src/test/java/com/emotion/service/AnalyticsServiceTest.java`: service validation and aggregation tests.
|
||||
- Create `server/src/test/java/com/emotion/controller/AnalyticsControllerTest.java`: endpoint tests.
|
||||
- Create `mini-program/src/services/analytics.js`: client SDK.
|
||||
- Modify `mini-program/src/App.vue`: initialize and flush analytics.
|
||||
- Modify `mini-program/src/pages/main/index.vue`: track main tab/page activity if this page owns tab switching.
|
||||
@@ -121,11 +121,11 @@ git commit -m "feat: add analytics event table"
|
||||
### Task 2: Add Backend DTOs and Entity
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/AnalyticsEvent.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java`
|
||||
- Create: response DTO files under `backend-single/src/main/java/com/emotion/dto/response/analytics/`
|
||||
- Create: `server/src/main/java/com/emotion/entity/AnalyticsEvent.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java`
|
||||
- Create: response DTO files under `server/src/main/java/com/emotion/dto/response/analytics/`
|
||||
|
||||
- [ ] **Step 1: Add the entity**
|
||||
|
||||
@@ -387,7 +387,7 @@ public class AnalyticsUserItem {
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -396,7 +396,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/AnalyticsEvent.java backend-single/src/main/java/com/emotion/dto/request/analytics backend-single/src/main/java/com/emotion/dto/response/analytics
|
||||
git add server/src/main/java/com/emotion/entity/AnalyticsEvent.java server/src/main/java/com/emotion/dto/request/analytics server/src/main/java/com/emotion/dto/response/analytics
|
||||
git commit -m "feat: add analytics DTOs and entity"
|
||||
```
|
||||
|
||||
@@ -405,10 +405,10 @@ git commit -m "feat: add analytics DTOs and entity"
|
||||
### Task 3: Add Analytics Mapper and Service
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/AnalyticsService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/AnalyticsServiceTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/AnalyticsService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`
|
||||
- Test: `server/src/test/java/com/emotion/service/AnalyticsServiceTest.java`
|
||||
|
||||
- [ ] **Step 1: Write service tests**
|
||||
|
||||
@@ -462,7 +462,7 @@ public class AnalyticsServiceTest {
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -Dtest=AnalyticsServiceTest test
|
||||
```
|
||||
|
||||
@@ -676,7 +676,7 @@ public class AnalyticsServiceImpl extends ServiceImpl<AnalyticsEventMapper, Anal
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -Dtest=AnalyticsServiceTest test
|
||||
```
|
||||
|
||||
@@ -685,7 +685,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 7: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java backend-single/src/main/java/com/emotion/service/AnalyticsService.java backend-single/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java backend-single/src/test/java/com/emotion/service/AnalyticsServiceTest.java
|
||||
git add server/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java server/src/main/java/com/emotion/service/AnalyticsService.java server/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java server/src/test/java/com/emotion/service/AnalyticsServiceTest.java
|
||||
git commit -m "feat: add analytics service"
|
||||
```
|
||||
|
||||
@@ -694,10 +694,10 @@ git commit -m "feat: add analytics service"
|
||||
### Task 4: Add Analytics Controllers and Auth Exclusion
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/AnalyticsController.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/config/WebMvcConfig.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/controller/AnalyticsControllerTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/AnalyticsController.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/AdminAnalyticsController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/config/WebMvcConfig.java`
|
||||
- Test: `server/src/test/java/com/emotion/controller/AnalyticsControllerTest.java`
|
||||
|
||||
- [ ] **Step 1: Add write controller**
|
||||
|
||||
@@ -794,7 +794,7 @@ Do not exclude `/admin/analytics/**`.
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -803,7 +803,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AnalyticsController.java backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java backend-single/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git add server/src/main/java/com/emotion/controller/AnalyticsController.java server/src/main/java/com/emotion/controller/AdminAnalyticsController.java server/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git commit -m "feat: expose analytics APIs"
|
||||
```
|
||||
|
||||
@@ -1323,7 +1323,7 @@ git commit -m "feat: add analytics admin dashboard"
|
||||
- [ ] **Step 1: Run backend tests**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn test
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
**Goal:** Add CPU-friendly open-source text-to-speech generation for user scripts, with cached backend tasks and mini program playback.
|
||||
|
||||
**Architecture:** `backend-single` creates TTS tasks, validates source ownership, cleans script text, checks audio cache, and calls a private Python FastAPI TTS service. The Python service runs on `101.200.208.45` and writes audio files under `/data/uploads/emotion-museum/tts`. The mini program requests generation from `ScriptDetailView.vue`, polls status, and plays the returned audio URL with `uni.createInnerAudioContext()`.
|
||||
**Architecture:** `server` creates TTS tasks, validates source ownership, cleans script text, checks audio cache, and calls a private Python FastAPI TTS service. The Python service runs on `101.200.208.45` and writes audio files under `/data/uploads/emotion-museum/tts`. The mini program requests generation from `ScriptDetailView.vue`, polls status, and plays the returned audio URL with `uni.createInnerAudioContext()`.
|
||||
|
||||
**Tech Stack:** Spring Boot 2.7, MyBatis Plus, Java 17, MySQL, Python FastAPI, MeloTTS or equivalent CPU-friendly Chinese TTS engine, systemd, uni-app/Vue.
|
||||
|
||||
@@ -13,22 +13,22 @@
|
||||
## File Structure
|
||||
|
||||
- Create `sql/2026-05-17-tts-task.sql`: `t_tts_task` migration.
|
||||
- Create `backend-single/src/main/java/com/emotion/entity/TtsTask.java`: task entity.
|
||||
- Create `backend-single/src/main/java/com/emotion/mapper/TtsTaskMapper.java`: task mapper.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`: create request.
|
||||
- Create `backend-single/src/main/java/com/emotion/dto/response/tts/TtsTaskResponse.java`: task response.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/TtsTaskService.java`: contract.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java`: ownership, cache, async processing.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/TtsEngineClient.java`: internal engine client contract.
|
||||
- Create `backend-single/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java`: calls Python service.
|
||||
- Create `backend-single/src/main/java/com/emotion/controller/TtsController.java`: user-facing TTS endpoints.
|
||||
- Modify `backend-single/src/main/resources/application.yml`: TTS config defaults.
|
||||
- Modify `backend-single/src/main/resources/application-prod.yml`: production paths and internal URL.
|
||||
- Create `backend-single/src/test/java/com/emotion/service/TtsTaskServiceTest.java`: service tests.
|
||||
- Create `backend-single/tts-service/requirements.txt`: FastAPI deps; MeloTTS is installed from the official repository because the official docs use editable install plus `python -m unidic download`.
|
||||
- Create `backend-single/tts-service/app.py`: FastAPI service.
|
||||
- Create `backend-single/tts-service/README.md`: server setup.
|
||||
- Create `backend-single/tts-service/emotion-museum-tts.service`: systemd unit.
|
||||
- Create `server/src/main/java/com/emotion/entity/TtsTask.java`: task entity.
|
||||
- Create `server/src/main/java/com/emotion/mapper/TtsTaskMapper.java`: task mapper.
|
||||
- Create `server/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`: create request.
|
||||
- Create `server/src/main/java/com/emotion/dto/response/tts/TtsTaskResponse.java`: task response.
|
||||
- Create `server/src/main/java/com/emotion/service/TtsTaskService.java`: contract.
|
||||
- Create `server/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java`: ownership, cache, async processing.
|
||||
- Create `server/src/main/java/com/emotion/service/TtsEngineClient.java`: internal engine client contract.
|
||||
- Create `server/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java`: calls Python service.
|
||||
- Create `server/src/main/java/com/emotion/controller/TtsController.java`: user-facing TTS endpoints.
|
||||
- Modify `server/src/main/resources/application.yml`: TTS config defaults.
|
||||
- Modify `server/src/main/resources/application-prod.yml`: production paths and internal URL.
|
||||
- Create `server/src/test/java/com/emotion/service/TtsTaskServiceTest.java`: service tests.
|
||||
- Create `server/tts-service/requirements.txt`: FastAPI deps; MeloTTS is installed from the official repository because the official docs use editable install plus `python -m unidic download`.
|
||||
- Create `server/tts-service/app.py`: FastAPI service.
|
||||
- Create `server/tts-service/README.md`: server setup.
|
||||
- Create `server/tts-service/emotion-museum-tts.service`: systemd unit.
|
||||
- Create `mini-program/src/services/tts.js`: TTS API client.
|
||||
- Create `mini-program/src/components/ScriptAudioPlayer.vue`: player component.
|
||||
- Modify `mini-program/src/pages/main/ScriptDetailView.vue`: add player.
|
||||
@@ -93,10 +93,10 @@ git commit -m "feat: add tts task table"
|
||||
### Task 2: Add Backend TTS Entity, DTOs, and Mapper
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/TtsTask.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/TtsTaskMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/tts/TtsTaskResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/TtsTask.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/TtsTaskMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/tts/TtsTaskResponse.java`
|
||||
|
||||
- [ ] **Step 1: Add entity**
|
||||
|
||||
@@ -205,7 +205,7 @@ public class TtsTaskResponse {
|
||||
- [ ] **Step 4: Compile**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -214,7 +214,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/TtsTask.java backend-single/src/main/java/com/emotion/mapper/TtsTaskMapper.java backend-single/src/main/java/com/emotion/dto/request/tts backend-single/src/main/java/com/emotion/dto/response/tts
|
||||
git add server/src/main/java/com/emotion/entity/TtsTask.java server/src/main/java/com/emotion/mapper/TtsTaskMapper.java server/src/main/java/com/emotion/dto/request/tts server/src/main/java/com/emotion/dto/response/tts
|
||||
git commit -m "feat: add tts task model"
|
||||
```
|
||||
|
||||
@@ -223,13 +223,13 @@ git commit -m "feat: add tts task model"
|
||||
### Task 3: Add TTS Service and Engine Client
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/TtsTaskService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/TtsEngineClient.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java`
|
||||
- Modify: `backend-single/src/main/resources/application.yml`
|
||||
- Modify: `backend-single/src/main/resources/application-prod.yml`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/TtsTaskServiceTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/TtsTaskService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/TtsEngineClient.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java`
|
||||
- Modify: `server/src/main/resources/application.yml`
|
||||
- Modify: `server/src/main/resources/application-prod.yml`
|
||||
- Test: `server/src/test/java/com/emotion/service/TtsTaskServiceTest.java`
|
||||
|
||||
- [ ] **Step 1: Add service contracts**
|
||||
|
||||
@@ -503,7 +503,7 @@ public class TtsTaskServiceImpl extends ServiceImpl<TtsTaskMapper, TtsTask> impl
|
||||
- [ ] **Step 5: Run compile**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -512,7 +512,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/TtsTaskService.java backend-single/src/main/java/com/emotion/service/TtsEngineClient.java backend-single/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java backend-single/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java backend-single/src/main/resources/application.yml backend-single/src/main/resources/application-prod.yml
|
||||
git add server/src/main/java/com/emotion/service/TtsTaskService.java server/src/main/java/com/emotion/service/TtsEngineClient.java server/src/main/java/com/emotion/service/impl/HttpTtsEngineClient.java server/src/main/java/com/emotion/service/impl/TtsTaskServiceImpl.java server/src/main/resources/application.yml server/src/main/resources/application-prod.yml
|
||||
git commit -m "feat: add tts backend service"
|
||||
```
|
||||
|
||||
@@ -521,7 +521,7 @@ git commit -m "feat: add tts backend service"
|
||||
### Task 4: Add TTS Controller
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/TtsController.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/TtsController.java`
|
||||
|
||||
- [ ] **Step 1: Add controller**
|
||||
|
||||
@@ -569,7 +569,7 @@ public class TtsController {
|
||||
- [ ] **Step 2: Run compile**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -578,7 +578,7 @@ Expected: `BUILD SUCCESS`.
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/TtsController.java
|
||||
git add server/src/main/java/com/emotion/controller/TtsController.java
|
||||
git commit -m "feat: expose tts task APIs"
|
||||
```
|
||||
|
||||
@@ -587,10 +587,10 @@ git commit -m "feat: expose tts task APIs"
|
||||
### Task 5: Add Python TTS Service Skeleton
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/tts-service/requirements.txt`
|
||||
- Create: `backend-single/tts-service/app.py`
|
||||
- Create: `backend-single/tts-service/README.md`
|
||||
- Create: `backend-single/tts-service/emotion-museum-tts.service`
|
||||
- Create: `server/tts-service/requirements.txt`
|
||||
- Create: `server/tts-service/app.py`
|
||||
- Create: `server/tts-service/README.md`
|
||||
- Create: `server/tts-service/emotion-museum-tts.service`
|
||||
|
||||
- [ ] **Step 1: Add requirements**
|
||||
|
||||
@@ -717,7 +717,7 @@ curl http://127.0.0.1:19110/health
|
||||
- [ ] **Step 5: Run local syntax check**
|
||||
|
||||
```bash
|
||||
python -m py_compile backend-single/tts-service/app.py
|
||||
python -m py_compile server/tts-service/app.py
|
||||
```
|
||||
|
||||
Expected: no output and exit code 0.
|
||||
@@ -725,7 +725,7 @@ Expected: no output and exit code 0.
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/tts-service
|
||||
git add server/tts-service
|
||||
git commit -m "feat: add private tts service scaffold"
|
||||
```
|
||||
|
||||
@@ -960,7 +960,7 @@ git commit -m "feat: add tts control to script detail"
|
||||
- [ ] **Step 1: Upload service directory**
|
||||
|
||||
```bash
|
||||
scp -r backend-single/tts-service root@101.200.208.45:/data/programs/emotion-museum/tts-service
|
||||
scp -r server/tts-service root@101.200.208.45:/data/programs/emotion-museum/tts-service
|
||||
```
|
||||
|
||||
Expected: files are copied.
|
||||
@@ -988,7 +988,7 @@ Expected:
|
||||
- [ ] **Step 4: Install systemd unit after health passes**
|
||||
|
||||
```bash
|
||||
scp backend-single/tts-service/emotion-museum-tts.service root@101.200.208.45:/etc/systemd/system/emotion-museum-tts.service
|
||||
scp server/tts-service/emotion-museum-tts.service root@101.200.208.45:/etc/systemd/system/emotion-museum-tts.service
|
||||
ssh root@101.200.208.45 "systemctl daemon-reload && systemctl enable emotion-museum-tts && systemctl restart emotion-museum-tts && systemctl status emotion-museum-tts --no-pager"
|
||||
```
|
||||
|
||||
@@ -997,7 +997,7 @@ Expected: service status is active.
|
||||
- [ ] **Step 5: Commit deployment doc tweaks if needed**
|
||||
|
||||
```bash
|
||||
git add backend-single/tts-service/README.md
|
||||
git add server/tts-service/README.md
|
||||
git commit -m "docs: update tts deployment notes"
|
||||
```
|
||||
|
||||
@@ -1013,7 +1013,7 @@ Only run this commit if README changed.
|
||||
- [ ] **Step 1: Run backend tests**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn test
|
||||
```
|
||||
|
||||
|
||||
@@ -44,21 +44,21 @@ This plan does not implement:
|
||||
|
||||
Backend:
|
||||
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/SocialContentItem.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/SocialProfileInsight.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/UserConsentLog.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/SocialContentItemMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/SocialProfileInsightMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/UserConsentLogMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/social/*.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/social/*.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/SocialContentController.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/SocialInsightController.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/SocialContentService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/SocialInsightService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/ScriptContextService.java`
|
||||
- Create implementations under `backend-single/src/main/java/com/emotion/service/impl/`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/SocialContentItem.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/SocialProfileInsight.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/UserConsentLog.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/SocialContentItemMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/SocialProfileInsightMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/UserConsentLogMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/social/*.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/social/*.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/SocialContentController.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/SocialInsightController.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/SocialContentService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/SocialInsightService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/ScriptContextService.java`
|
||||
- Create implementations under `server/src/main/java/com/emotion/service/impl/`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java`
|
||||
- Modify SQL schema/migration file used by this repo.
|
||||
|
||||
Mini program:
|
||||
@@ -212,7 +212,7 @@ public interface SocialContentItemMapper extends BaseMapper<SocialContentItem> {
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -221,8 +221,8 @@ Expected: compile succeeds.
|
||||
## Task 3: Social Content API
|
||||
|
||||
**Files:**
|
||||
- Create DTOs under `backend-single/src/main/java/com/emotion/dto/request/social/`
|
||||
- Create DTOs under `backend-single/src/main/java/com/emotion/dto/response/social/`
|
||||
- Create DTOs under `server/src/main/java/com/emotion/dto/request/social/`
|
||||
- Create DTOs under `server/src/main/java/com/emotion/dto/response/social/`
|
||||
- Create: `SocialContentController.java`
|
||||
- Create: `SocialContentService.java`
|
||||
- Create: `SocialContentServiceImpl.java`
|
||||
@@ -317,7 +317,7 @@ Do not accept screenshots larger than the configured limit.
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -405,7 +405,7 @@ Rules:
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -414,8 +414,8 @@ Expected: compile succeeds.
|
||||
## Task 5: Script Context Integration
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/ScriptContextService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/ScriptContextServiceImpl.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/ScriptContextService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/ScriptContextServiceImpl.java`
|
||||
- Modify: `EpicScriptServiceImpl.java`
|
||||
|
||||
- [ ] **Step 1: Implement context service**
|
||||
@@ -468,7 +468,7 @@ When social insight context is non-empty, add analytics/event hook if backend an
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -658,7 +658,7 @@ Expected: build succeeds.
|
||||
Run:
|
||||
|
||||
```powershell
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -707,7 +707,7 @@ Check:
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```powershell
|
||||
git add backend-single mini-program sql docs/superpowers/specs/2026-05-19-social-data-import-script-profile-design.md docs/superpowers/plans/2026-05-19-social-data-import-script-profile-plan.md
|
||||
git add server mini-program sql docs/superpowers/specs/2026-05-19-social-data-import-script-profile-design.md docs/superpowers/plans/2026-05-19-social-data-import-script-profile-plan.md
|
||||
git commit -m "feat: add social data import design and profile plan"
|
||||
```
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
### Task 1: ASR Service
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/asr-service/app.py`
|
||||
- Create: `backend-single/asr-service/requirements.txt`
|
||||
- Create: `backend-single/asr-service/emotion-museum-asr.service`
|
||||
- Create: `backend-single/asr-service/README.md`
|
||||
- Create: `server/asr-service/app.py`
|
||||
- Create: `server/asr-service/requirements.txt`
|
||||
- Create: `server/asr-service/emotion-museum-asr.service`
|
||||
- Create: `server/asr-service/README.md`
|
||||
|
||||
- [x] Add a FastAPI service with `/health` and `/transcribe`.
|
||||
- [x] Accept an uploaded audio file, save it under `/tmp/emotion-museum-asr`, run the ASR model, and return JSON with `success`, `text`, `language`, `durationMs`, `engine`, and `errorMessage`.
|
||||
@@ -25,12 +25,12 @@
|
||||
### Task 2: Java Backend Proxy
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/asr/AsrTranscribeResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/AsrService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/AsrServiceImpl.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/AsrController.java`
|
||||
- Modify: `backend-single/src/main/resources/application.yml`
|
||||
- Modify: `backend-single/src/main/resources/application-prod.yml`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/asr/AsrTranscribeResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/AsrService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/AsrServiceImpl.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/AsrController.java`
|
||||
- Modify: `server/src/main/resources/application.yml`
|
||||
- Modify: `server/src/main/resources/application-prod.yml`
|
||||
|
||||
- [x] Add `emotion.asr` config for `enabled`, `engine-url`, `max-file-size`, and `allowed-types`.
|
||||
- [x] Validate upload presence, size, and suffix.
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
|
||||
| 文件 | 职责 | 操作 |
|
||||
|------|------|------|
|
||||
| `backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java` | DTO:新增 endpointId 字段,更新 RESERVED_KEYS | 修改 |
|
||||
| `backend-single/src/main/java/com/emotion/service/AiRuntimeService.java` | Service 接口:新增 testEndpoint + invokeEndpointStream | 修改 |
|
||||
| `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java` | Service 实现:新增两个方法的完整实现 | 修改 |
|
||||
| `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java` | Controller:新增 /endpoint/test 和 /endpoint/stream | 修改 |
|
||||
| `server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java` | DTO:新增 endpointId 字段,更新 RESERVED_KEYS | 修改 |
|
||||
| `server/src/main/java/com/emotion/service/AiRuntimeService.java` | Service 接口:新增 testEndpoint + invokeEndpointStream | 修改 |
|
||||
| `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java` | Service 实现:新增两个方法的完整实现 | 修改 |
|
||||
| `server/src/main/java/com/emotion/controller/AiRoutingController.java` | Controller:新增 /endpoint/test 和 /endpoint/stream | 修改 |
|
||||
| `web-admin/src/types/aiconfig.ts` | TypeScript 类型:新增 AiEndpointRuntimeRequest | 修改 |
|
||||
| `web-admin/src/api/aiconfig.ts` | API 层:新增 testEndpointRuntime、streamEndpointRuntime、提取 fetchSseStream | 修改 |
|
||||
| `web-admin/src/views/aiconfig/AiRoutingList.vue` | Vue 组件:增加行内测试按钮 + endpoint 测试对话框 | 修改 |
|
||||
@@ -27,7 +27,7 @@
|
||||
### Task 1: DTO 增强 — AiRuntimeRequest 新增 endpointId
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
|
||||
- [ ] **Step 1: 新增 endpointId 字段和 RESERVED_KEYS**
|
||||
|
||||
@@ -82,13 +82,13 @@ public static AiRuntimeRequest fromPayload(JSONObject payload) {
|
||||
|
||||
- [ ] **Step 3: 编译验证**
|
||||
|
||||
Run: `cd backend-single && mvn clean compile -pl :backend-single -am -DskipTests`
|
||||
Run: `cd server && mvn clean compile -pl :server -am -DskipTests`
|
||||
Expected: BUILD SUCCESS(endpointId 字段新增不破坏任何编译,因为这是新增字段)
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java
|
||||
git commit -m "feat: AiRuntimeRequest DTO 新增 endpointId 字段
|
||||
|
||||
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
@@ -99,7 +99,7 @@ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
### Task 2: Service 接口层 — 新增 testEndpoint + invokeEndpointStream
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/AiRuntimeService.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/AiRuntimeService.java`
|
||||
|
||||
- [ ] **Step 1: 新增两个接口方法**
|
||||
|
||||
@@ -128,13 +128,13 @@ public interface AiRuntimeService {
|
||||
|
||||
- [ ] **Step 2: 编译验证**
|
||||
|
||||
Run: `cd backend-single && mvn clean compile -pl :backend-single -am -DskipTests`
|
||||
Run: `cd server && mvn clean compile -pl :server -am -DskipTests`
|
||||
Expected: BUILD SUCCESS(接口新增方法,但实现类尚未修改,此时不会编译失败 — 因为 ServiceImpl 编译是单独的任务)
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/AiRuntimeService.java
|
||||
git add server/src/main/java/com/emotion/service/AiRuntimeService.java
|
||||
git commit -m "feat: AiRuntimeService 接口新增 endpoint 测试方法
|
||||
|
||||
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
@@ -145,7 +145,7 @@ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
### Task 3: Service 实现层 — testEndpoint + invokeEndpointStream 实现
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
|
||||
- [ ] **Step 1: 新增 testEndpoint 方法**
|
||||
|
||||
@@ -271,13 +271,13 @@ public void invokeEndpointStream(String endpointId, Map<String, Object> inputs,
|
||||
|
||||
- [ ] **Step 3: 编译验证**
|
||||
|
||||
Run: `cd backend-single && mvn clean compile -pl :backend-single -am -DskipTests`
|
||||
Run: `cd server && mvn clean compile -pl :server -am -DskipTests`
|
||||
Expected: BUILD SUCCESS
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java
|
||||
git commit -m "feat: AiRuntimeServiceImpl 实现 endpoint 直接测试方法
|
||||
|
||||
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
@@ -288,7 +288,7 @@ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
### Task 4: Controller 层 — 新增 /endpoint/test 和 /endpoint/stream
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
|
||||
- [ ] **Step 1: 在 runtimeStream 方法之后新增两个 endpoint 方法**
|
||||
|
||||
@@ -323,13 +323,13 @@ public SseEmitter endpointStream(@RequestBody JSONObject payload) {
|
||||
|
||||
- [ ] **Step 2: 编译并验证完整后端**
|
||||
|
||||
Run: `cd backend-single && mvn clean compile -pl :backend-single -am -DskipTests`
|
||||
Run: `cd server && mvn clean compile -pl :server -am -DskipTests`
|
||||
Expected: BUILD SUCCESS
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
git add server/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
git commit -m "feat: AiRoutingController 新增 /endpoint/test 和 /endpoint/stream 接口
|
||||
|
||||
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
### Task 1: Backend Test Sample Contract
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/ai/AiTestTemplateResponse.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/AiRuntimeService.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/ai/AiTestTemplateResponse.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/AiRuntimeService.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
|
||||
- [x] Add a response DTO with `sceneCode`, `endpointId`, `endpointCode`, `providerType`, `inputs`, and `paramFields`.
|
||||
- [x] Add service methods `buildEndpointTestTemplate(String endpointId)` and `buildSceneTestTemplate(String sceneCode)`.
|
||||
@@ -26,9 +26,9 @@
|
||||
### Task 2: Provider Runtime Compatibility
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/ai/ProviderHttpSupport.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/ai/CozeProviderAdapter.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/ai/DifyProviderAdapter.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/ai/ProviderHttpSupport.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/ai/CozeProviderAdapter.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/ai/DifyProviderAdapter.java`
|
||||
|
||||
- [x] Add `Accept: text/event-stream` for stream requests.
|
||||
- [x] Make Coze workflow body match historical calls: `workflow_id`, `user_id`, `stream`, `parameters`, and optional `bot_id`.
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
### Task 2: User Runtime Request Shape
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
|
||||
- [x] Accept user calls as `sceneCode` plus `inputs` JSON.
|
||||
- [x] Keep user identity server-side by reading `UserContextHolder`.
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
### Task 1: Backend Chat Bridge To Runtime
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/WebSocketServiceImpl.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/websocket/WebSocketMessage.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/WebSocketServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/websocket/WebSocketMessage.java`
|
||||
|
||||
- [x] Route chat generation through `AiRuntimeService` with `sceneCode=chat`.
|
||||
- [x] Push `start`, `delta`, `done`, and `error` events over the existing user WebSocket topic.
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
### Task 1: Backend Stream Text Normalization
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/ai/CozeProviderAdapter.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/ai/DifyProviderAdapter.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/ai/CozeProviderAdapter.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/ai/DifyProviderAdapter.java`
|
||||
|
||||
- [x] Add a private helper that parses JSON string wrappers and returns `output`, `answer`, `content`, `text`, `result`, `data.*`, or `outputs.*`.
|
||||
- [x] Call the helper before returning every extracted delta string.
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
**Commands:**
|
||||
- `cd web-admin && npm run build`
|
||||
- `cd backend-single && mvn test`
|
||||
- `cd server && mvn test`
|
||||
- `git diff --check`
|
||||
|
||||
- [x] Build passes.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> **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:** 为 backend-single 下全部 39 个 Controller 及其关联 Request DTO 补全 OpenAPI 中文注解(@Tag/@Operation/@Parameter/@Schema),使接口文档页面可通过清晰的中文描述理解每个接口的作用和参数含义。
|
||||
**Goal:** 为 server 下全部 39 个 Controller 及其关联 Request DTO 补全 OpenAPI 中文注解(@Tag/@Operation/@Parameter/@Schema),使接口文档页面可通过清晰的中文描述理解每个接口的作用和参数含义。
|
||||
|
||||
**Architecture:** 在不改变现有代码结构和业务逻辑的前提下,为每个 Controller 类添加 `@Tag` 注解、为每个 public 方法添加 `@Operation` 注解、为 `@RequestParam`/`@PathVariable` 参数添加 `@Parameter` 注解、为被 Controller 直接引用的 Request DTO 字段添加 `@Schema` 注解。分 3 批实施,每批完成后编译验证。
|
||||
|
||||
@@ -25,12 +25,12 @@
|
||||
### Task 1.1: AiChatController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiChatController.java`
|
||||
- Modify: `backend-single/src/main/java/com/com/emotion/dto/request/AiChatRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/AiSummaryRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/GuestChatRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ConversationCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ChatStatsRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiChatController.java`
|
||||
- Modify: `server/src/main/java/com/com/emotion/dto/request/AiChatRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/AiSummaryRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/GuestChatRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ConversationCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ChatStatsRequest.java`
|
||||
|
||||
- [ ] **Step 1: 为 AiChatController 添加 @Tag 和 @Operation 注解**
|
||||
|
||||
@@ -162,8 +162,8 @@ public class ChatStatsRequest extends BaseRequest {
|
||||
### Task 1.2: AiRoutingController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java`
|
||||
|
||||
- [ ] **Step 1: 为 AiRoutingController 添加注解**
|
||||
|
||||
@@ -215,10 +215,10 @@ public class AiRuntimeRequest {
|
||||
### Task 1.3: CozeApiCallController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/CozeApiCallController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/coze/CozeApiCallPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/coze/CozeApiCallCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/coze/CozeApiCallUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/CozeApiCallController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/coze/CozeApiCallPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/coze/CozeApiCallCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/coze/CozeApiCallUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: 为 CozeApiCallController 添加 @Tag 注解**
|
||||
|
||||
@@ -339,10 +339,10 @@ public class CozeApiCallUpdateRequest {
|
||||
### Task 1.4: CommunityPostController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/CommunityPostController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/community/CommunityPostCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/community/CommunityPostUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/community/CommunityPostPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/CommunityPostController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/community/CommunityPostCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/community/CommunityPostUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/community/CommunityPostPageRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -387,10 +387,10 @@ CommunityPostPageRequest 各字段加 @Schema(description = "页码")、@Schema(
|
||||
### Task 1.5: CommentController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/CommentController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/comment/CommentCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/comment/CommentUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/comment/CommentPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/CommentController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/comment/CommentCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/comment/CommentUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/comment/CommentPageRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -429,10 +429,10 @@ public class CommentController {
|
||||
### Task 1.6: SocialContentController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/SocialContentController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/social/SocialContentManualImportRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/social/SocialContentLinkImportRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/social/SocialContentApprovalRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/SocialContentController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/social/SocialContentManualImportRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/social/SocialContentLinkImportRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/social/SocialContentApprovalRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -476,9 +476,9 @@ public class SocialContentController {
|
||||
### Task 1.7: SocialInsightController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/SocialInsightController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/social/SocialInsightGenerateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/social/SocialInsightUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/SocialInsightController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/social/SocialInsightGenerateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/social/SocialInsightUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -514,8 +514,8 @@ public class SocialInsightController {
|
||||
- [ ] **Step 1: 编译验证**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd server
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
Expected: BUILD SUCCESS,无编译错误。
|
||||
@@ -523,8 +523,8 @@ Expected: BUILD SUCCESS,无编译错误。
|
||||
- [ ] **Step 2: 提交 Batch 1 改动**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AiChatController.java
|
||||
git add backend-single/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
git add server/src/main/java/com/emotion/controller/AiChatController.java
|
||||
git add server/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
# ... 添加 Batch 1 所有修改的文件
|
||||
git commit -m "feat: Batch 1 — AI + 社区 Controller 中文注解补全"
|
||||
```
|
||||
@@ -536,10 +536,10 @@ git commit -m "feat: Batch 1 — AI + 社区 Controller 中文注解补全"
|
||||
### Task 2.1: EmotionAnalysisController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/EmotionAnalysisController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionAnalysisCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionAnalysisPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionAnalysisUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/EmotionAnalysisController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionAnalysisCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionAnalysisPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionAnalysisUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -578,10 +578,10 @@ public class EmotionAnalysisController {
|
||||
### Task 2.2: EmotionRecordController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/EmotionRecordController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionRecordCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionRecordPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionRecordUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/EmotionRecordController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionRecordCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionRecordPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionRecordUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -625,9 +625,9 @@ public class EmotionRecordController {
|
||||
### Task 2.3: EmotionSummaryController 补充注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/EmotionSummaryController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionSummaryGenerateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EmotionSummaryStatusRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/EmotionSummaryController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionSummaryGenerateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EmotionSummaryStatusRequest.java`
|
||||
|
||||
- [ ] **Step 1: 补充缺失的 @Operation 注解**
|
||||
|
||||
@@ -646,10 +646,10 @@ public class EmotionRecordController {
|
||||
### Task 2.4: DiaryPostController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/DiaryPostController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/DiaryPostCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/DiaryPostPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/DiaryPostUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/DiaryPostController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/DiaryPostCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/DiaryPostPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/DiaryPostUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -706,9 +706,9 @@ public class DiaryPostController {
|
||||
### Task 2.5: DiaryCommentController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/DiaryCommentController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/DiaryCommentCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/DiaryCommentPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/DiaryCommentController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/DiaryCommentCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/DiaryCommentPageRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -759,10 +759,10 @@ public class DiaryCommentController {
|
||||
### Task 2.6: GrowthTopicController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/GrowthTopicController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/growth/GrowthTopicCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/growth/GrowthTopicPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/growth/GrowthTopicUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/GrowthTopicController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/growth/GrowthTopicCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/growth/GrowthTopicPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/growth/GrowthTopicUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -793,10 +793,10 @@ public class GrowthTopicController {
|
||||
### Task 2.7: TopicInteractionController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/TopicInteractionController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/TopicInteractionCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/TopicInteractionPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/TopicInteractionUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/TopicInteractionController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/TopicInteractionCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/TopicInteractionPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/TopicInteractionUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -829,8 +829,8 @@ public class TopicInteractionController {
|
||||
### Task 2.8: ConversationController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/ConversationController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/ConversationPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/ConversationController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/ConversationPageRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -872,11 +872,11 @@ public class ConversationController {
|
||||
### Task 2.9: MessageController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/MessageController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/MessageCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/MessagePageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/MessageSearchRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/MessageRecentRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/MessageController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/MessageCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/MessagePageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/MessageSearchRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/MessageRecentRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -915,10 +915,10 @@ public class MessageController {
|
||||
### Task 2.10: UserProfileController 补充注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/UserProfileController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfilePageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/UserProfileController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfilePageRequest.java`
|
||||
|
||||
- [ ] **Step 1: 补充 @Operation 注解(该 Controller 已有 @Tag 但方法级注解缺失)**
|
||||
|
||||
@@ -951,12 +951,12 @@ public class MessageController {
|
||||
### Task 2.11: AchievementController 补充注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AchievementController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/achievement/AchievementCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/achievement/AchievementPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/achievement/AchievementUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/achievement/AchievementProgressUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/achievement/AchievementUnlockRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AchievementController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/achievement/AchievementCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/achievement/AchievementPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/achievement/AchievementUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/achievement/AchievementProgressUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/achievement/AchievementUnlockRequest.java`
|
||||
|
||||
- [ ] **Step 1: 补充 @Parameter 注解(已有 @Tag 和 @Operation,但缺少 @RequestParam 的 @Parameter)**
|
||||
|
||||
@@ -1042,8 +1042,8 @@ public class MessageController {
|
||||
- [ ] **Step 1: 编译验证**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd server
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
Expected: BUILD SUCCESS
|
||||
@@ -1051,7 +1051,7 @@ Expected: BUILD SUCCESS
|
||||
- [ ] **Step 2: 提交 Batch 2 改动**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/EmotionAnalysisController.java
|
||||
git add server/src/main/java/com/emotion/controller/EmotionAnalysisController.java
|
||||
# ... 添加 Batch 2 所有修改的文件
|
||||
git commit -m "feat: Batch 2 — 情绪 + 日记 + 互动 Controller 中文注解补全"
|
||||
```
|
||||
@@ -1063,10 +1063,10 @@ git commit -m "feat: Batch 2 — 情绪 + 日记 + 互动 Controller 中文注
|
||||
### Task 3.1: LifePathController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/LifePathController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifePathCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifePathPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifePathUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/LifePathController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifePathCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifePathPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifePathUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1113,10 +1113,10 @@ public class LifePathController {
|
||||
### Task 3.2: RewardController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/RewardController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/reward/RewardCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/reward/RewardPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/reward/RewardUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/RewardController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/reward/RewardCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/reward/RewardPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/reward/RewardUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1149,11 +1149,11 @@ public class RewardController {
|
||||
### Task 3.3: UserStatsController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/UserStatsController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/UserStatsCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/UserStatsIncrementRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/UserStatsPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/UserStatsUpdateValueRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/UserStatsController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/UserStatsCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/UserStatsIncrementRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/UserStatsPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/UserStatsUpdateValueRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1194,11 +1194,11 @@ public class UserStatsController {
|
||||
### Task 3.4: EpicScriptController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/EpicScriptController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EpicScriptCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EpicScriptUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EpicScriptPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/EpicScriptInspirationRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/EpicScriptController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EpicScriptCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EpicScriptUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EpicScriptPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/EpicScriptInspirationRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1247,10 +1247,10 @@ public class EpicScriptController {
|
||||
### Task 3.5: DictionaryController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/DictionaryController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/dictionary/DictionaryCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/dictionary/DictionaryPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/dictionary/DictionaryUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/DictionaryController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/dictionary/DictionaryCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/dictionary/DictionaryPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/dictionary/DictionaryUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1266,10 +1266,10 @@ public class DictionaryController {
|
||||
### Task 3.6: GuestUserController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/GuestUserController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/guest/GuestUserCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/guest/GuestUserPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/guest/GuestUserUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/GuestUserController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/guest/GuestUserCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/guest/GuestUserPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/guest/GuestUserUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1285,8 +1285,8 @@ public class GuestUserController {
|
||||
### Task 3.7: TtsController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/TtsController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/TtsController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/tts/TtsTaskCreateRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1302,7 +1302,7 @@ public class TtsController {
|
||||
### Task 3.8: AsrController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AsrController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AsrController.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1318,7 +1318,7 @@ public class AsrController {
|
||||
### Task 3.9: HealthController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/HealthController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/HealthController.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1334,10 +1334,10 @@ public class HealthController {
|
||||
### Task 3.10: LifeEventController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/LifeEventController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifeEventCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifeEventUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/LifeEventPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/LifeEventController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifeEventCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifeEventUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/LifeEventPageRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1353,8 +1353,8 @@ public class LifeEventController {
|
||||
### Task 3.11: ChatWebSocketController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/ChatWebSocketController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/WebSocketRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/ChatWebSocketController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/WebSocketRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1370,8 +1370,8 @@ public class ChatWebSocketController {
|
||||
### Task 3.12: AnalyticsController 注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AnalyticsController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AnalyticsController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsEventBatchRequest.java`
|
||||
|
||||
- [ ] **Step 1: Controller 注解**
|
||||
|
||||
@@ -1387,13 +1387,13 @@ public class AnalyticsController {
|
||||
### Task 3.13: AiConfigController 补充注解
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiConfigController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigPageRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigEnableRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigDefaultRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/aiconfig/AiConfigTestUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiConfigController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigPageRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigEnableRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigDefaultRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/aiconfig/AiConfigTestUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: 补充缺失的 @Operation 注解(已有 @Tag 但方法级注解不全)**
|
||||
|
||||
@@ -1404,8 +1404,8 @@ public class AnalyticsController {
|
||||
- [ ] **Step 1: 编译验证**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd server
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
Expected: BUILD SUCCESS
|
||||
@@ -1413,7 +1413,7 @@ Expected: BUILD SUCCESS
|
||||
- [ ] **Step 2: 提交 Batch 3 改动**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/LifePathController.java
|
||||
git add server/src/main/java/com/emotion/controller/LifePathController.java
|
||||
# ... 添加 Batch 3 所有修改的文件
|
||||
git commit -m "feat: Batch 3 — 其他 Controller 中文注解补全"
|
||||
```
|
||||
@@ -1559,8 +1559,8 @@ private String fieldName;
|
||||
- [ ] **Step 1: 全量编译**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd server
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 启动服务验证 OpenAPI 同步**
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
### Task 1: Backend Analytics Dictionary
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/analytics/AnalyticsDictionary.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsTopEventItem.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsTrendItem.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/analytics/AnalyticsPreferenceItem.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/analytics/AnalyticsDictionary.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsTopEventItem.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsTrendItem.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/analytics/AnalyticsPreferenceItem.java`
|
||||
|
||||
- [x] Add event, event type, page, dimension, value, and API label maps.
|
||||
- [x] Add DTO fields for Chinese labels while keeping original keys.
|
||||
@@ -25,8 +25,8 @@
|
||||
### Task 2: Backend Aggregation Enrichment
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/mapper/AnalyticsEventMapper.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AnalyticsServiceImpl.java`
|
||||
|
||||
- [x] Query `page_path` and `api_path` for top events.
|
||||
- [x] Fill `eventLabel`, `eventTypeLabel`, `pageLabel`, `apiLabel` in top events.
|
||||
@@ -58,7 +58,7 @@
|
||||
### Task 5: Verification
|
||||
|
||||
**Commands:**
|
||||
- `cd backend-single && mvn test`
|
||||
- `cd server && mvn test`
|
||||
- `cd web-admin && npm run build`
|
||||
- `cd mini-program && npm run build:mp-weixin` or available project build command
|
||||
- `git diff --check`
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
### Task 1: 数据库实体 + Mapper 层
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/ApiEndpoint.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/ApiParam.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/ApiEndpointMapper.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/ApiParamMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/ApiEndpoint.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/ApiParam.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/ApiEndpointMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/ApiParamMapper.java`
|
||||
|
||||
- [ ] **Step 1: 创建 ApiEndpoint 实体**
|
||||
|
||||
@@ -153,10 +153,10 @@ public interface ApiParamMapper extends BaseMapper<ApiParam> {
|
||||
- [ ] **Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/ApiEndpoint.java
|
||||
git add backend-single/src/main/java/com/emotion/entity/ApiParam.java
|
||||
git add backend-single/src/main/java/com/emotion/mapper/ApiEndpointMapper.java
|
||||
git add backend-single/src/main/java/com/emotion/mapper/ApiParamMapper.java
|
||||
git add server/src/main/java/com/emotion/entity/ApiEndpoint.java
|
||||
git add server/src/main/java/com/emotion/entity/ApiParam.java
|
||||
git add server/src/main/java/com/emotion/mapper/ApiEndpointMapper.java
|
||||
git add server/src/main/java/com/emotion/mapper/ApiParamMapper.java
|
||||
git commit -m "feat: 添加接口端点实体和Mapper"
|
||||
```
|
||||
|
||||
@@ -165,11 +165,11 @@ git commit -m "feat: 添加接口端点实体和Mapper"
|
||||
### Task 2: DTO 层 — Request/Response
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/ApiEndpointListRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/ApiEndpointItemResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/ApiEndpointDetailResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/ApiParamItemResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/ApiTestProxyRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/ApiEndpointListRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/ApiEndpointItemResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/ApiEndpointDetailResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/ApiParamItemResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/ApiTestProxyRequest.java`
|
||||
|
||||
- [ ] **Step 1: 创建 ApiEndpointListRequest(分页查询入参)**
|
||||
|
||||
@@ -309,11 +309,11 @@ public class ApiTestProxyRequest {
|
||||
- [ ] **Step 6: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/ApiEndpointListRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/ApiEndpointItemResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/ApiEndpointDetailResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/ApiParamItemResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/ApiTestProxyRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/ApiEndpointListRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/response/ApiEndpointItemResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/response/ApiEndpointDetailResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/response/ApiParamItemResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/request/ApiTestProxyRequest.java
|
||||
git commit -m "feat: 添加接口管理DTO"
|
||||
```
|
||||
|
||||
@@ -322,8 +322,8 @@ git commit -m "feat: 添加接口管理DTO"
|
||||
### Task 3: Service 层 — 核心解析与同步逻辑
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/ApiEndpointService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/ApiEndpointServiceImpl.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/ApiEndpointService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/ApiEndpointServiceImpl.java`
|
||||
|
||||
- [ ] **Step 1: 创建 Service 接口**
|
||||
|
||||
@@ -676,8 +676,8 @@ public class ApiEndpointServiceImpl implements ApiEndpointService {
|
||||
- [ ] **Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/ApiEndpointService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/ApiEndpointServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/service/ApiEndpointService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/ApiEndpointServiceImpl.java
|
||||
git commit -m "feat: 添加接口端点Service层"
|
||||
```
|
||||
|
||||
@@ -686,7 +686,7 @@ git commit -m "feat: 添加接口端点Service层"
|
||||
### Task 4: ApplicationRunner — 启动自动同步
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/ApiEndpointSyncRunner.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/ApiEndpointSyncRunner.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SyncRunner**
|
||||
|
||||
@@ -729,7 +729,7 @@ public class ApiEndpointSyncRunner implements ApplicationRunner {
|
||||
- [ ] **Step 2: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/ApiEndpointSyncRunner.java
|
||||
git add server/src/main/java/com/emotion/service/ApiEndpointSyncRunner.java
|
||||
git commit -m "feat: 添加启动自动同步接口数据"
|
||||
```
|
||||
|
||||
@@ -738,7 +738,7 @@ git commit -m "feat: 添加启动自动同步接口数据"
|
||||
### Task 5: Controller 层 — 分页查询 + 详情 + 手动同步
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/ApiEndpointController.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/ApiEndpointController.java`
|
||||
|
||||
- [ ] **Step 1: 创建 Controller**
|
||||
|
||||
@@ -815,7 +815,7 @@ public class ApiEndpointController {
|
||||
- [ ] **Step 2: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/ApiEndpointController.java
|
||||
git add server/src/main/java/com/emotion/controller/ApiEndpointController.java
|
||||
git commit -m "feat: 添加接口管理Controller"
|
||||
```
|
||||
|
||||
@@ -824,8 +824,8 @@ git commit -m "feat: 添加接口管理Controller"
|
||||
### Task 6: Controller 层 — 代理测试接口
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/ApiTestProxyController.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/ApiTestProxyResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/ApiTestProxyController.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/ApiTestProxyResponse.java`
|
||||
|
||||
- [ ] **Step 1: 创建 ApiTestProxyResponse**
|
||||
|
||||
@@ -990,8 +990,8 @@ public class ApiTestProxyController {
|
||||
- [ ] **Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/ApiTestProxyController.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/ApiTestProxyResponse.java
|
||||
git add server/src/main/java/com/emotion/controller/ApiTestProxyController.java
|
||||
git add server/src/main/java/com/emotion/dto/response/ApiTestProxyResponse.java
|
||||
git commit -m "feat: 添加接口代理测试Controller"
|
||||
```
|
||||
|
||||
@@ -1002,8 +1002,8 @@ git commit -m "feat: 添加接口代理测试Controller"
|
||||
- [ ] **Step 1: 编译验证**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd server
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
预期:BUILD SUCCESS
|
||||
|
||||
@@ -15,28 +15,28 @@
|
||||
### 后端改动文件(按批次)
|
||||
|
||||
**Batch 1 (P0):**
|
||||
- `backend-single/src/main/java/com/emotion/controller/AdminAuthController.java` — 已有 @Operation,补全 @Parameter
|
||||
- `backend-single/src/main/java/com/emotion/controller/AuthController.java` — 补全缺少的 @Operation,补全 @Parameter
|
||||
- `backend-single/src/main/java/com/emotion/controller/AdminController.java` — 已有 @Tag/@Operation,补全 @Parameter
|
||||
- `backend-single/src/main/java/com/emotion/controller/TokenController.java` — 已有 @Operation,检查完整度
|
||||
- `backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java` — 新增 @Tag/@Operation
|
||||
- `backend-single/src/main/java/com/emotion/controller/UserController.java` — 新增 @Tag/@Operation
|
||||
- `backend-single/src/main/java/com/emotion/controller/UserProfileController.java` — 新增 @Tag/@Operation
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminLoginRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminCreateRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminUpdateRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminPageRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminChangePasswordRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/AdminResetPasswordRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/RefreshTokenRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/ResetPasswordRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/RegisterRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/LoginRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/UserCreateRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/UserUpdateRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/UserPageRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/UserProfileUpdateRequest.java` — 补全 @Schema
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/controller/AdminAuthController.java` — 已有 @Operation,补全 @Parameter
|
||||
- `server/src/main/java/com/emotion/controller/AuthController.java` — 补全缺少的 @Operation,补全 @Parameter
|
||||
- `server/src/main/java/com/emotion/controller/AdminController.java` — 已有 @Tag/@Operation,补全 @Parameter
|
||||
- `server/src/main/java/com/emotion/controller/TokenController.java` — 已有 @Operation,检查完整度
|
||||
- `server/src/main/java/com/emotion/controller/AdminAnalyticsController.java` — 新增 @Tag/@Operation
|
||||
- `server/src/main/java/com/emotion/controller/UserController.java` — 新增 @Tag/@Operation
|
||||
- `server/src/main/java/com/emotion/controller/UserProfileController.java` — 新增 @Tag/@Operation
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminLoginRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminCreateRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminUpdateRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminPageRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminChangePasswordRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/AdminResetPasswordRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/RefreshTokenRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/ResetPasswordRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/RegisterRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/LoginRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/UserCreateRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/UserUpdateRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/UserPageRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/UserProfileUpdateRequest.java` — 补全 @Schema
|
||||
- `server/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java` — 补全 @Schema
|
||||
|
||||
### 前端改动文件
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
## Task 1: 后端 Batch 1 - AdminAuth + Auth Controller 注解补全
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AdminAuthController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AuthController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AdminAuthController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AuthController.java`
|
||||
|
||||
- [ ] **Step 1: 查看 AdminAuthController 已有注解**
|
||||
|
||||
@@ -85,7 +85,7 @@ AuthController 已有 @Tag。需要补全以下方法的 @Operation:
|
||||
|
||||
- [ ] **Step 3: 为 AuthController 缺少的方法补全注解**
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/controller/AuthController.java`:
|
||||
修改 `server/src/main/java/com/emotion/controller/AuthController.java`:
|
||||
|
||||
为以下方法添加 @Operation(在方法上方的空白行插入):
|
||||
|
||||
@@ -133,7 +133,7 @@ AdminAuthController 的 6 个方法全部有 @Operation,无需修改。
|
||||
- [ ] **Step 5: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AuthController.java
|
||||
git add server/src/main/java/com/emotion/controller/AuthController.java
|
||||
git commit -m "feat: 补全 AuthController 缺失的 @Operation 和 @Parameter 注解"
|
||||
```
|
||||
|
||||
@@ -142,16 +142,16 @@ git commit -m "feat: 补全 AuthController 缺失的 @Operation 和 @Parameter
|
||||
## Task 2: 后端 Batch 1 - Admin + Token Controller 注解补全
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AdminController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/TokenController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/UserController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/UserProfileController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AdminController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/TokenController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AdminAnalyticsController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/UserController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/UserProfileController.java`
|
||||
|
||||
- [ ] **Step 1: 读取 AdminController**
|
||||
|
||||
```bash
|
||||
cat backend-single/src/main/java/com/emotion/controller/AdminController.java
|
||||
cat server/src/main/java/com/emotion/controller/AdminController.java
|
||||
```
|
||||
|
||||
检查每个方法的 @Operation 是否有 @Parameter,为路径参数和查询参数补全 @Parameter 注解。
|
||||
@@ -159,7 +159,7 @@ cat backend-single/src/main/java/com/emotion/controller/AdminController.java
|
||||
- [ ] **Step 2: 读取 TokenController**
|
||||
|
||||
```bash
|
||||
cat backend-single/src/main/java/com/emotion/controller/TokenController.java
|
||||
cat server/src/main/java/com/emotion/controller/TokenController.java
|
||||
```
|
||||
|
||||
已有 3 个 @Operation,检查是否缺少 @Parameter,补全。
|
||||
@@ -194,11 +194,11 @@ public Result<AnalyticsOverviewResponse> overview(@Validated AnalyticsQueryReque
|
||||
- [ ] **Step 6: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AdminController.java
|
||||
git add backend-single/src/main/java/com/emotion/controller/TokenController.java
|
||||
git add backend-single/src/main/java/com/emotion/controller/AdminAnalyticsController.java
|
||||
git add backend-single/src/main/java/com/emotion/controller/UserController.java
|
||||
git add backend-single/src/main/java/com/emotion/controller/UserProfileController.java
|
||||
git add server/src/main/java/com/emotion/controller/AdminController.java
|
||||
git add server/src/main/java/com/emotion/controller/TokenController.java
|
||||
git add server/src/main/java/com/emotion/controller/AdminAnalyticsController.java
|
||||
git add server/src/main/java/com/emotion/controller/UserController.java
|
||||
git add server/src/main/java/com/emotion/controller/UserProfileController.java
|
||||
git commit -m "feat: 为 Admin/Token/AdminAnalytics/User/UserProfile Controller 补全 OpenAPI 注解"
|
||||
```
|
||||
|
||||
@@ -257,21 +257,21 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
- [ ] **Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/LoginRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/RegisterRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/ResetPasswordRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/RefreshTokenRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminLoginRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminCreateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminUpdateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminPageRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminChangePasswordRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/AdminResetPasswordRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/UserCreateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/UserUpdateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/UserPageRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/UserProfileUpdateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/LoginRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/RegisterRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/ResetPasswordRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/RefreshTokenRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminLoginRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminCreateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminUpdateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminPageRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminChangePasswordRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/AdminResetPasswordRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/UserCreateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/UserUpdateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/UserPageRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/UserProfileUpdateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/analytics/AnalyticsQueryRequest.java
|
||||
git commit -m "feat: 为 Batch 1 请求 DTO 补全 @Schema 中文描述注解"
|
||||
```
|
||||
|
||||
@@ -665,7 +665,7 @@ git commit -m "feat: 测试面板增加请求头展示区域"
|
||||
- [ ] **Step 1: 本地构建后端**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn clean install -DskipTests
|
||||
```
|
||||
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
| `web-admin/src/components/JsonViewer.vue` | 创建 | 通用 JSON 格式化高亮 + 复制组件 |
|
||||
| `web-admin/src/views/aiconfig/components/AiCallLogDetailDialog.vue` | 创建 | 调用日志详情弹窗 |
|
||||
| `web-admin/src/views/aiconfig/AiRoutingList.vue` | 修改 | 调用日志 Tab 增加筛选栏、展开行、分页 |
|
||||
| `backend-single/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java` | 创建 | 日志查询请求 DTO |
|
||||
| `backend-single/src/main/java/com/emotion/service/AiCallLogService.java` | 修改 | 新增 `query` 方法签名 |
|
||||
| `backend-single/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java` | 修改 | 实现 `query` 分页查询 |
|
||||
| `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java` | 修改 | 新增 POST /call-logs 接口 |
|
||||
| `server/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java` | 创建 | 日志查询请求 DTO |
|
||||
| `server/src/main/java/com/emotion/service/AiCallLogService.java` | 修改 | 新增 `query` 方法签名 |
|
||||
| `server/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java` | 修改 | 实现 `query` 分页查询 |
|
||||
| `server/src/main/java/com/emotion/controller/AiRoutingController.java` | 修改 | 新增 POST /call-logs 接口 |
|
||||
|
||||
---
|
||||
|
||||
@@ -428,18 +428,18 @@ git commit -m "feat: 新增 AI 调用日志详情弹窗组件"
|
||||
## Task 5: 后端 AiCallLogQueryRequest DTO
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java`
|
||||
|
||||
- [ ] **Step 1: 确认 dto/request/ai 目录存在**
|
||||
|
||||
```bash
|
||||
ls backend-single/src/main/java/com/emotion/dto/request/ai/
|
||||
ls server/src/main/java/com/emotion/dto/request/ai/
|
||||
```
|
||||
|
||||
如果不存在则创建:
|
||||
|
||||
```bash
|
||||
mkdir -p backend-single/src/main/java/com/emotion/dto/request/ai
|
||||
mkdir -p server/src/main/java/com/emotion/dto/request/ai
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 创建 AiCallLogQueryRequest.java**
|
||||
@@ -498,7 +498,7 @@ public class AiCallLogQueryRequest {
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java
|
||||
git commit -m "feat: 新增 AI 调用日志查询请求 DTO"
|
||||
```
|
||||
|
||||
@@ -507,8 +507,8 @@ git commit -m "feat: 新增 AI 调用日志查询请求 DTO"
|
||||
## Task 6: 后端 Service 接口和实现
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/AiCallLogService.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/AiCallLogService.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java`
|
||||
|
||||
- [ ] **Step 1: 在 AiCallLogService 接口中新增 query 方法**
|
||||
|
||||
@@ -562,8 +562,8 @@ public PageResult<AiCallLog> query(AiCallLogQueryRequest request) {
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/AiCallLogService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/service/AiCallLogService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/AiCallLogServiceImpl.java
|
||||
git commit -m "feat: AI 调用日志 Service 增加分页查询方法"
|
||||
```
|
||||
|
||||
@@ -572,7 +572,7 @@ git commit -m "feat: AI 调用日志 Service 增加分页查询方法"
|
||||
## Task 7: 后端 Controller 新增 POST 接口
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AiRoutingController.java`
|
||||
|
||||
- [ ] **Step 1: 在 AiRoutingController 中导入新类型**
|
||||
|
||||
@@ -599,7 +599,7 @@ public Result<PageResult<AiCallLog>> queryCallLogs(@RequestBody @Valid AiCallLog
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
git add server/src/main/java/com/emotion/controller/AiRoutingController.java
|
||||
git commit -m "feat: Controller 新增 AI 调用日志分页查询接口"
|
||||
```
|
||||
|
||||
@@ -949,7 +949,7 @@ git commit -m "feat: 调用日志 Tab 增加筛选栏、展开行、分页和详
|
||||
- [ ] **Step 1: 编译后端**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn clean install -DskipTests
|
||||
```
|
||||
|
||||
@@ -970,7 +970,7 @@ Expected: BUILD SUCCESS
|
||||
- [ ] **Step 1: 启动后端**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
|
||||
| 操作 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| Modify | `backend-single/src/main/java/com/emotion/entity/AiCallLog.java` | 实体新增 `userName` 字段 |
|
||||
| Create | `backend-single/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql` | 数据库迁移脚本 |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java:68-73` | invokeStream 写入 userName |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java:219-225` | invokeEndpointStream 写入 userName |
|
||||
| Modify | `server/src/main/java/com/emotion/entity/AiCallLog.java` | 实体新增 `userName` 字段 |
|
||||
| Create | `server/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql` | 数据库迁移脚本 |
|
||||
| Modify | `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java:68-73` | invokeStream 写入 userName |
|
||||
| Modify | `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java:219-225` | invokeEndpointStream 写入 userName |
|
||||
| Modify | `web-admin/src/types/aiconfig.ts` | AiCallLog 接口新增 userName |
|
||||
| Modify | `web-admin/src/views/aiconfig/AiRoutingList.vue` | 列表新增"调用用户"列 + userDisplay 函数 |
|
||||
| Modify | `web-admin/src/views/aiconfig/components/AiCallLogDetailDialog.vue` | 详情弹窗"用户 ID"改为"调用用户" |
|
||||
@@ -29,9 +29,9 @@
|
||||
### Task 1: 后端实体 + 数据库迁移
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/entity/AiCallLog.java:29-31`
|
||||
- Create: `backend-single/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql`
|
||||
- Test: `backend-single/` 目录下执行编译验证
|
||||
- Modify: `server/src/main/java/com/emotion/entity/AiCallLog.java:29-31`
|
||||
- Create: `server/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql`
|
||||
- Test: `server/` 目录下执行编译验证
|
||||
|
||||
- [ ] **Step 1: 在 AiCallLog 实体中新增 userName 字段**
|
||||
|
||||
@@ -46,7 +46,7 @@ private String userName;
|
||||
|
||||
- [ ] **Step 2: 创建数据库迁移脚本**
|
||||
|
||||
创建 `backend-single/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql`:
|
||||
创建 `server/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql`:
|
||||
|
||||
```sql
|
||||
-- 调用日志表新增 user_name 字段
|
||||
@@ -56,7 +56,7 @@ ALTER TABLE t_ai_call_log ADD COLUMN user_name VARCHAR(100) DEFAULT NULL COMMENT
|
||||
- [ ] **Step 3: 编译验证后端代码**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
@@ -65,8 +65,8 @@ mvn clean compile -DskipTests
|
||||
- [ ] **Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/AiCallLog.java
|
||||
git add backend-single/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql
|
||||
git add server/src/main/java/com/emotion/entity/AiCallLog.java
|
||||
git add server/src/main/resources/db/migration/V20260525__add_user_name_to_ai_call_log.sql
|
||||
git commit -m "feat: 调用日志实体新增 userName 字段及数据库迁移脚本"
|
||||
```
|
||||
|
||||
@@ -75,8 +75,8 @@ git commit -m "feat: 调用日志实体新增 userName 字段及数据库迁移
|
||||
### Task 2: 后端日志保存逻辑写入 userName
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
- Test: `server/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: 在 invokeStream 方法中写入 userName**
|
||||
|
||||
@@ -123,7 +123,7 @@ callLog.setUserName(request.getUserName());
|
||||
|
||||
- [ ] **Step 3: 更新单元测试,验证 userName 被正确写入**
|
||||
|
||||
修改 `backend-single/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java`,在 `invokeStreamRecoversWhenOutputExists` 测试中:
|
||||
修改 `server/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java`,在 `invokeStreamRecoversWhenOutputExists` 测试中:
|
||||
|
||||
在已有的 `request.setRequestId("client-request-1");` 之后添加 `request.setUserName("测试用户");`,然后在断言部分新增 userName 的验证:
|
||||
|
||||
@@ -138,7 +138,7 @@ assertEquals("测试用户", savedLog.getUserName());
|
||||
- [ ] **Step 4: 运行测试验证**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn test -Dtest=AiRuntimeServiceImplTest
|
||||
```
|
||||
|
||||
@@ -147,13 +147,13 @@ mvn test -Dtest=AiRuntimeServiceImplTest
|
||||
- [ ] **Step 5: 编译验证 + 提交**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java
|
||||
git add backend-single/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java
|
||||
git add server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java
|
||||
git add server/src/test/java/com/emotion/service/AiRuntimeServiceImplTest.java
|
||||
git commit -m "feat: 日志保存时写入 userName 字段"
|
||||
```
|
||||
|
||||
|
||||
@@ -16,28 +16,28 @@
|
||||
|
||||
| Action | File | Responsibility |
|
||||
| --- | --- | --- |
|
||||
| Create | `backend-single/src/main/java/com/emotion/config/WechatMiniProgramProperties.java` | Binds WeChat mini program appid, secret, and API base URL from application config. |
|
||||
| Create | `backend-single/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql` | Prevents duplicate non-null WeChat third-party identities. |
|
||||
| Modify | `backend-single/src/main/resources/application.yml` | Adds default WeChat config keys and public login endpoint allowlist. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/config/WebMvcConfig.java` | Excludes `/auth/wechat/login` from JWT interception. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java` | Excludes `/api/auth/wechat/login` from the interceptor's internal public endpoint list. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/dto/request/WechatLoginRequest.java` | Request body for WeChat openid login. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java` | Request body for WeChat phone binding. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java` | Internal DTO for WeChat `code2Session` response. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java` | Internal DTO for WeChat access token response. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java` | Internal DTO for WeChat phone number response. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/service/WechatMiniProgramService.java` | Interface for WeChat API calls. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | RestTemplate-backed WeChat client with Redis token caching. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/service/UserIdentityMergeService.java` | Defines temporary WeChat user to phone user data transfer. |
|
||||
| Create | `backend-single/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java` | Transfers user-owned rows and avoids singleton row conflicts. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java` | Adds non-sensitive `wechatBound` flag for frontend display logic. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/UserService.java` | Adds third-party identity lookup helper. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/impl/UserServiceImpl.java` | Implements third-party identity lookup. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/AuthService.java` | Adds WeChat login and phone binding operations. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/service/impl/AuthServiceImpl.java` | Implements openid login, phone identity merge/bind, and token issuing reuse. |
|
||||
| Modify | `backend-single/src/main/java/com/emotion/controller/AuthController.java` | Adds `/auth/wechat/login` and `/auth/wechat/phone`. |
|
||||
| Test | `backend-single/src/test/java/com/emotion/controller/AuthControllerTest.java` | Verifies controller contract. |
|
||||
| Test | `backend-single/src/test/java/com/emotion/service/AuthServiceWechatTest.java` | Verifies identity matching and binding behavior. |
|
||||
| Create | `server/src/main/java/com/emotion/config/WechatMiniProgramProperties.java` | Binds WeChat mini program appid, secret, and API base URL from application config. |
|
||||
| Create | `server/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql` | Prevents duplicate non-null WeChat third-party identities. |
|
||||
| Modify | `server/src/main/resources/application.yml` | Adds default WeChat config keys and public login endpoint allowlist. |
|
||||
| Modify | `server/src/main/java/com/emotion/config/WebMvcConfig.java` | Excludes `/auth/wechat/login` from JWT interception. |
|
||||
| Modify | `server/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java` | Excludes `/api/auth/wechat/login` from the interceptor's internal public endpoint list. |
|
||||
| Create | `server/src/main/java/com/emotion/dto/request/WechatLoginRequest.java` | Request body for WeChat openid login. |
|
||||
| Create | `server/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java` | Request body for WeChat phone binding. |
|
||||
| Create | `server/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java` | Internal DTO for WeChat `code2Session` response. |
|
||||
| Create | `server/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java` | Internal DTO for WeChat access token response. |
|
||||
| Create | `server/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java` | Internal DTO for WeChat phone number response. |
|
||||
| Create | `server/src/main/java/com/emotion/service/WechatMiniProgramService.java` | Interface for WeChat API calls. |
|
||||
| Create | `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | RestTemplate-backed WeChat client with Redis token caching. |
|
||||
| Create | `server/src/main/java/com/emotion/service/UserIdentityMergeService.java` | Defines temporary WeChat user to phone user data transfer. |
|
||||
| Create | `server/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java` | Transfers user-owned rows and avoids singleton row conflicts. |
|
||||
| Modify | `server/src/main/java/com/emotion/dto/response/UserInfoResponse.java` | Adds non-sensitive `wechatBound` flag for frontend display logic. |
|
||||
| Modify | `server/src/main/java/com/emotion/service/UserService.java` | Adds third-party identity lookup helper. |
|
||||
| Modify | `server/src/main/java/com/emotion/service/impl/UserServiceImpl.java` | Implements third-party identity lookup. |
|
||||
| Modify | `server/src/main/java/com/emotion/service/AuthService.java` | Adds WeChat login and phone binding operations. |
|
||||
| Modify | `server/src/main/java/com/emotion/service/impl/AuthServiceImpl.java` | Implements openid login, phone identity merge/bind, and token issuing reuse. |
|
||||
| Modify | `server/src/main/java/com/emotion/controller/AuthController.java` | Adds `/auth/wechat/login` and `/auth/wechat/phone`. |
|
||||
| Test | `server/src/test/java/com/emotion/controller/AuthControllerTest.java` | Verifies controller contract. |
|
||||
| Test | `server/src/test/java/com/emotion/service/AuthServiceWechatTest.java` | Verifies identity matching and binding behavior. |
|
||||
| Modify | `mini-program/src/services/auth.js` | Adds `wechatLogin` and `bindWechatPhone`. |
|
||||
| Modify | `mini-program/src/stores/app.js` | Adds store methods and tracks returned auth user info. |
|
||||
| Modify | `mini-program/src/pages/login/index.vue` | Adds WeChat primary login while keeping phone/SMS form. |
|
||||
@@ -48,20 +48,20 @@
|
||||
### Task 1: Backend WeChat Configuration And DTOs
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/config/WechatMiniProgramProperties.java`
|
||||
- Create: `backend-single/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/WechatLoginRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java`
|
||||
- Modify: `backend-single/src/main/resources/application.yml`
|
||||
- Create: `server/src/main/java/com/emotion/config/WechatMiniProgramProperties.java`
|
||||
- Create: `server/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/WechatLoginRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/UserInfoResponse.java`
|
||||
- Modify: `server/src/main/resources/application.yml`
|
||||
- Test: backend compile
|
||||
|
||||
- [ ] **Step 1: Create WeChat configuration properties**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/config/WechatMiniProgramProperties.java`:
|
||||
Create `server/src/main/java/com/emotion/config/WechatMiniProgramProperties.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.config;
|
||||
@@ -82,7 +82,7 @@ public class WechatMiniProgramProperties {
|
||||
|
||||
- [ ] **Step 2: Create public request DTOs**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/dto/request/WechatLoginRequest.java`:
|
||||
Create `server/src/main/java/com/emotion/dto/request/WechatLoginRequest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.dto.request;
|
||||
@@ -102,7 +102,7 @@ public class WechatLoginRequest {
|
||||
}
|
||||
```
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java`:
|
||||
Create `server/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.dto.request;
|
||||
@@ -120,7 +120,7 @@ public class WechatPhoneBindRequest {
|
||||
|
||||
- [ ] **Step 3: Create internal WeChat API response DTOs**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java`:
|
||||
Create `server/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.dto.wechat;
|
||||
@@ -147,7 +147,7 @@ public class WechatCodeSessionResponse {
|
||||
}
|
||||
```
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java`:
|
||||
Create `server/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.dto.wechat;
|
||||
@@ -173,7 +173,7 @@ public class WechatAccessTokenResponse {
|
||||
}
|
||||
```
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java`:
|
||||
Create `server/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.dto.wechat;
|
||||
@@ -213,7 +213,7 @@ public class WechatPhoneNumberResponse {
|
||||
|
||||
- [ ] **Step 4: Add WeChat config keys**
|
||||
|
||||
In `backend-single/src/main/resources/application.yml`, under `emotion:`, add:
|
||||
In `server/src/main/resources/application.yml`, under `emotion:`, add:
|
||||
|
||||
```yaml
|
||||
wechat:
|
||||
@@ -239,7 +239,7 @@ HAVING COUNT(*) > 1;
|
||||
|
||||
Expected: no rows. If rows exist, resolve duplicates before adding the index.
|
||||
|
||||
Create `backend-single/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql`:
|
||||
Create `server/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql`:
|
||||
|
||||
```sql
|
||||
ALTER TABLE t_user
|
||||
@@ -250,7 +250,7 @@ MySQL permits multiple `NULL` values in a unique index, so users without WeChat
|
||||
|
||||
- [ ] **Step 6: Add non-sensitive WeChat binding flag**
|
||||
|
||||
In `backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java`, add:
|
||||
In `server/src/main/java/com/emotion/dto/response/UserInfoResponse.java`, add:
|
||||
|
||||
```java
|
||||
/**
|
||||
@@ -264,7 +264,7 @@ private Boolean wechatBound;
|
||||
Run:
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -273,15 +273,15 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 8: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/config/WechatMiniProgramProperties.java
|
||||
git add backend-single/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/WechatLoginRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java
|
||||
git add backend-single/src/main/resources/application.yml
|
||||
git add server/src/main/java/com/emotion/config/WechatMiniProgramProperties.java
|
||||
git add server/src/main/resources/db/migration/V20260531__add_unique_wechat_identity.sql
|
||||
git add server/src/main/java/com/emotion/dto/request/WechatLoginRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/WechatPhoneBindRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/wechat/WechatAccessTokenResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/wechat/WechatPhoneNumberResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/response/UserInfoResponse.java
|
||||
git add server/src/main/resources/application.yml
|
||||
git commit -m "feat: add wechat mini program auth DTOs and config"
|
||||
```
|
||||
|
||||
@@ -290,13 +290,13 @@ git commit -m "feat: add wechat mini program auth DTOs and config"
|
||||
### Task 2: Backend WeChat API Client
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/WechatMiniProgramService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/WechatMiniProgramService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`
|
||||
- Test: `server/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: Create service interface**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/service/WechatMiniProgramService.java`:
|
||||
Create `server/src/main/java/com/emotion/service/WechatMiniProgramService.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service;
|
||||
@@ -313,7 +313,7 @@ public interface WechatMiniProgramService {
|
||||
|
||||
- [ ] **Step 2: Create RestTemplate implementation**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`:
|
||||
Create `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service.impl;
|
||||
@@ -434,7 +434,7 @@ public class WechatMiniProgramServiceImpl implements WechatMiniProgramService {
|
||||
|
||||
- [ ] **Step 3: Create focused unit tests for error behavior**
|
||||
|
||||
Create `backend-single/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java`:
|
||||
Create `server/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service;
|
||||
@@ -470,7 +470,7 @@ class WechatMiniProgramServiceImplTest {
|
||||
- [ ] **Step 4: Run test**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -Dtest=WechatMiniProgramServiceImplTest test
|
||||
```
|
||||
|
||||
@@ -479,9 +479,9 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/WechatMiniProgramService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java
|
||||
git add backend-single/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java
|
||||
git add server/src/main/java/com/emotion/service/WechatMiniProgramService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java
|
||||
git add server/src/test/java/com/emotion/service/WechatMiniProgramServiceImplTest.java
|
||||
git commit -m "feat: add wechat mini program API client"
|
||||
```
|
||||
|
||||
@@ -490,13 +490,13 @@ git commit -m "feat: add wechat mini program API client"
|
||||
### Task 3: Backend User Identity Merge Service
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/UserIdentityMergeService.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/UserIdentityMergeService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java`
|
||||
- Test: `server/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: Create merge service interface**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/service/UserIdentityMergeService.java`:
|
||||
Create `server/src/main/java/com/emotion/service/UserIdentityMergeService.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service;
|
||||
@@ -508,7 +508,7 @@ public interface UserIdentityMergeService {
|
||||
|
||||
- [ ] **Step 2: Create JdbcTemplate implementation**
|
||||
|
||||
Create `backend-single/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java`:
|
||||
Create `server/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service.impl;
|
||||
@@ -592,7 +592,7 @@ public class UserIdentityMergeServiceImpl implements UserIdentityMergeService {
|
||||
|
||||
- [ ] **Step 3: Add merge service test**
|
||||
|
||||
Create `backend-single/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java`:
|
||||
Create `server/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service;
|
||||
@@ -626,7 +626,7 @@ class UserIdentityMergeServiceImplTest {
|
||||
- [ ] **Step 4: Run merge service test**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -Dtest=UserIdentityMergeServiceImplTest test
|
||||
```
|
||||
|
||||
@@ -635,9 +635,9 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/UserIdentityMergeService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java
|
||||
git add backend-single/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java
|
||||
git add server/src/main/java/com/emotion/service/UserIdentityMergeService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/UserIdentityMergeServiceImpl.java
|
||||
git add server/src/test/java/com/emotion/service/UserIdentityMergeServiceImplTest.java
|
||||
git commit -m "feat: add wechat user identity merge service"
|
||||
```
|
||||
|
||||
@@ -646,22 +646,22 @@ git commit -m "feat: add wechat user identity merge service"
|
||||
### Task 4: Backend User Lookup And Auth Service Methods
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/UserService.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/UserServiceImpl.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/AuthService.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/AuthServiceImpl.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/service/AuthServiceWechatTest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/UserService.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/UserServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/AuthService.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/AuthServiceImpl.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/UserInfoResponse.java`
|
||||
- Test: `server/src/test/java/com/emotion/service/AuthServiceWechatTest.java`
|
||||
|
||||
- [ ] **Step 1: Add third-party lookup to UserService**
|
||||
|
||||
In `backend-single/src/main/java/com/emotion/service/UserService.java`, add:
|
||||
In `server/src/main/java/com/emotion/service/UserService.java`, add:
|
||||
|
||||
```java
|
||||
User getByThirdParty(String thirdPartyType, String thirdPartyId);
|
||||
```
|
||||
|
||||
In `backend-single/src/main/java/com/emotion/service/impl/UserServiceImpl.java`, add:
|
||||
In `server/src/main/java/com/emotion/service/impl/UserServiceImpl.java`, add:
|
||||
|
||||
```java
|
||||
@Override
|
||||
@@ -679,7 +679,7 @@ public User getByThirdParty(String thirdPartyType, String thirdPartyId) {
|
||||
|
||||
- [ ] **Step 2: Add AuthService methods**
|
||||
|
||||
In `backend-single/src/main/java/com/emotion/service/AuthService.java`, import the two request DTOs and add:
|
||||
In `server/src/main/java/com/emotion/service/AuthService.java`, import the two request DTOs and add:
|
||||
|
||||
```java
|
||||
AuthResponse wechatLogin(WechatLoginRequest request);
|
||||
@@ -858,7 +858,7 @@ public AuthResponse bindWechatPhone(String currentUserId, WechatPhoneBindRequest
|
||||
- [ ] **Step 8: Compile backend**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -866,7 +866,7 @@ Expected: command exits with status `0`.
|
||||
|
||||
- [ ] **Step 9: Add service tests for identity rules**
|
||||
|
||||
Create `backend-single/src/test/java/com/emotion/service/AuthServiceWechatTest.java`:
|
||||
Create `server/src/test/java/com/emotion/service/AuthServiceWechatTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service;
|
||||
@@ -1002,7 +1002,7 @@ class AuthServiceWechatTest {
|
||||
- [ ] **Step 10: Run auth tests**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -Dtest=AuthControllerTest,AuthServiceWechatTest,UserIdentityMergeServiceImplTest test
|
||||
```
|
||||
|
||||
@@ -1011,12 +1011,12 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 11: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/UserService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/UserServiceImpl.java
|
||||
git add backend-single/src/main/java/com/emotion/service/AuthService.java
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/AuthServiceImpl.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/UserInfoResponse.java
|
||||
git add backend-single/src/test/java/com/emotion/service/AuthServiceWechatTest.java
|
||||
git add server/src/main/java/com/emotion/service/UserService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/UserServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/service/AuthService.java
|
||||
git add server/src/main/java/com/emotion/service/impl/AuthServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/dto/response/UserInfoResponse.java
|
||||
git add server/src/test/java/com/emotion/service/AuthServiceWechatTest.java
|
||||
git commit -m "feat: add wechat auth identity binding logic"
|
||||
```
|
||||
|
||||
@@ -1025,10 +1025,10 @@ git commit -m "feat: add wechat auth identity binding logic"
|
||||
### Task 5: Backend Auth Controller And Security Allowlist
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AuthController.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/config/WebMvcConfig.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java`
|
||||
- Test: `backend-single/src/test/java/com/emotion/controller/AuthControllerTest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AuthController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/config/WebMvcConfig.java`
|
||||
- Modify: `server/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java`
|
||||
- Test: `server/src/test/java/com/emotion/controller/AuthControllerTest.java`
|
||||
|
||||
- [ ] **Step 1: Add controller endpoints**
|
||||
|
||||
@@ -1126,7 +1126,7 @@ public void testWechatPhoneBind() throws Exception {
|
||||
- [ ] **Step 5: Run controller tests**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -Dtest=AuthControllerTest test
|
||||
```
|
||||
|
||||
@@ -1135,10 +1135,10 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AuthController.java
|
||||
git add backend-single/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git add backend-single/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java
|
||||
git add backend-single/src/test/java/com/emotion/controller/AuthControllerTest.java
|
||||
git add server/src/main/java/com/emotion/controller/AuthController.java
|
||||
git add server/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git add server/src/main/java/com/emotion/interceptor/JwtAuthInterceptor.java
|
||||
git add server/src/test/java/com/emotion/controller/AuthControllerTest.java
|
||||
git commit -m "feat: expose wechat auth endpoints"
|
||||
```
|
||||
|
||||
@@ -1596,7 +1596,7 @@ git commit -m "feat: add wechat phone binding entry"
|
||||
- [ ] **Step 1: Run backend auth tests**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -Dtest=AuthControllerTest,AuthServiceWechatTest,WechatMiniProgramServiceImplTest,UserIdentityMergeServiceImplTest test
|
||||
```
|
||||
|
||||
@@ -1605,7 +1605,7 @@ Expected: command exits with status `0`.
|
||||
- [ ] **Step 2: Compile backend**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn -q -DskipTests compile
|
||||
```
|
||||
|
||||
@@ -1633,7 +1633,7 @@ Open `mini-program/unpackage/dist/build/mp-weixin` in WeChat DevTools and verify
|
||||
|
||||
- [ ] **Step 5: Add README note if config is not documented elsewhere**
|
||||
|
||||
If no deployment doc already lists WeChat env vars, add this section to `mini-program/README.md` or `backend-single/部署说明.md`:
|
||||
If no deployment doc already lists WeChat env vars, add this section to `mini-program/README.md` or `server/部署说明.md`:
|
||||
|
||||
```markdown
|
||||
### WeChat Mini Program Login
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
| 文件 | 改动 | 职责 |
|
||||
|------|------|------|
|
||||
| `sql/emotion_museum_ddl.sql` | 追加 | 数据库迁移:新增5列 |
|
||||
| `backend-single/.../entity/UserProfile.java` | 修改 | ORM 实体新增字段 |
|
||||
| `backend-single/.../request/UserProfileCreateRequest.java` | 修改 | 创建请求 DTO 新增字段 |
|
||||
| `backend-single/.../request/UserProfileUpdateRequest.java` | 修改 | 更新请求 DTO 新增字段 |
|
||||
| `backend-single/.../response/UserProfileResponse.java` | 修改 | 响应 DTO 新增字段 |
|
||||
| `server/.../entity/UserProfile.java` | 修改 | ORM 实体新增字段 |
|
||||
| `server/.../request/UserProfileCreateRequest.java` | 修改 | 创建请求 DTO 新增字段 |
|
||||
| `server/.../request/UserProfileUpdateRequest.java` | 修改 | 更新请求 DTO 新增字段 |
|
||||
| `server/.../response/UserProfileResponse.java` | 修改 | 响应 DTO 新增字段 |
|
||||
| `mini-program/src/services/userProfile.js` | 修改 | 前后端数据格式双向转换 |
|
||||
| `mini-program/src/stores/app.js` | 修改 | 全局状态 registrationData 扩展 |
|
||||
| `mini-program/src/pages/main/RecordView.vue` | 修改 | 去除写死默认值和 sampleEvents |
|
||||
@@ -57,7 +57,7 @@ git commit -m "db: add city, industry, company, personality_tags, birthday to t_
|
||||
### Task 2: 后端实体扩展 — UserProfile.java
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
- Modify: `server/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
|
||||
- [ ] **Step 1: 在 idealLife 字段后新增5个字段**
|
||||
|
||||
@@ -100,7 +100,7 @@ git commit -m "db: add city, industry, company, personality_tags, birthday to t_
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/UserProfile.java
|
||||
git add server/src/main/java/com/emotion/entity/UserProfile.java
|
||||
git commit -m "feat: extend UserProfile entity with city/industry/company/personalityTags/birthday"
|
||||
```
|
||||
|
||||
@@ -109,7 +109,7 @@ git commit -m "feat: extend UserProfile entity with city/industry/company/person
|
||||
### Task 3: 后端创建请求 DTO 扩展 — UserProfileCreateRequest.java
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
|
||||
- [ ] **Step 1: 在 idealLife 字段后新增5个字段**
|
||||
|
||||
@@ -145,7 +145,7 @@ git commit -m "feat: extend UserProfile entity with city/industry/company/person
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java
|
||||
git commit -m "feat: extend UserProfileCreateRequest with city/industry/company/personalityTags/birthday"
|
||||
```
|
||||
|
||||
@@ -154,7 +154,7 @@ git commit -m "feat: extend UserProfileCreateRequest with city/industry/company/
|
||||
### Task 4: 后端更新请求 DTO 扩展 — UserProfileUpdateRequest.java
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
|
||||
- [ ] **Step 1: 在 idealLife 字段后新增5个字段**
|
||||
|
||||
@@ -190,7 +190,7 @@ git commit -m "feat: extend UserProfileCreateRequest with city/industry/company/
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java
|
||||
git commit -m "feat: extend UserProfileUpdateRequest with city/industry/company/personalityTags/birthday"
|
||||
```
|
||||
|
||||
@@ -199,7 +199,7 @@ git commit -m "feat: extend UserProfileUpdateRequest with city/industry/company/
|
||||
### Task 5: 后端响应 DTO 扩展 — UserProfileResponse.java
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
|
||||
- [ ] **Step 1: 在 idealLife 字段后新增5个字段**
|
||||
|
||||
@@ -236,7 +236,7 @@ git commit -m "feat: extend UserProfileUpdateRequest with city/industry/company/
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java
|
||||
git commit -m "feat: extend UserProfileResponse with city/industry/company/personalityTags/birthday"
|
||||
```
|
||||
|
||||
@@ -631,7 +631,7 @@ git commit -m "fix: remove hardcoded defaults from profile edit page"
|
||||
- [ ] **Step 1: 后端编译验证**
|
||||
|
||||
```bash
|
||||
cd backend-single && mvn compile -q
|
||||
cd server && mvn compile -q
|
||||
```
|
||||
|
||||
预期:编译成功,无错误。
|
||||
|
||||
@@ -20,13 +20,13 @@ purpose: 微信小程序登录修复 spec 的实施计划(TDD + 频繁 commit
|
||||
|
||||
| 状态 | 文件 | 责任 | 行数 |
|
||||
|---|---|---|---|
|
||||
| 重写 | `backend-single/src/main/java/com/emotion/config/RestTemplateConfig.java` | 统一 RestTemplate Bean(User-Agent + 超时 + 拦截器 + 错误处理) | 13 → 40 |
|
||||
| 新增 | `backend-single/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java` | 请求/响应日志(INFO)+ 脱敏 body(DEBUG) | 60 |
|
||||
| 新增 | `backend-single/src/main/java/com/emotion/config/WechatResponseErrorHandler.java` | 4xx/5xx 不抛异常 | 30 |
|
||||
| 新增 | `backend-single/src/main/java/com/emotion/exception/WechatApiException.java` | 业务异常类(HTTP 风格 code + rawBody) | 30 |
|
||||
| 重写 | `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | `code2Session` 五步防御 | 49 → 90 |
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/exception/GlobalExceptionHandler.java` | 新增 `handleWechatApiException` + 脱敏日志 | +25 |
|
||||
| 修改 | `backend-single/src/main/resources/application.yml` | 移除 `app-id` / `app-secret` 硬编码默认值 | 2 行 |
|
||||
| 重写 | `server/src/main/java/com/emotion/config/RestTemplateConfig.java` | 统一 RestTemplate Bean(User-Agent + 超时 + 拦截器 + 错误处理) | 13 → 40 |
|
||||
| 新增 | `server/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java` | 请求/响应日志(INFO)+ 脱敏 body(DEBUG) | 60 |
|
||||
| 新增 | `server/src/main/java/com/emotion/config/WechatResponseErrorHandler.java` | 4xx/5xx 不抛异常 | 30 |
|
||||
| 新增 | `server/src/main/java/com/emotion/exception/WechatApiException.java` | 业务异常类(HTTP 风格 code + rawBody) | 30 |
|
||||
| 重写 | `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | `code2Session` 五步防御 | 49 → 90 |
|
||||
| 修改 | `server/src/main/java/com/emotion/exception/GlobalExceptionHandler.java` | 新增 `handleWechatApiException` + 脱敏日志 | +25 |
|
||||
| 修改 | `server/src/main/resources/application.yml` | 移除 `app-id` / `app-secret` 硬编码默认值 | 2 行 |
|
||||
|
||||
**总计**:2 重写 + 3 新增 + 2 修改,约 280 行 Java + 2 行 YAML
|
||||
|
||||
@@ -38,9 +38,9 @@ purpose: 微信小程序登录修复 spec 的实施计划(TDD + 频繁 commit
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git status # 确认在 master 分支
|
||||
git log --oneline -1 # 确认最新 commit 是 82c308b
|
||||
ls backend-single/src/main/java/com/emotion/exception/ # 确认 GlobalExceptionHandler.java 存在
|
||||
ls backend-single/src/main/java/com/emotion/config/ # 确认 RestTemplateConfig.java 存在
|
||||
ls backend-single/src/main/java/com/emotion/service/impl/ # 确认 WechatMiniProgramServiceImpl.java 存在
|
||||
ls server/src/main/java/com/emotion/exception/ # 确认 GlobalExceptionHandler.java 存在
|
||||
ls server/src/main/java/com/emotion/config/ # 确认 RestTemplateConfig.java 存在
|
||||
ls server/src/main/java/com/emotion/service/impl/ # 确认 WechatMiniProgramServiceImpl.java 存在
|
||||
```
|
||||
|
||||
期望:全部存在,工作树只有 spec 文件修改(无业务代码污染)
|
||||
@@ -50,7 +50,7 @@ ls backend-single/src/main/java/com/emotion/service/impl/ # 确认 WechatMiniPr
|
||||
## Task 1: 创建 WechatApiException 异常类
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/exception/WechatApiException.java`
|
||||
- Create: `server/src/main/java/com/emotion/exception/WechatApiException.java`
|
||||
|
||||
- [ ] **Step 1.1: 写入 WechatApiException.java**
|
||||
|
||||
@@ -95,7 +95,7 @@ public class WechatApiException extends RuntimeException {
|
||||
- [ ] **Step 1.2: mvn 编译验证**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
@@ -105,7 +105,7 @@ mvn clean compile -DskipTests
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/exception/WechatApiException.java
|
||||
git add server/src/main/java/com/emotion/exception/WechatApiException.java
|
||||
git commit -m "feat(wechat): 新增 WechatApiException 业务异常类
|
||||
|
||||
- 继承 RuntimeException
|
||||
@@ -119,12 +119,12 @@ git commit -m "feat(wechat): 新增 WechatApiException 业务异常类
|
||||
## Task 2: 创建 WechatApiLoggingInterceptor(含脱敏单元测试)
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java`
|
||||
- Create: `backend-single/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java`
|
||||
- Create: `server/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java`
|
||||
- Create: `server/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java`
|
||||
|
||||
- [ ] **Step 2.1: 写失败测试(验证脱敏逻辑)**
|
||||
|
||||
创建 `backend-single/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java`:
|
||||
创建 `server/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.interceptor;
|
||||
@@ -197,7 +197,7 @@ class WechatApiLoggingInterceptorTest {
|
||||
- [ ] **Step 2.2: 运行测试验证失败**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn test -Dtest=WechatApiLoggingInterceptorTest
|
||||
```
|
||||
|
||||
@@ -205,7 +205,7 @@ mvn test -Dtest=WechatApiLoggingInterceptorTest
|
||||
|
||||
- [ ] **Step 2.3: 写最小实现让测试通过**
|
||||
|
||||
创建 `backend-single/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java`:
|
||||
创建 `server/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.interceptor;
|
||||
@@ -282,7 +282,7 @@ public class WechatApiLoggingInterceptor implements ClientHttpRequestInterceptor
|
||||
- [ ] **Step 2.4: 运行测试验证通过**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn test -Dtest=WechatApiLoggingInterceptorTest
|
||||
```
|
||||
|
||||
@@ -292,8 +292,8 @@ mvn test -Dtest=WechatApiLoggingInterceptorTest
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java
|
||||
git add backend-single/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java
|
||||
git add server/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java
|
||||
git add server/src/test/java/com/emotion/interceptor/WechatApiLoggingInterceptorTest.java
|
||||
git commit -m "feat(wechat): 新增 WechatApiLoggingInterceptor 拦截器(含脱敏单元测试)
|
||||
|
||||
- ClientHttpRequestInterceptor 实现
|
||||
@@ -309,7 +309,7 @@ git commit -m "feat(wechat): 新增 WechatApiLoggingInterceptor 拦截器(含
|
||||
## Task 3: 创建 WechatResponseErrorHandler
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/config/WechatResponseErrorHandler.java`
|
||||
- Create: `server/src/main/java/com/emotion/config/WechatResponseErrorHandler.java`
|
||||
|
||||
- [ ] **Step 3.1: 写入 WechatResponseErrorHandler.java**
|
||||
|
||||
@@ -354,7 +354,7 @@ public class WechatResponseErrorHandler extends DefaultResponseErrorHandler {
|
||||
- [ ] **Step 3.2: mvn 编译验证**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
@@ -364,7 +364,7 @@ mvn clean compile -DskipTests
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/config/WechatResponseErrorHandler.java
|
||||
git add server/src/main/java/com/emotion/config/WechatResponseErrorHandler.java
|
||||
git commit -m "feat(wechat): 新增 WechatResponseErrorHandler
|
||||
|
||||
- 继承 DefaultResponseErrorHandler
|
||||
@@ -378,12 +378,12 @@ git commit -m "feat(wechat): 新增 WechatResponseErrorHandler
|
||||
## Task 4: 重写 RestTemplateConfig 集成新组件
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/config/RestTemplateConfig.java`
|
||||
- Modify: `server/src/main/java/com/emotion/config/RestTemplateConfig.java`
|
||||
|
||||
- [ ] **Step 4.1: 备份并读取原文件**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single\src\main\java\com\emotion\config"
|
||||
cd "G:\IdeaProjects\emotion-museun\server\src\main\java\com\emotion\config"
|
||||
copy RestTemplateConfig.java RestTemplateConfig.java.bak
|
||||
```
|
||||
|
||||
@@ -467,8 +467,8 @@ public class RestTemplateConfig {
|
||||
- [ ] **Step 4.3: mvn 编译验证(确保 7 个其他使用点不受影响)**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
期望:`BUILD SUCCESS`,无编译错误(如果 7 个其他使用点有编译错误,说明 RestTemplate API 不兼容,需要回滚)
|
||||
@@ -476,7 +476,7 @@ mvn clean install -pl :backend-single -am -DskipTests
|
||||
- [ ] **Step 4.4: 删除备份文件**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single\src\main\java\com\emotion\config"
|
||||
cd "G:\IdeaProjects\emotion-museun\server\src\main\java\com\emotion\config"
|
||||
del RestTemplateConfig.java.bak
|
||||
```
|
||||
|
||||
@@ -484,7 +484,7 @@ del RestTemplateConfig.java.bak
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/config/RestTemplateConfig.java
|
||||
git add server/src/main/java/com/emotion/config/RestTemplateConfig.java
|
||||
git commit -m "feat(wechat): 重写 RestTemplateConfig 统一 RestTemplate Bean
|
||||
|
||||
解决问题:
|
||||
@@ -514,8 +514,8 @@ git commit -m "feat(wechat): 重写 RestTemplateConfig 统一 RestTemplate Bean
|
||||
## Task 5: 重写 WechatMiniProgramServiceImpl.code2Session(TDD 10 个场景)
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`
|
||||
- Create: `backend-single/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`
|
||||
- Create: `server/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 5.1: 读取当前 WechatMiniProgramServiceImpl.java**
|
||||
|
||||
@@ -523,7 +523,7 @@ git commit -m "feat(wechat): 重写 RestTemplateConfig 统一 RestTemplate Bean
|
||||
|
||||
- [ ] **Step 5.2: 写失败测试(覆盖 spec 10 个场景)**
|
||||
|
||||
创建 `backend-single/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java`:
|
||||
创建 `server/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.service.impl;
|
||||
@@ -659,7 +659,7 @@ class WechatMiniProgramServiceImplTest {
|
||||
- [ ] **Step 5.3: 运行测试验证失败(确认 service 现有方法未做防御)**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn test -Dtest=WechatMiniProgramServiceImplTest
|
||||
```
|
||||
|
||||
@@ -667,7 +667,7 @@ mvn test -Dtest=WechatMiniProgramServiceImplTest
|
||||
|
||||
- [ ] **Step 5.4: 重写 code2Session 方法(五步防御)**
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`:
|
||||
修改 `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java`:
|
||||
|
||||
在 class 顶部添加 imports:
|
||||
```java
|
||||
@@ -748,7 +748,7 @@ public WechatCodeSessionResponse code2Session(String code) {
|
||||
- [ ] **Step 5.5: 运行测试验证通过**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn test -Dtest=WechatMiniProgramServiceImplTest
|
||||
```
|
||||
|
||||
@@ -758,8 +758,8 @@ mvn test -Dtest=WechatMiniProgramServiceImplTest
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java
|
||||
git add backend-single/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java
|
||||
git add server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java
|
||||
git add server/src/test/java/com/emotion/service/impl/WechatMiniProgramServiceImplTest.java
|
||||
git commit -m "feat(wechat): 重写 code2Session 五步防御
|
||||
|
||||
解决问题:
|
||||
@@ -783,7 +783,7 @@ git commit -m "feat(wechat): 重写 code2Session 五步防御
|
||||
## Task 6: 修改 application.yml 移除硬编码
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/resources/application.yml`
|
||||
- Modify: `server/src/main/resources/application.yml`
|
||||
|
||||
- [ ] **Step 6.1: 定位并修改微信配置**
|
||||
|
||||
@@ -820,7 +820,7 @@ $env:WECHAT_MINI_PROGRAM_APP_SECRET = "4f087bd363a4147ef543d634f9f6950d"
|
||||
- [ ] **Step 6.3: mvn 编译验证(确保 YAML 可加载)**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
@@ -830,7 +830,7 @@ mvn clean compile -DskipTests
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/resources/application.yml
|
||||
git add server/src/main/resources/application.yml
|
||||
git commit -m "fix(wechat): 移除 app-id/app-secret 硬编码默认值
|
||||
|
||||
安全问题:
|
||||
@@ -854,7 +854,7 @@ git commit -m "fix(wechat): 移除 app-id/app-secret 硬编码默认值
|
||||
## Task 7: 修改 GlobalExceptionHandler 添加 WechatApiException handler
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/exception/GlobalExceptionHandler.java`
|
||||
- Modify: `server/src/main/java/com/emotion/exception/GlobalExceptionHandler.java`
|
||||
|
||||
- [ ] **Step 7.1: 定位文件并添加新方法**
|
||||
|
||||
@@ -911,7 +911,7 @@ public Result<Void> handleWechatApiException(WechatApiException e, HttpServletRe
|
||||
- [ ] **Step 7.2: mvn 编译验证**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn clean compile -DskipTests
|
||||
```
|
||||
|
||||
@@ -919,7 +919,7 @@ mvn clean compile -DskipTests
|
||||
|
||||
- [ ] **Step 7.3: 写简单测试验证 handler 行为**
|
||||
|
||||
创建 `backend-single/src/test/java/com/emotion/exception/GlobalExceptionHandlerWechatTest.java`:
|
||||
创建 `server/src/test/java/com/emotion/exception/GlobalExceptionHandlerWechatTest.java`:
|
||||
|
||||
```java
|
||||
package com.emotion.exception;
|
||||
@@ -976,7 +976,7 @@ class GlobalExceptionHandlerWechatTest {
|
||||
- [ ] **Step 7.4: 运行测试**
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun\backend-single"
|
||||
cd "G:\IdeaProjects\emotion-museun\server"
|
||||
mvn test -Dtest=GlobalExceptionHandlerWechatTest
|
||||
```
|
||||
|
||||
@@ -986,8 +986,8 @@ mvn test -Dtest=GlobalExceptionHandlerWechatTest
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
git add backend-single/src/main/java/com/emotion/exception/GlobalExceptionHandler.java
|
||||
git add backend-single/src/test/java/com/emotion/exception/GlobalExceptionHandlerWechatTest.java
|
||||
git add server/src/main/java/com/emotion/exception/GlobalExceptionHandler.java
|
||||
git add server/src/test/java/com/emotion/exception/GlobalExceptionHandlerWechatTest.java
|
||||
git commit -m "feat(wechat): GlobalExceptionHandler 新增 WechatApiException handler
|
||||
|
||||
解决问题:
|
||||
@@ -1014,7 +1014,7 @@ git commit -m "feat(wechat): GlobalExceptionHandler 新增 WechatApiException ha
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
mvn clean install -pl :backend-single -am -DskipTests
|
||||
mvn clean install -pl :server -am -DskipTests
|
||||
```
|
||||
|
||||
期望:`BUILD SUCCESS`
|
||||
@@ -1023,7 +1023,7 @@ mvn clean install -pl :backend-single -am -DskipTests
|
||||
|
||||
```bash
|
||||
cd "G:\IdeaProjects\emotion-museun"
|
||||
mvn test -pl :backend-single
|
||||
mvn test -pl :server
|
||||
```
|
||||
|
||||
期望:所有测试通过,无失败
|
||||
|
||||
@@ -18,17 +18,17 @@
|
||||
|
||||
| 文件 | 职责 |
|
||||
|---|---|
|
||||
| `backend-single/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql` | 数据库字段迁移脚本 |
|
||||
| `server/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql` | 数据库字段迁移脚本 |
|
||||
| `mini-program/src/pages/onboarding/tag-manage.vue` | 管理标签独立页面(性格标签 / 兴趣爱好) |
|
||||
|
||||
### 修改文件
|
||||
|
||||
| 文件 | 修改内容 |
|
||||
|---|---|
|
||||
| `backend-single/src/main/java/com/emotion/entity/UserProfile.java` | 新增 `personalityTagLibrary` / `hobbyLibrary` 字段 |
|
||||
| `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java` | 同上 |
|
||||
| `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java` | 同上 |
|
||||
| `backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java` | 同上 |
|
||||
| `server/src/main/java/com/emotion/entity/UserProfile.java` | 新增 `personalityTagLibrary` / `hobbyLibrary` 字段 |
|
||||
| `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java` | 同上 |
|
||||
| `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java` | 同上 |
|
||||
| `server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java` | 同上 |
|
||||
| `mini-program/src/services/userProfile.js` | 请求/响应转换增加两个库字段 |
|
||||
| `mini-program/src/stores/app.js` | `registrationData` 增加两个库字段 |
|
||||
| `mini-program/src/pages.json` | 注册 `tag-manage` 路由 |
|
||||
@@ -39,8 +39,8 @@
|
||||
| 文件 | 原因 |
|
||||
|---|---|
|
||||
| `mini-program/src/pages/main/MineView.vue` | 只读"已选中的标签"(沿用 `hobbies` 字段),不需要感知完整库 |
|
||||
| `backend-single/src/main/java/com/emotion/service/impl/UserProfileServiceImpl.java` | 使用 `BeanUtils.copyProperties` 自动映射,新字段透传 |
|
||||
| `backend-single/src/main/java/com/emotion/controller/UserProfileController.java` | 同上 |
|
||||
| `server/src/main/java/com/emotion/service/impl/UserProfileServiceImpl.java` | 使用 `BeanUtils.copyProperties` 自动映射,新字段透传 |
|
||||
| `server/src/main/java/com/emotion/controller/UserProfileController.java` | 同上 |
|
||||
|
||||
---
|
||||
|
||||
@@ -49,15 +49,15 @@
|
||||
**目标:** 给 `t_user_profile` 表新增两个 JSON 字段,同步更新实体类与 3 个 DTO,保证接口透传。
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- Modify: `backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
- Create: `server/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql`
|
||||
- Modify: `server/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- Modify: `server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
|
||||
### Step 1: 创建数据库迁移脚本
|
||||
|
||||
创建 `backend-single/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql`:
|
||||
创建 `server/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql`:
|
||||
|
||||
```sql
|
||||
-- 用户档案表新增标签库字段,用于存储用户专属的完整标签列表(含剩余预设 + 自定义)
|
||||
@@ -68,7 +68,7 @@ ALTER TABLE t_user_profile
|
||||
|
||||
### Step 2: UserProfile 实体新增字段
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/entity/UserProfile.java`。
|
||||
修改 `server/src/main/java/com/emotion/entity/UserProfile.java`。
|
||||
|
||||
在 `personalityTags` 字段下方追加两个字段(保持与现有 `personalityTags` / `hobbies` 字段风格一致):
|
||||
|
||||
@@ -94,7 +94,7 @@ ALTER TABLE t_user_profile
|
||||
|
||||
### Step 3: UserProfileUpdateRequest 新增字段
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`。
|
||||
修改 `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`。
|
||||
|
||||
在 `personalityTags` 字段下方追加:
|
||||
|
||||
@@ -117,7 +117,7 @@ ALTER TABLE t_user_profile
|
||||
|
||||
### Step 4: UserProfileCreateRequest 新增字段
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`。
|
||||
修改 `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`。
|
||||
|
||||
在 `personalityTags` 字段下方追加:
|
||||
|
||||
@@ -140,7 +140,7 @@ ALTER TABLE t_user_profile
|
||||
|
||||
### Step 5: UserProfileResponse 新增字段
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`。
|
||||
修改 `server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`。
|
||||
|
||||
在 `personalityTags` 字段下方追加:
|
||||
|
||||
@@ -164,8 +164,8 @@ ALTER TABLE t_user_profile
|
||||
### Step 6: 本地编译验证
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
mvn clean install -DskipTests -pl :backend-single -am
|
||||
cd server
|
||||
mvn clean install -DskipTests -pl :server -am
|
||||
```
|
||||
|
||||
预期:`BUILD SUCCESS`。
|
||||
@@ -173,11 +173,11 @@ mvn clean install -DskipTests -pl :backend-single -am
|
||||
### Step 7: 提交
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql \
|
||||
backend-single/src/main/java/com/emotion/entity/UserProfile.java \
|
||||
backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java \
|
||||
backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java \
|
||||
backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java
|
||||
git add server/src/main/resources/db/migration/V20260624__add_user_profile_tag_library.sql \
|
||||
server/src/main/java/com/emotion/entity/UserProfile.java \
|
||||
server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java \
|
||||
server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java \
|
||||
server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java
|
||||
git commit -m "feat:UserProfile 新增性格标签库与兴趣爱好库字段"
|
||||
```
|
||||
|
||||
@@ -1258,7 +1258,7 @@ git commit -m "feat:新增管理标签独立页面,支持左滑与 × 按钮
|
||||
### Step 1: 重启后端(已修改 Java 实体)
|
||||
|
||||
```bash
|
||||
python dev-services.py restart backend-single
|
||||
python dev-services.py restart server
|
||||
```
|
||||
|
||||
等待启动完成,查看终端无报错。
|
||||
|
||||
@@ -0,0 +1,462 @@
|
||||
# backend-single 重命名为 server 实施计划
|
||||
|
||||
> **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:** 将 `backend-single` 目录重命名为 `server`,同步更新 Maven artifactId、部署脚本、配置文件、项目文档和历史文档中的所有引用。
|
||||
|
||||
**Architecture:** 分 10 个任务按依赖顺序执行。先移动目录(Task 1),再更新构建配置(Task 2-3),然后更新根级脚本(Task 4-5),接着更新文档(Task 6-8),最后批量替换历史文档(Task 9)并全面验证(Task 10)。
|
||||
|
||||
**Tech Stack:** Git, Maven, Python (deploy scripts), Bash, sed (batch replace)
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 目录重命名
|
||||
|
||||
**Files:**
|
||||
- Move: `backend-single/` → `server/`
|
||||
|
||||
- [ ] **Step 1: 使用 git mv 重命名目录**
|
||||
|
||||
```bash
|
||||
cd /g/IdeaProjects/emotion-museun
|
||||
git mv backend-single server
|
||||
```
|
||||
|
||||
Expected: 目录从 `backend-single/` 重命名为 `server/`,Git 历史完整保留。
|
||||
|
||||
- [ ] **Step 2: 确认目录已移动**
|
||||
|
||||
```bash
|
||||
ls -d server/
|
||||
ls server/pom.xml
|
||||
```
|
||||
|
||||
Expected: 两个命令都成功,无报错。
|
||||
|
||||
- [ ] **Step 3: 提交目录移动**
|
||||
|
||||
```bash
|
||||
git commit -m "refactor: 重命名 backend-single 目录为 server"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: 更新 Maven pom.xml
|
||||
|
||||
**Files:**
|
||||
- Modify: `server/pom.xml:8,12`
|
||||
|
||||
- [ ] **Step 1: 修改 artifactId 和 name**
|
||||
|
||||
在 `server/pom.xml` 中,将第 8 行和第 12 行的 `backend-single` 替换为 `server`:
|
||||
|
||||
```xml
|
||||
<!-- 第 8 行 -->
|
||||
<artifactId>server</artifactId>
|
||||
|
||||
<!-- 第 12 行 -->
|
||||
<name>server</name>
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 验证 pom.xml 修改**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" server/pom.xml
|
||||
```
|
||||
|
||||
Expected: 无任何输出(无残留引用)。
|
||||
|
||||
- [ ] **Step 3: 提交 pom.xml 修改**
|
||||
|
||||
```bash
|
||||
git add server/pom.xml
|
||||
git commit -m "refactor: 更新 Maven artifactId 为 server"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 3: 更新后端部署脚本 JAR 名称
|
||||
|
||||
**Files:**
|
||||
- Modify: `server/deploy.py:22`
|
||||
- Modify: `server/deploy.sh:10`
|
||||
|
||||
- [ ] **Step 1: 修改 server/deploy.py 中的 JAR_NAME**
|
||||
|
||||
将 `server/deploy.py` 第 22 行:
|
||||
|
||||
```python
|
||||
JAR_NAME = "backend-single-1.0.0.jar"
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```python
|
||||
JAR_NAME = "server-1.0.0.jar"
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 修改 server/deploy.sh 中的 JAR_NAME**
|
||||
|
||||
将 `server/deploy.sh` 第 10 行:
|
||||
|
||||
```bash
|
||||
JAR_NAME="backend-single-1.0.0.jar"
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```bash
|
||||
JAR_NAME="server-1.0.0.jar"
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 验证后端部署脚本无残留**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" server/deploy.py server/deploy.sh
|
||||
```
|
||||
|
||||
Expected: 无任何输出。
|
||||
|
||||
- [ ] **Step 4: 提交后端部署脚本修改**
|
||||
|
||||
```bash
|
||||
git add server/deploy.py server/deploy.sh
|
||||
git commit -m "refactor: 更新后端部署脚本 JAR 名称为 server-1.0.0.jar"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 4: 更新根目录部署脚本
|
||||
|
||||
**Files:**
|
||||
- Modify: `deploy.py:398,405,413`
|
||||
- Modify: `deploy.sh:77,81,82,86`
|
||||
|
||||
- [ ] **Step 1: 修改根目录 deploy.py**
|
||||
|
||||
将 `deploy.py` 中 3 处 `backend-single` 替换为 `server`:
|
||||
|
||||
第 398 行注释:
|
||||
```python
|
||||
# 后端 - 调用 server/deploy.sh remote
|
||||
```
|
||||
|
||||
第 405 行路径拼接:
|
||||
```python
|
||||
deploy_script = PROJECT_DIR / "server" / "deploy.py"
|
||||
```
|
||||
|
||||
第 413 行 cwd:
|
||||
```python
|
||||
cwd=str(PROJECT_DIR / "server"),
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 修改根目录 deploy.sh**
|
||||
|
||||
将 `deploy.sh` 中 4 处 `backend-single` 替换为 `server`:
|
||||
|
||||
第 77 行注释:
|
||||
```bash
|
||||
# 后端 - 调用 server/deploy.sh
|
||||
```
|
||||
|
||||
第 81 行存在性检查:
|
||||
```bash
|
||||
if [ ! -f "server/deploy.sh" ]; then
|
||||
```
|
||||
|
||||
第 82 行错误信息:
|
||||
```bash
|
||||
log_error "后端部署脚本不存在: server/deploy.sh"
|
||||
```
|
||||
|
||||
第 86 行 cd 命令:
|
||||
```bash
|
||||
cd server
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 验证根部署脚本无残留**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" deploy.py deploy.sh
|
||||
```
|
||||
|
||||
Expected: 无任何输出。
|
||||
|
||||
- [ ] **Step 4: 提交根部署脚本修改**
|
||||
|
||||
```bash
|
||||
git add deploy.py deploy.sh
|
||||
git commit -m "refactor: 更新根部署脚本中的后端目录引用为 server"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 5: 更新 .gitignore
|
||||
|
||||
**Files:**
|
||||
- Modify: `.gitignore:386`
|
||||
|
||||
- [ ] **Step 1: 修改 .gitignore**
|
||||
|
||||
将 `.gitignore` 第 386 行:
|
||||
|
||||
```
|
||||
backend-single/backend.err
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```
|
||||
server/backend.err
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 验证并提交**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" .gitignore
|
||||
git add .gitignore
|
||||
git commit -m "refactor: 更新 .gitignore 中的后端日志路径"
|
||||
```
|
||||
|
||||
Expected: grep 无输出,提交成功。
|
||||
|
||||
---
|
||||
|
||||
### Task 6: 更新核心项目文档
|
||||
|
||||
**Files:**
|
||||
- Modify: `CLAUDE.md` (4 处)
|
||||
- Modify: `AGENTS.md` (4 处)
|
||||
- Modify: `README.md` (1 处)
|
||||
|
||||
- [ ] **Step 1: 修改 CLAUDE.md**
|
||||
|
||||
将 `CLAUDE.md` 中所有 `backend-single` 替换为 `server`:
|
||||
|
||||
第 23 行项目结构树:
|
||||
```
|
||||
├── server/ # Spring Boot 单体后端服务
|
||||
```
|
||||
|
||||
第 37 行标题:
|
||||
```
|
||||
### 后端 (server)
|
||||
```
|
||||
|
||||
第 41 行命令:
|
||||
```
|
||||
cd server
|
||||
```
|
||||
|
||||
第 50 行 JAR 名称:
|
||||
```
|
||||
java -jar target/server-1.0.0.jar
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 修改 AGENTS.md**
|
||||
|
||||
将 `AGENTS.md` 中所有 `backend-single` 替换为 `server`(与 CLAUDE.md 相同的 4 处位置和内容)。
|
||||
|
||||
- [ ] **Step 3: 修改 README.md**
|
||||
|
||||
将 `README.md` 第 73 行:
|
||||
|
||||
```
|
||||
├── backend-single/ # SpringBoot单体后端服务
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```
|
||||
├── server/ # SpringBoot单体后端服务
|
||||
```
|
||||
|
||||
- [ ] **Step 4: 验证并提交**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" CLAUDE.md AGENTS.md README.md
|
||||
git add CLAUDE.md AGENTS.md README.md
|
||||
git commit -m "docs: 更新核心文档中的后端目录引用为 server"
|
||||
```
|
||||
|
||||
Expected: grep 无输出,提交成功。
|
||||
|
||||
---
|
||||
|
||||
### Task 7: 更新部署相关文档
|
||||
|
||||
**Files:**
|
||||
- Modify: `server/部署说明.md` (1 处)
|
||||
- Modify: `快速部署参考.md` (4 处)
|
||||
- Modify: `一键部署说明.md` (5 处)
|
||||
|
||||
- [ ] **Step 1: 修改 server/部署说明.md**
|
||||
|
||||
将 `server/部署说明.md` 第 14 行:
|
||||
|
||||
```
|
||||
# 在 backend-single 目录下执行
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```
|
||||
# 在 server 目录下执行
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 修改 快速部署参考.md**
|
||||
|
||||
将 `快速部署参考.md` 中所有 `backend-single` 替换为 `server`(4 处:第 71、83、134、136 行)。
|
||||
|
||||
- [ ] **Step 3: 修改 一键部署说明.md**
|
||||
|
||||
将 `一键部署说明.md` 中所有 `backend-single` 替换为 `server`(5 处:第 78、152、156、301、304 行)。注意第 156 行 `backend-single-1.0.0.jar` 变为 `server-1.0.0.jar`。
|
||||
|
||||
- [ ] **Step 4: 验证并提交**
|
||||
|
||||
```bash
|
||||
grep -n "backend-single" "server/部署说明.md" "快速部署参考.md" "一键部署说明.md"
|
||||
git add "server/部署说明.md" "快速部署参考.md" "一键部署说明.md"
|
||||
git commit -m "docs: 更新部署文档中的后端目录引用为 server"
|
||||
```
|
||||
|
||||
Expected: grep 无输出,提交成功。
|
||||
|
||||
---
|
||||
|
||||
### Task 8: 更新前端代码和其他文档
|
||||
|
||||
**Files:**
|
||||
- Modify: `web/src/types/auth.ts:5`
|
||||
- Modify: `web-admin/AI_CONFIG_TEST_SAVE_FEATURE.md:284-287`
|
||||
|
||||
- [ ] **Step 1: 修改 web/src/types/auth.ts 注释**
|
||||
|
||||
将第 5 行:
|
||||
|
||||
```ts
|
||||
// 登录请求(对齐 backend-single:手机号 + 短信验证码)
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```ts
|
||||
// 登录请求(对齐 server:手机号 + 短信验证码)
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 修改 web-admin/AI_CONFIG_TEST_SAVE_FEATURE.md**
|
||||
|
||||
将文件中 4 处 `backend-single/src/main/java/` 替换为 `server/src/main/java/`(第 284-287 行)。
|
||||
|
||||
- [ ] **Step 3: 验证并提交**
|
||||
|
||||
```bash
|
||||
grep -rn "backend-single" web/ web-admin/
|
||||
git add "web/src/types/auth.ts" "web-admin/AI_CONFIG_TEST_SAVE_FEATURE.md"
|
||||
git commit -m "docs: 更新前端代码和文档中的后端目录引用为 server"
|
||||
```
|
||||
|
||||
Expected: grep 无输出(在这两个目录中),提交成功。
|
||||
|
||||
---
|
||||
|
||||
### Task 9: 批量替换历史文档
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/superpowers/` 下约 37 个 `.md` 文件(排除本次新建的设计文档)
|
||||
|
||||
- [ ] **Step 1: 使用 sed 批量替换**
|
||||
|
||||
在 Windows Git Bash 中执行:
|
||||
|
||||
```bash
|
||||
cd /g/IdeaProjects/emotion-museun
|
||||
find docs/superpowers -name "*.md" \
|
||||
! -name "2026-06-27-backend-single-rename-to-server-design.md" \
|
||||
-exec sed -i 's/backend-single/server/g' {} +
|
||||
```
|
||||
|
||||
说明:
|
||||
- `sed -i` 原地替换
|
||||
- `! -name` 排除本次设计文档自身(避免修改自己的文件名引用)
|
||||
- `s/backend-single/server/g` 全局替换
|
||||
|
||||
- [ ] **Step 2: 验证 docs/superpowers/ 中无残留**
|
||||
|
||||
```bash
|
||||
grep -rn "backend-single" docs/superpowers/ \
|
||||
--include="*.md" \
|
||||
! --include="2026-06-27-backend-single-rename-to-server-design.md"
|
||||
```
|
||||
|
||||
Expected: 无任何输出。
|
||||
|
||||
- [ ] **Step 3: 提交历史文档更新**
|
||||
|
||||
```bash
|
||||
git add docs/superpowers/
|
||||
git commit -m "docs: 批量更新历史文档中的 backend-single 引用为 server"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 10: 全面验证
|
||||
|
||||
**Files:** 无新增修改
|
||||
|
||||
- [ ] **Step 1: 全项目 grep 验证无残留**
|
||||
|
||||
```bash
|
||||
grep -rn "backend-single" --include="*.md" --include="*.py" --include="*.sh" \
|
||||
--include="*.xml" --include="*.ts" --include="*.java" --include="*.yml" \
|
||||
--include="*.yaml" --include="*.json" --include="*.properties" .
|
||||
```
|
||||
|
||||
Expected: **无任何输出**。如果有残留,逐一修复。
|
||||
|
||||
**注意**:以下文件中出现 `backend-single` 是允许的(不需要修改):
|
||||
- `docs/superpowers/specs/2026-06-27-backend-single-rename-to-server-design.md`(本次设计文档自身)
|
||||
- `docs/superpowers/plans/2026-06-27-backend-single-rename-to-server.md`(本次计划文档自身)
|
||||
|
||||
- [ ] **Step 2: Maven 编译验证**
|
||||
|
||||
```bash
|
||||
cd /g/IdeaProjects/emotion-museun/server
|
||||
mvn clean install -DskipTests
|
||||
```
|
||||
|
||||
Expected: BUILD SUCCESS,生成 `target/server-1.0.0.jar`。
|
||||
|
||||
- [ ] **Step 3: 验证 JAR 文件名称**
|
||||
|
||||
```bash
|
||||
ls -lh server/target/server-1.0.0.jar
|
||||
```
|
||||
|
||||
Expected: 文件存在,名称正确。
|
||||
|
||||
- [ ] **Step 4: 验证 Git 历史保留**
|
||||
|
||||
```bash
|
||||
git log --follow --oneline server/pom.xml | head -5
|
||||
```
|
||||
|
||||
Expected: 能看到旧的重命名之前的提交历史。
|
||||
|
||||
- [ ] **Step 5: 验证 .gitignore 生效**
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
Expected: 工作区干净(无意外未跟踪文件)。
|
||||
|
||||
- [ ] **Step 6: 最终提交(如有修复)**
|
||||
|
||||
如果 Step 1 中发现了残留并修复了,执行:
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "fix: 修复遗漏的 backend-single 引用"
|
||||
```
|
||||
@@ -71,7 +71,7 @@ Expected: 一行数据,`config_key = 'sms_login_enabled'`,`config_value = 'f
|
||||
### Task 2: 后端 Entity — SystemConfig.java
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/entity/SystemConfig.java`
|
||||
- Create: `server/src/main/java/com/emotion/entity/SystemConfig.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfig 实体**
|
||||
|
||||
@@ -153,7 +153,7 @@ public class SystemConfig extends BaseEntity {
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/entity/SystemConfig.java
|
||||
git add server/src/main/java/com/emotion/entity/SystemConfig.java
|
||||
git commit -m "feat:新增系统配置实体类"
|
||||
```
|
||||
|
||||
@@ -162,7 +162,7 @@ git commit -m "feat:新增系统配置实体类"
|
||||
### Task 3: 后端 Mapper — SystemConfigMapper.java
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/mapper/SystemConfigMapper.java`
|
||||
- Create: `server/src/main/java/com/emotion/mapper/SystemConfigMapper.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfigMapper**
|
||||
|
||||
@@ -187,7 +187,7 @@ public interface SystemConfigMapper extends BaseMapper<SystemConfig> {
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/mapper/SystemConfigMapper.java
|
||||
git add server/src/main/java/com/emotion/mapper/SystemConfigMapper.java
|
||||
git commit -m "feat:新增系统配置Mapper"
|
||||
```
|
||||
|
||||
@@ -196,9 +196,9 @@ git commit -m "feat:新增系统配置Mapper"
|
||||
### Task 4: 后端 DTOs
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/request/SystemConfigUpdateRequest.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/SystemConfigResponse.java`
|
||||
- Create: `backend-single/src/main/java/com/emotion/dto/response/LoginConfigResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/request/SystemConfigUpdateRequest.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/SystemConfigResponse.java`
|
||||
- Create: `server/src/main/java/com/emotion/dto/response/LoginConfigResponse.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfigUpdateRequest**
|
||||
|
||||
@@ -317,9 +317,9 @@ public class LoginConfigResponse {
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/dto/request/SystemConfigUpdateRequest.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/SystemConfigResponse.java
|
||||
git add backend-single/src/main/java/com/emotion/dto/response/LoginConfigResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/request/SystemConfigUpdateRequest.java
|
||||
git add server/src/main/java/com/emotion/dto/response/SystemConfigResponse.java
|
||||
git add server/src/main/java/com/emotion/dto/response/LoginConfigResponse.java
|
||||
git commit -m "feat:新增系统配置相关DTO"
|
||||
```
|
||||
|
||||
@@ -328,7 +328,7 @@ git commit -m "feat:新增系统配置相关DTO"
|
||||
### Task 5: 后端 Service 接口 — SystemConfigService.java
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/SystemConfigService.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/SystemConfigService.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfigService 接口**
|
||||
|
||||
@@ -379,7 +379,7 @@ public interface SystemConfigService extends IService<SystemConfig> {
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/SystemConfigService.java
|
||||
git add server/src/main/java/com/emotion/service/SystemConfigService.java
|
||||
git commit -m "feat:新增系统配置服务接口"
|
||||
```
|
||||
|
||||
@@ -388,7 +388,7 @@ git commit -m "feat:新增系统配置服务接口"
|
||||
### Task 6: 后端 Service 实现 — SystemConfigServiceImpl.java
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/service/impl/SystemConfigServiceImpl.java`
|
||||
- Create: `server/src/main/java/com/emotion/service/impl/SystemConfigServiceImpl.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfigServiceImpl**
|
||||
|
||||
@@ -506,7 +506,7 @@ public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigMapper, Sys
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/service/impl/SystemConfigServiceImpl.java
|
||||
git add server/src/main/java/com/emotion/service/impl/SystemConfigServiceImpl.java
|
||||
git commit -m "feat:新增系统配置服务实现(含Redis缓存)"
|
||||
```
|
||||
|
||||
@@ -515,7 +515,7 @@ git commit -m "feat:新增系统配置服务实现(含Redis缓存)"
|
||||
### Task 7: 后端管理端 Controller — SystemConfigController.java
|
||||
|
||||
**Files:**
|
||||
- Create: `backend-single/src/main/java/com/emotion/controller/SystemConfigController.java`
|
||||
- Create: `server/src/main/java/com/emotion/controller/SystemConfigController.java`
|
||||
|
||||
- [ ] **Step 1: 创建 SystemConfigController**
|
||||
|
||||
@@ -575,7 +575,7 @@ public class SystemConfigController {
|
||||
- [ ] **Step 2: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/SystemConfigController.java
|
||||
git add server/src/main/java/com/emotion/controller/SystemConfigController.java
|
||||
git commit -m "feat:新增系统配置管理端Controller"
|
||||
```
|
||||
|
||||
@@ -584,7 +584,7 @@ git commit -m "feat:新增系统配置管理端Controller"
|
||||
### Task 8: 后端公开接口 — AuthController 新增 loginConfig
|
||||
|
||||
**Files:**
|
||||
- Modify: `backend-single/src/main/java/com/emotion/controller/AuthController.java`
|
||||
- Modify: `server/src/main/java/com/emotion/controller/AuthController.java`
|
||||
|
||||
- [ ] **Step 1: 在 AuthController 中添加 loginConfig 接口**
|
||||
|
||||
@@ -616,7 +616,7 @@ public Result<LoginConfigResponse> getLoginConfig() {
|
||||
|
||||
- [ ] **Step 2: 在 WebMvcConfig 白名单中放行**
|
||||
|
||||
修改 `backend-single/src/main/java/com/emotion/config/WebMvcConfig.java`,在 JWT 拦截器的 `excludePathPatterns` 中添加一行:
|
||||
修改 `server/src/main/java/com/emotion/config/WebMvcConfig.java`,在 JWT 拦截器的 `excludePathPatterns` 中添加一行:
|
||||
|
||||
```java
|
||||
"/auth/loginConfig", // 登录方式配置接口(免登录)
|
||||
@@ -627,8 +627,8 @@ public Result<LoginConfigResponse> getLoginConfig() {
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add backend-single/src/main/java/com/emotion/controller/AuthController.java
|
||||
git add backend-single/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git add server/src/main/java/com/emotion/controller/AuthController.java
|
||||
git add server/src/main/java/com/emotion/config/WebMvcConfig.java
|
||||
git commit -m "feat:新增公开接口 /auth/loginConfig 并放行白名单"
|
||||
```
|
||||
|
||||
@@ -639,7 +639,7 @@ git commit -m "feat:新增公开接口 /auth/loginConfig 并放行白名单"
|
||||
- [ ] **Step 1: 编译后端**
|
||||
|
||||
```bash
|
||||
cd backend-single
|
||||
cd server
|
||||
mvn clean install -DskipTests
|
||||
```
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ purpose: 设计并优化情绪博物馆跨平台服务管理脚本,修复硬
|
||||
services:
|
||||
backend:
|
||||
name: "后端服务"
|
||||
dir: "backend-single"
|
||||
dir: "server"
|
||||
type: "java"
|
||||
port: 19089
|
||||
health_check_path: "/actuator/health"
|
||||
|
||||
@@ -33,10 +33,10 @@ The current mini program already has the core functional modules:
|
||||
|
||||
The backend already has script generation support under:
|
||||
|
||||
- `backend-single/src/main/java/com/emotion/controller/EpicScriptController.java`
|
||||
- `backend-single/src/main/java/com/emotion/service/EpicScriptService.java`
|
||||
- `backend-single/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java`
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/EpicScriptCreateRequest.java`
|
||||
- `server/src/main/java/com/emotion/controller/EpicScriptController.java`
|
||||
- `server/src/main/java/com/emotion/service/EpicScriptService.java`
|
||||
- `server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java`
|
||||
- `server/src/main/java/com/emotion/dto/request/EpicScriptCreateRequest.java`
|
||||
|
||||
The missing product capability is a complete inspiration-mode flow. The backend currently exposes generic script creation, but it does not expose dedicated endpoints for inspiration recommendations, random inspiration, or one-sentence inspiration generation.
|
||||
|
||||
@@ -45,7 +45,7 @@ The missing product capability is a complete inspiration-mode flow. The backend
|
||||
1. Redesign the mini-program pages to match the new prototype visual direction: dark cosmic background, purple glass panels, glowing primary actions, rounded bottom navigation, and stronger card hierarchy.
|
||||
2. Keep the existing product functions largely unchanged.
|
||||
3. Complete the functional flow from life events to script generation to script detail to path realization.
|
||||
4. Add backend inspiration-mode APIs in `backend-single`.
|
||||
4. Add backend inspiration-mode APIs in `server`.
|
||||
5. Make the implementation modular enough to land in batches without leaving broken flows.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
@@ -11,7 +11,7 @@ Add two complete but independently shippable capabilities:
|
||||
|
||||
The implementation should fit the current project shape:
|
||||
|
||||
- `backend-single`: Spring Boot 2.7, MyBatis Plus, MySQL, Redis.
|
||||
- `server`: Spring Boot 2.7, MyBatis Plus, MySQL, Redis.
|
||||
- `mini-program`: uni-app/Vue.
|
||||
- `web-admin`: Vue, Element Plus, ECharts.
|
||||
- Deployment target: `101.200.208.45` with passwordless SSH.
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
现有实现包含:
|
||||
|
||||
- `web-admin/src/views/aiconfig/AiConfigList.vue`:AI 配置列表、编辑、测试、测试后保存。
|
||||
- `backend-single/src/main/java/com/emotion/entity/AiConfig.java`:对应 `t_ai_config`。
|
||||
- `server/src/main/java/com/emotion/entity/AiConfig.java`:对应 `t_ai_config`。
|
||||
- `AiConfigController`、`AiConfigService`、`AiConfigServiceImpl`:配置 CRUD、启用禁用、默认配置、测试后更新。
|
||||
- `AiChatServiceImpl`:包含大量 Coze 专用调用、请求组装、SSE 解析、工作流调用和日志记录逻辑。
|
||||
- `docs/dify平台接口.md`:Dify 平台接口文档,当前重点使用 `/chat-messages`。
|
||||
|
||||
@@ -382,10 +382,10 @@ async function submitEndpointStreamTest() {
|
||||
|
||||
| 操作 | 文件 |
|
||||
|------|------|
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java` |
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/service/AiRuntimeService.java` |
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java` |
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/controller/AiRoutingController.java` |
|
||||
| 修改 | `server/src/main/java/com/emotion/dto/request/ai/AiRuntimeRequest.java` |
|
||||
| 修改 | `server/src/main/java/com/emotion/service/AiRuntimeService.java` |
|
||||
| 修改 | `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java` |
|
||||
| 修改 | `server/src/main/java/com/emotion/controller/AiRoutingController.java` |
|
||||
| 修改 | `web-admin/src/types/aiconfig.ts` |
|
||||
| 修改 | `web-admin/src/api/aiconfig.ts` |
|
||||
| 修改 | `web-admin/src/views/aiconfig/AiRoutingList.vue` |
|
||||
|
||||
@@ -121,7 +121,7 @@ if (value instanceof JSONObject && ((JSONObject) value).containsKey("_meta")) {
|
||||
|------|------|
|
||||
| 修改 | `web-admin/src/views/aiconfig/AiRoutingList.vue` |
|
||||
| 修改 | `web-admin/src/types/aiconfig.ts` |
|
||||
| 修改 | `backend-single/src/main/java/com/emotion/service/ai/AiTemplateRenderer.java` |
|
||||
| 修改 | `server/src/main/java/com/emotion/service/ai/AiTemplateRenderer.java` |
|
||||
|
||||
## 4. 风险
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ purpose: 为所有 Controller 及关联 DTO 补全 OpenAPI 中文注解
|
||||
|
||||
## 1. 目标
|
||||
|
||||
为 `backend-single/src/main/java/com/emotion/controller/` 下所有 39 个 Controller 及其关联的 Request/Response DTO 补全 OpenAPI 注解,使接口文档页面可通过清晰的中文描述理解每个接口的作用和参数含义。
|
||||
为 `server/src/main/java/com/emotion/controller/` 下所有 39 个 Controller 及其关联的 Request/Response DTO 补全 OpenAPI 注解,使接口文档页面可通过清晰的中文描述理解每个接口的作用和参数含义。
|
||||
|
||||
## 2. 注解规范
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
|
||||
**保持不变的项**:
|
||||
- URL 路径(如 `/emotion-museum-admin/`)— 保持兼容
|
||||
- 目录名(`web/`、`web-admin/`、`backend-single/`)— 避免构建断裂
|
||||
- 目录名(`web/`、`web-admin/`、`server/`)— 避免构建断裂
|
||||
- 数据库表名前缀(如 `emotion_record` → 保持)— 避免 Entity/Table 映射断裂
|
||||
|
||||
## 第 1 步:文档层(无风险)
|
||||
@@ -43,7 +43,7 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
- `README.md`
|
||||
- `docs/superpowers/` 下所有 .md
|
||||
- 各模块下的 `部署说明.md`、`技术方案.md`、`后端代码规范.md` 等
|
||||
- `backend-single/部署说明.md`、`backend-single/后端项目结构.md` 等
|
||||
- `server/部署说明.md`、`server/后端项目结构.md` 等
|
||||
|
||||
**操作**:批量 sed 替换中文 `情绪博物馆` → `开心星球`,英文 `Emotion Museum` → `Happy Planet`,`emotion-museum` → `happy-planet`
|
||||
|
||||
@@ -73,13 +73,13 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
**影响范围**:配置文件、部署脚本、nginx、systemd service
|
||||
|
||||
### 3.1 应用配置
|
||||
- `backend-single/src/main/resources/application.yml` — `spring.application.name`
|
||||
- `backend-single/src/main/resources/application-*.yml` — 同上
|
||||
- `server/src/main/resources/application.yml` — `spring.application.name`
|
||||
- `server/src/main/resources/application-*.yml` — 同上
|
||||
- 日志路径、应用描述等配置中的 `emotion-museum`
|
||||
|
||||
### 3.2 部署脚本
|
||||
- `deploy.sh`、`deploy.py`
|
||||
- `backend-single/deploy.py`、`backend-single/deploy.sh`
|
||||
- `server/deploy.py`、`server/deploy.sh`
|
||||
- `web/deploy.sh`、`web/deploy.py`
|
||||
- `web-admin/deploy.sh`、`web-admin/deploy.py`
|
||||
- 各脚本中的路径引用、日志路径、提示文案
|
||||
@@ -91,8 +91,8 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
- jar 文件名、日志路径引用中的 `emotion-museum`
|
||||
|
||||
### 3.4 systemd Service
|
||||
- `backend-single/asr-service/emotion-museum-asr.service` → `happy-planet-asr.service`
|
||||
- `backend-single/tts-service/emotion-museum-tts.service` → `happy-planet-tts.service`
|
||||
- `server/asr-service/emotion-museum-asr.service` → `happy-planet-asr.service`
|
||||
- `server/tts-service/emotion-museum-tts.service` → `happy-planet-tts.service`
|
||||
- 内部路径和描述中的 `emotion-museum`
|
||||
|
||||
### 3.5 工具脚本
|
||||
@@ -118,7 +118,7 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
### 4.1 Java 包名重命名
|
||||
|
||||
**操作**:
|
||||
1. 移动目录:`backend-single/src/main/java/com/emotion/` → `backend-single/src/main/java/com/happyplanet/`
|
||||
1. 移动目录:`server/src/main/java/com/emotion/` → `server/src/main/java/com/happyplanet/`
|
||||
2. 更新 `pom.xml` 中的包名引用
|
||||
3. 用 sed 批量替换所有 `.java` 文件中 `package com.emotion` → `package com.happyplanet`
|
||||
4. 用 sed 批量替换所有 `.java` 文件中 `import com.emotion` → `import com.happyplanet`
|
||||
@@ -126,7 +126,7 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
6. 处理编译错误(可能有遗漏的引用)
|
||||
|
||||
**测试目录**:
|
||||
- `backend-single/src/test/java/com/emotion/` 同样需要迁移
|
||||
- `server/src/test/java/com/emotion/` 同样需要迁移
|
||||
- `.java` 文件中的 `package` 和 `import` 语句
|
||||
|
||||
### 4.2 SQL 文件
|
||||
@@ -139,7 +139,7 @@ purpose: 全项目品牌重命名方案,从"情绪博物馆"到"开心星球"
|
||||
- `USE emotion_museum` → `USE happy_planet`
|
||||
|
||||
### 4.3 其他底层引用
|
||||
- `backend-single/create_api_tables.sql` 中的数据库名
|
||||
- `server/create_api_tables.sql` 中的数据库名
|
||||
- `.gitignore` 中的路径引用(如有)
|
||||
|
||||
**验证**:
|
||||
|
||||
@@ -27,7 +27,7 @@ purpose: 设计接口管理页面的中文描述补全和测试面板表单化
|
||||
|
||||
### 3.1 Controller 注解补全
|
||||
|
||||
为 `backend-single/src/main/java/com/emotion/controller/` 下所有 Controller 补全注解:
|
||||
为 `server/src/main/java/com/emotion/controller/` 下所有 Controller 补全注解:
|
||||
|
||||
**类级别注解:**
|
||||
```java
|
||||
@@ -247,9 +247,9 @@ path: '/api' + testForm.value.path // 例如 /api + /auth/login = /api/auth/log
|
||||
| `web-admin/src/views/endpoint/EndpointList.vue` | 操作列加"测试"按钮,新增 `showTest` 方法 |
|
||||
| `web-admin/src/views/endpoint/EndpointDetailDialog.vue` | 新增 `defaultTab` prop,测试面板改造:参数表单 + JSON 预填充 + 请求头展示 |
|
||||
| `web-admin/src/api/endpoint.ts` | 类型定义无需修改(`operationId` 已存在) |
|
||||
| `backend-single/src/main/java/com/emotion/controller/*.java` | 补全 @Tag/@Operation/@Parameter/@Schema 注解(按 4 个批次) |
|
||||
| `backend-single/src/main/java/com/emotion/dto/request/**/*.java` | 补全 @Schema 注解(请求体参数描述来源) |
|
||||
| `backend-single/src/main/java/com/emotion/dto/response/**/*.java` | 补全 @Schema 注解(响应体参数描述来源,可选) |
|
||||
| `server/src/main/java/com/emotion/controller/*.java` | 补全 @Tag/@Operation/@Parameter/@Schema 注解(按 4 个批次) |
|
||||
| `server/src/main/java/com/emotion/dto/request/**/*.java` | 补全 @Schema 注解(请求体参数描述来源) |
|
||||
| `server/src/main/java/com/emotion/dto/response/**/*.java` | 补全 @Schema 注解(响应体参数描述来源,可选) |
|
||||
|
||||
## 5. 实施顺序
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ public Result<PageResult<AiCallLog>> queryCallLogs(@RequestBody @Valid AiCallLog
|
||||
|
||||
### Request 对象
|
||||
|
||||
存放路径:`backend-single/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java`
|
||||
存放路径:`server/src/main/java/com/emotion/dto/request/ai/AiCallLogQueryRequest.java`
|
||||
|
||||
```java
|
||||
@Schema(description = "AI 调用日志查询请求")
|
||||
|
||||
@@ -14,7 +14,7 @@ purpose: 在管理后台调用日志列表中增加"调用用户"列,显示用
|
||||
|
||||
### 1. 后端 — 实体新增字段
|
||||
|
||||
**文件**: `backend-single/src/main/java/com/emotion/entity/AiCallLog.java`
|
||||
**文件**: `server/src/main/java/com/emotion/entity/AiCallLog.java`
|
||||
|
||||
在 `userId` 字段下方新增:
|
||||
|
||||
@@ -31,7 +31,7 @@ ALTER TABLE t_ai_call_log ADD COLUMN user_name VARCHAR(100) COMMENT '用户昵
|
||||
|
||||
### 3. 后端 — 日志保存时写入 userName
|
||||
|
||||
**文件**: `backend-single/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
**文件**: `server/src/main/java/com/emotion/service/impl/AiRuntimeServiceImpl.java`
|
||||
|
||||
两处日志创建位置(第 68-73 行 `invokeStream` 方法、第 219-225 行 `invokeEndpointStream` 方法),在 `callLog.setUserId(...)` 之后补充:
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ The mini program currently supports phone number plus SMS code login only. The n
|
||||
- `mini-program/src/pages/login/index.vue` contains the existing phone/SMS login UI and routes to main or onboarding based on profile presence.
|
||||
- `mini-program/src/stores/app.js` already centralizes login, logout, token restore, and profile fetch behavior.
|
||||
- `mini-program/src/services/auth.js` stores `access_token` and `refresh_token` from `AuthResponse`.
|
||||
- `backend-single/src/main/java/com/emotion/controller/AuthController.java` exposes `/auth/login`, `/auth/refreshToken`, and token validation endpoints.
|
||||
- `server/src/main/java/com/emotion/controller/AuthController.java` exposes `/auth/login`, `/auth/refreshToken`, and token validation endpoints.
|
||||
- `t_user` already has `phone`, `avatar`, `nickname`, `third_party_id`, and `third_party_type`, which can support WeChat binding without a required schema change.
|
||||
- The current backend issues JWT plus Redis-backed access/refresh tokens through `AuthServiceImpl`.
|
||||
- The mini program manifest already has a WeChat appid: `wxaf2eaba72d28f0e4`.
|
||||
|
||||
@@ -167,7 +167,7 @@ if '//' in remote_conf or '..' in remote_conf:
|
||||
|
||||
### 不包含(明确排除)
|
||||
|
||||
- 不修改其他 deploy.py 子脚本(backend-single/web/web-admin/life-script)
|
||||
- 不修改其他 deploy.py 子脚本(server/web/web-admin/life-script)
|
||||
- 不改 `ssh_command()` / `run_ssh_args()` 底层
|
||||
- 不增加 `--dry-run` 模式
|
||||
- 不改 nginx 配置文件本身
|
||||
|
||||
@@ -51,7 +51,7 @@ alter table emotion_museum.t_user_profile
|
||||
|
||||
### 2. 实体类扩展
|
||||
|
||||
文件:`backend-single/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
文件:`server/src/main/java/com/emotion/entity/UserProfile.java`
|
||||
|
||||
新增字段(与数据库列名通过 `@TableField` 映射):
|
||||
|
||||
@@ -67,15 +67,15 @@ alter table emotion_museum.t_user_profile
|
||||
|
||||
以下三个文件新增相同 5 个字段:
|
||||
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- `backend-single/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- `backend-single/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
- `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileCreateRequest.java`
|
||||
- `server/src/main/java/com/emotion/dto/request/userprofile/UserProfileUpdateRequest.java`
|
||||
- `server/src/main/java/com/emotion/dto/response/userprofile/UserProfileResponse.java`
|
||||
|
||||
`UserProfileResponse` 中的 `birthday` 使用 `@JsonFormat(pattern = "yyyy-MM-dd")` 注解,与现有日期字段保持一致。
|
||||
|
||||
### 4. Service 层
|
||||
|
||||
文件:`backend-single/src/main/java/com/emotion/service/impl/UserProfileServiceImpl.java`
|
||||
文件:`server/src/main/java/com/emotion/service/impl/UserProfileServiceImpl.java`
|
||||
|
||||
无需改动。`BeanUtils.copyProperties` 和 `BeanUtil.copyProperties(..., CopyOptions.create().setIgnoreNullValue(true))` 会自动映射同名字段。
|
||||
|
||||
@@ -186,10 +186,10 @@ registrationData: {
|
||||
| 文件 | 改动类型 | 说明 |
|
||||
|------|----------|------|
|
||||
| `sql/emotion_museum_ddl.sql` | 追加 | 5 个 ALTER TABLE 语句 |
|
||||
| `backend-single/.../entity/UserProfile.java` | 修改 | 新增 5 个字段 |
|
||||
| `backend-single/.../request/.../UserProfileCreateRequest.java` | 修改 | 新增 5 个字段 |
|
||||
| `backend-single/.../request/.../UserProfileUpdateRequest.java` | 修改 | 新增 5 个字段 |
|
||||
| `backend-single/.../response/.../UserProfileResponse.java` | 修改 | 新增 5 个字段 |
|
||||
| `server/.../entity/UserProfile.java` | 修改 | 新增 5 个字段 |
|
||||
| `server/.../request/.../UserProfileCreateRequest.java` | 修改 | 新增 5 个字段 |
|
||||
| `server/.../request/.../UserProfileUpdateRequest.java` | 修改 | 新增 5 个字段 |
|
||||
| `server/.../response/.../UserProfileResponse.java` | 修改 | 新增 5 个字段 |
|
||||
| `mini-program/src/services/userProfile.js` | 修改 | 双向转换增加 5 个字段 |
|
||||
| `mini-program/src/stores/app.js` | 修改 | `registrationData` 扩展 |
|
||||
| `mini-program/src/pages/main/RecordView.vue` | 修改 | 去除写死默认值和 sampleEvents |
|
||||
|
||||
@@ -90,14 +90,14 @@ purpose: 修复微信小程序登录 text/plain 错误(Spring RestTemplate 默
|
||||
|
||||
| # | 文件 | 操作 | 行数估算 | 目的 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | `backend-single/src/main/java/com/emotion/config/RestTemplateConfig.java` | **重写** | 40 行 | 改用 `RestTemplateBuilder` + `BufferingClientHttpRequestFactory`:设置 User-Agent、超时、加 StringHttpMessageConverter、加 LoggingInterceptor、加 ErrorHandler |
|
||||
| 2 | `backend-single/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | **重写** | 90 行 | `code2Session` 改用 `ResponseEntity<String>` + Jackson 二次解析;捕获所有失败场景的 raw body |
|
||||
| 3 | `backend-single/src/main/resources/application.yml` | **修改** | 2 行 | 删除 `app-id` 和 `app-secret` 硬编码默认值(`${ENV_VAR:}` 空兜底) |
|
||||
| 4 | `backend-single/src/main/java/com/emotion/exception/WechatApiException.java` | **新增** | 30 行 | 业务异常类(code 用 HTTP 风格状态码 + rawBody) |
|
||||
| 5 | `backend-single/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java` | **新增** | 60 行 | ClientHttpRequestInterceptor:记录 method/URL/status(INFO)+ 脱敏 body(DEBUG) |
|
||||
| 6 | `backend-single/src/main/java/com/emotion/config/WechatResponseErrorHandler.java` | **新增** | 30 行 | 4xx/5xx 不抛 RestClientException,重写 `hasError()` 显式声明 |
|
||||
| 7 | `backend-single/src/main/java/com/emotion/exception/GlobalExceptionHandler.java` | **修改** | 25 行 | 新增 `@ExceptionHandler(WechatApiException.class)` 返回脱敏的友好提示 |
|
||||
| 8 | `backend-single/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java` | **不动** | 0 行 | **保持纯 DTO**(rawBody 不放在 DTO,只在异常对象和日志中) |
|
||||
| 1 | `server/src/main/java/com/emotion/config/RestTemplateConfig.java` | **重写** | 40 行 | 改用 `RestTemplateBuilder` + `BufferingClientHttpRequestFactory`:设置 User-Agent、超时、加 StringHttpMessageConverter、加 LoggingInterceptor、加 ErrorHandler |
|
||||
| 2 | `server/src/main/java/com/emotion/service/impl/WechatMiniProgramServiceImpl.java` | **重写** | 90 行 | `code2Session` 改用 `ResponseEntity<String>` + Jackson 二次解析;捕获所有失败场景的 raw body |
|
||||
| 3 | `server/src/main/resources/application.yml` | **修改** | 2 行 | 删除 `app-id` 和 `app-secret` 硬编码默认值(`${ENV_VAR:}` 空兜底) |
|
||||
| 4 | `server/src/main/java/com/emotion/exception/WechatApiException.java` | **新增** | 30 行 | 业务异常类(code 用 HTTP 风格状态码 + rawBody) |
|
||||
| 5 | `server/src/main/java/com/emotion/interceptor/WechatApiLoggingInterceptor.java` | **新增** | 60 行 | ClientHttpRequestInterceptor:记录 method/URL/status(INFO)+ 脱敏 body(DEBUG) |
|
||||
| 6 | `server/src/main/java/com/emotion/config/WechatResponseErrorHandler.java` | **新增** | 30 行 | 4xx/5xx 不抛 RestClientException,重写 `hasError()` 显式声明 |
|
||||
| 7 | `server/src/main/java/com/emotion/exception/GlobalExceptionHandler.java` | **修改** | 25 行 | 新增 `@ExceptionHandler(WechatApiException.class)` 返回脱敏的友好提示 |
|
||||
| 8 | `server/src/main/java/com/emotion/dto/wechat/WechatCodeSessionResponse.java` | **不动** | 0 行 | **保持纯 DTO**(rawBody 不放在 DTO,只在异常对象和日志中) |
|
||||
|
||||
**总计**:2 重写 + 3 新增 + 3 修改,约 280 行 Java + 2 行 YAML。
|
||||
|
||||
@@ -472,7 +472,7 @@ GlobalExceptionHandler.handleWechatApiException
|
||||
|
||||
| 步骤 | 命令 / 操作 | 期望 |
|
||||
|---|---|---|
|
||||
| 1. mvn 编译 | `mvn clean install -pl :backend-single -am -DskipTests` | 退出码 0 |
|
||||
| 1. mvn 编译 | `mvn clean install -pl :server -am -DskipTests` | 退出码 0 |
|
||||
| 2. 部署 | `python deploy.py backend` | 部署成功,重启 backend |
|
||||
| 3. **WAF 验证**(修后 P1-7) | `tail -f /data/logs/emotion-museum/emotion-single.log \| grep "WeChatAPI"` | 看到 `[WeChatAPI] ---> GET https://api.weixin.qq.com/sns/jscode2session ...` 请求日志;`<--- 200` 响应日志 |
|
||||
| 4. **UA 验证** | `grep "User-Agent" /data/logs/emotion-museum/emotion-single.log` | 看到 `Mozilla/5.0`(不再是 `Java/17.0.x`) |
|
||||
|
||||
@@ -50,7 +50,7 @@ purpose: 明确小程序编辑资料页"性格标签"与"兴趣爱好"两个模
|
||||
|
||||
### 实体与数据库
|
||||
|
||||
`backend-single` 模块:
|
||||
`server` 模块:
|
||||
|
||||
- `UserProfile` 实体新增两个字段:
|
||||
|
||||
@@ -205,7 +205,7 @@ if (后端返回的 personalityTagLibrary 为空) {
|
||||
|
||||
### 修改文件
|
||||
|
||||
**后端(`backend-single/src/main/java/com/emotion/`):**
|
||||
**后端(`server/src/main/java/com/emotion/`):**
|
||||
|
||||
- `entity/UserProfile.java`:新增 `personalityTagLibrary`、`hobbyLibrary` 两个 `String` 字段。
|
||||
- `controller/UserProfileController.java`:无需新增接口,入参 DTO 通过 `UserProfileUpdateRequest` / `UserProfileCreateRequest` 已支持新字段透传。
|
||||
@@ -213,7 +213,7 @@ if (后端返回的 personalityTagLibrary 为空) {
|
||||
- `dto/request/userprofile/UserProfileCreateRequest.java`:同上。
|
||||
- `dto/response/userprofile/UserProfileResponse.java`:新增 `personalityTagLibrary`、`hobbyLibrary` 两个 `String` 字段。
|
||||
- `service/UserProfileService.java` 与 `service/impl/UserProfileServiceImpl.java`:无业务逻辑改动,字段通过 MyBatis-Plus 自动映射持久化。
|
||||
- 数据库迁移脚本:`backend-single/src/main/resources/db/migration/2026-06-24-user-profile-tag-library.sql`,遵循现有 `YYYY-MM-DD-描述.sql` 命名约定。
|
||||
- 数据库迁移脚本:`server/src/main/resources/db/migration/2026-06-24-user-profile-tag-library.sql`,遵循现有 `YYYY-MM-DD-描述.sql` 命名约定。
|
||||
|
||||
**前端(`mini-program/`):**
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
author: peanu
|
||||
created_at: 2026-06-27
|
||||
purpose: 将 backend-single 目录重命名为 server 的设计方案
|
||||
---
|
||||
|
||||
# 设计:backend-single 重命名为 server
|
||||
|
||||
## 背景
|
||||
|
||||
项目中的后端服务目录当前名为 `backend-single`,该名称是早期"单体服务"阶段的遗留命名。随着项目演进,这个名称已不再准确反映实际情况,且在日常开发中较长不便。将其重命名为更简洁的 `server` 可提升可读性和一致性。
|
||||
|
||||
## 决策
|
||||
|
||||
- **目录重命名**:`backend-single/` → `server/`,使用 `git mv` 保留 Git 历史
|
||||
- **Maven artifactId**:`backend-single` → `server`,JAR 文件随之变为 `server-1.0.0.jar`
|
||||
- **历史文档**:`docs/superpowers/` 下的历史设计和计划文档也全部更新,保持一致性
|
||||
|
||||
## 变更范围
|
||||
|
||||
### 第一层:目录和构建
|
||||
|
||||
| 操作 | 目标 |
|
||||
|------|------|
|
||||
| `git mv backend-single server` | 目录重命名 |
|
||||
| `server/pom.xml` artifactId | `backend-single` → `server` |
|
||||
| `server/pom.xml` name | `backend-single` → `server` |
|
||||
| `server/deploy.py` JAR_NAME | `backend-single-1.0.0.jar` → `server-1.0.0.jar` |
|
||||
| `server/deploy.sh` JAR_NAME | 同上 |
|
||||
|
||||
### 第二层:部署脚本
|
||||
|
||||
| 文件 | 变更内容 |
|
||||
|------|---------|
|
||||
| 根目录 `deploy.py` | 3 处 `backend-single` → `server`(注释、路径拼接、cwd) |
|
||||
| 根目录 `deploy.sh` | 4 处 `backend-single` → `server`(注释、存在性检查、cd) |
|
||||
| `.gitignore` | `backend-single/backend.err` → `server/backend.err` |
|
||||
|
||||
### 第三层:项目文档
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `CLAUDE.md` | 项目结构树(1 处)+ 后端命令段落(3 处) |
|
||||
| `AGENTS.md` | 同 CLAUDE.md 的结构和命令段落 |
|
||||
| `README.md` | 项目结构树(1 处) |
|
||||
| `server/部署说明.md` | 自引用路径 |
|
||||
| `快速部署参考.md` | 4 处部署路径引用 |
|
||||
| `一键部署说明.md` | 5 处部署路径引用 |
|
||||
|
||||
### 第四层:前端和其他代码
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `web/src/types/auth.ts` | 第 5 行注释引用 |
|
||||
| `web-admin/AI_CONFIG_TEST_SAVE_FEATURE.md` | 4 处后端文件路径引用 |
|
||||
|
||||
### 第五层:历史文档批量替换
|
||||
|
||||
约 20 个 `docs/superpowers/specs/` 和 `docs/superpowers/plans/` 下的 `.md` 文件,将其中所有 `backend-single` 替换为 `server`。
|
||||
|
||||
## 不在范围内
|
||||
|
||||
- **Java 包名**:`com.emotion` 保持不变,不在本次重命名范围内
|
||||
- **数据库名/表名**:不涉及数据库变更
|
||||
- **`dev-services.py`**:该脚本自动发现 Spring Boot 服务,不直接引用 `backend-single` 字符串,无需修改
|
||||
- **`deploy-server.sh`**:已存在的文件,不包含 `backend-single` 引用
|
||||
|
||||
## 验证标准
|
||||
|
||||
1. `mvn clean install -DskipTests` 在 `server/` 目录下编译成功
|
||||
2. `server/deploy.py backend` 能正确找到 JAR 并部署
|
||||
3. 根目录 `deploy.py` 能正确调用 `server/deploy.py`
|
||||
4. 项目中不再有任何 `backend-single` 字符串残留(grep 验证)
|
||||
5. Git 历史完整保留(`git log --follow server/pom.xml` 能看到旧历史)
|
||||
Reference in New Issue
Block a user