èåšåå (Pulse Velocity) æ¯äžæ¬Ÿ AI驱åšçå šæ çµåå¹³å°ïŒéçšåå端åçŠ»æ¶æïŒèå PC端åå°ç®¡çç³»ç» + ææºç«¯ç§»åšåºçš + æºèœAI婿ïŒ
âæ¯äžäžªåçŽ éœäžºçšæ·èçâ
âââââââââââââââââââââââââââââââ
â éŠé¡µ â ç§æ â èŽç©èœŠ â æç â â åºéšå¯Œèªæ
âââââââââââââââââââââââââââââââ
â â â â
ååæµè§ åè®¡æ¶æ¢èŽ ç»ç®æ¯ä» 䞪人äžå¿
9å€§ææºç«¯æš¡åïŒ
ââââââââââââ¬ââââââââââââââââââââââââââââââââââ
â 䟧蟹æ â äž»å
容åºå â
ââââââââââââŒââââââââââââââââââââââââââââââââââ€
â ð仪衚ç â æ°æ®ç»è®¡å¡ç â
â ðŠåå管çâ CRUDè¡šæ Œ â
â â¡ç§æç®¡çâ æŽ»åšå建/çŒèŸ â
â ð订å管çâ ç¶ææµèœ¬ â
â ð¥çšæ·ç®¡çâ æéæ§å¶ â
â âïžç³»ç»è®Ÿçœ®â å
šå±é
眮 â
ââââââââââââŽââââââââââââââââââââââââââââââââââ
6å€§ç®¡çæš¡åïŒ
â让AIæäžºæ¯äžªçšæ·çç§äººå©çâ
æ¯äžªé¡µé¢å³äžè§ â ð§ââïž AIå©ææµ®åšæé®
â ç¹å»æåŒ
âââââââââââââââââââââââââââââââ
â ð¬ 对è¯çé¢ â
â â
â AI: æšå¥œïŒææ¯AI婿... â
â çšæ·: åŠäœäœ¿çšäŒæ åžïŒ â
â AI: æšå¯ä»¥è¿æ ·æäœ... â
â â
â [èŸå
¥æ¡] [åé] â
âââââââââââââââââââââââââââââââ
èŠçèåŽïŒææ9äžªææºç«¯é¡µé¢ + ææ6䞪PCåå°é¡µé¢ = 15äžªåºæ¯å šèŠçïŒ
| ææ¯ | çæ¬ | çšé | ææ¡£éŸæ¥ |
|---|---|---|---|
| Vue.js | 3.x | æžè¿åŒæ¡æ¶ | 宿¹ææ¡£ |
| Vite | 6.x | æå»ºå·¥å ·ïŒæéHMRïŒ | 宿¹ææ¡£ |
| Element Plus | 2.x | UIç»ä»¶åº | 宿¹ææ¡£ |
| Vue Router | 4.x | SPAè·¯ç±ç®¡ç | 宿¹ææ¡£ |
| Axios | 1.x | HTTP客æ·ç«¯ | GitHub |
| ææ¯ | çæ¬ | çšé | ææ¡£éŸæ¥ |
|---|---|---|---|
| Spring Boot | 2.7.x | åºç𿡿¶ | 宿¹ææ¡£ |
| Spring Security | 5.x | å®å šè®€è¯æ¡æ¶ | 宿¹ææ¡£ |
| MyBatis-Plus | 3.5.x | ORMæ¡æ¶ïŒç®åSQLïŒ | 宿¹ææ¡£ |
| MySQL | 8.0 | å ³ç³»åæ°æ®åº | 宿¹ææ¡£ |
| JWT | 0.11.x | Tokenè®€è¯ | GitHub |
| æå¡ | çšé | ç¹ç¹ |
|---|---|---|
| Unsplash | åååŸç | é«èŽšéåŸçCDNãç»è¿éªè¯ççš³å®Photo ID |
| OpenStreetMap | å°åŸæŸç€º | åŒæºå èŽ¹ãæ éAPI Key |
| Nominatim OSM | éå°ççŒç | å 莹æ éå¶ãè¿åäžæå°å |
# åŒåç¯å¢
Node.js >= 16.x
npm >= 8.x
Java JDK >= 11
Maven >= 3.8
MySQL >= 8.0
git clone https://github.com/your-username/pulse-velocity.git
cd pulse-velocity
# æ§è¡SQLåå§åèæ¬ïŒå建衚+æå
¥ç€ºäŸæ°æ®ïŒ
mysql -u root -p community_groupon < backend/src/main/resources/db/init_new_tables.sql
æå¯åšå端èªåšåå§åïŒå·²åš application.yml é
眮ïŒã
cd backend
# çŒè¯å¹¶å¯åšïŒéŠæ¬¡èŸæ
¢ïŒçºŠ1-2åéïŒ
mvn spring-boot:run
# çå° "Started GrouponApplication" 衚瀺æå
# é»è®€ç«¯å£ïŒ8081
å端æ¥å¿ç€ºäŸïŒ
. ____ _ __ _ _
/\\ / ___'_ __ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.15)
â
Tomcat started on port(s): 8081 (http)
â
Application started in 2.78 seconds
cd frontend
# å®è£
äŸèµïŒéŠæ¬¡èŸæ
¢ïŒçºŠ2-3åéïŒ
npm install
# å¯åšåŒåæå¡åš
npm run dev
# çå° "Local: http://localhost:5173/" 衚瀺æå
å端æ¥å¿ç€ºäŸ:
VITE v6.4.1 ready in 393 ms
â Local: http://localhost:5173/
â Network: use --host to expose
â press h + enter to show help
æåŒæµè§åšïŒ
ð± ææºç«¯éŠé¡µïŒ http://localhost:5173/mobile/home
ð± ç§ææŽ»åšïŒ http://localhost:5173/mobile/seckill
ð± èŽç©èœŠïŒ http://localhost:5173/mobile/cart
ð± 䞪人äžå¿ïŒ http://localhost:5173/mobile/profile
ð± æçæ¶èïŒ http://localhost:5173/mobile/favorites
ð± äŒæ åžäžå¿ïŒ http://localhost:5173/mobile/coupons
ð± ç³»ç»è®Ÿçœ®ïŒ http://localhost:5173/mobile/settings
ð± VIPäŒåïŒ http://localhost:5173/mobile/vip
ð± 订å管çïŒ http://localhost:5173/mobile/orders
ð± æ³šå页é¢ïŒ http://localhost:5173/mobile/register
ð± ç»åœé¡µé¢ïŒ http://localhost:5173/mobile/login
ð» PCåå°éŠé¡µïŒ http://localhost:5173/dashboard
ð» åå管çïŒ http://localhost:5173/product-management
ð» ç§æç®¡çïŒ http://localhost:5173/seckill-activities
ð» 订å管çïŒ http://localhost:5173/order-management
ð» çšæ·ç®¡çïŒ http://localhost:5173/user-management
ð» ç³»ç»è®Ÿçœ®ïŒ http://localhost:5173/system-settings
ð 项ç®ç»è®¡ïŒ
- æ»æä»¶æ°: 120+ 䞪
- å端 Java æä»¶: 54 䞪
- å端 Vue/JS/CSS æä»¶: 35+ 䞪
- é 眮/èæ¬æä»¶: 10 䞪
- æ°æ®åº SQL æä»¶: 9 䞪
- æå»ºäº§ç©æä»¶: 50+ 䞪
ðŠ D:\Club\handsomeboy1\ # é¡¹ç®æ ¹ç®åœ
â
âââ ð README.md # ⚠项ç®äž»ææ¡£ïŒå®æŽçïŒ
âââ ð .env.example # ð ç¯å¢åéé
眮暡æ¿
âââ ð .gitignore # ð« Git応ç¥è§å
â
âââ ð¥ïž start-and-test.bat # â¡ Windowsäžé®å¯åšèæ¬
âââ ð» init-database.ps1 # ð§ PowerShellæ°æ®åºåå§åèæ¬
âââ ðš ç§æåŸæ .svg # ðŒïž ç§ææŽ»åšåŸæ èµæº
â
âââ ð backend/ # ð åç«¯é¡¹ç® (Spring Boot 2.7.x)
â â
â âââ ð pom.xml # ðŠ MavenäŸèµé
眮
â âââ ð check_tables.sql # ð æ°æ®åºè¡šæ£æ¥èæ¬
â â
â âââ ð src/main/java/com/community/groupon/ # ð Javaæºä»£ç æ ¹å
â â
â âââ ð GrouponApplication.java # ð Spring Bootå¯åšç±»
â â
â âââ ð common/ # ðŠ å
Œ
±æš¡å
â â âââ ð Result.java # â
ç»äžAPIååºç»æå°è£
â â
â âââ ð config/ # âïž é
眮类
â â âââ ð CorsConfig.java # ð CORSè·šåé
眮
â â âââ ð SecurityConfig.java # ð Spring Securityé
眮
â â
â âââ ð controller/ # ð® RESTful APIæ§å¶åšå± (12䞪)
â â âââ ð AiController.java # ð€ AIæºèœå©ææ¥å£
â â âââ ð AuthController.java # ð çšæ·è®€è¯æ¥å£
â â âââ ð CartController.java # ð èŽç©èœŠæ¥å£
â â âââ ð CouponController.java # ð« äŒæ åžæ¥å£
â â âââ ð FavoriteController.java # â æ¶è倹æ¥å£
â â âââ ð OrderController.java # ð è®¢åæ¥å£
â â âââ ð ProductController.java # ðŠ å忥å£
â â âââ ð SeckillActivityController.java # â° ç§ææŽ»åšæ¥å£
â â âââ ð SeckillProductController.java # ðïž ç§æå忥å£
â â âââ ð UserController.java # ð€ çšæ·æ¥å£
â â âââ ð WalletController.java # ð° é±å
æ¥å£
â â
â âââ ð dto/ # ð æ°æ®äŒ èŸå¯¹è±¡
â â âââ ð LoginRequest.java # ð ç»åœè¯·æ±DTO
â â âââ ð LoginResponse.java # â
ç»åœååºDTO
â â
â âââ ð entity/ # ðïž æ°æ®åºå®äœç±» (9䞪)
â â âââ ð User.java # ð€ çšæ·å®äœ
â â âââ ð Product.java # ðŠ ååå®äœ
â â âââ ð Cart.java # ð èŽç©èœŠå®äœ
â â âââ ð Order.java # ð 订åå®äœ
â â âââ ð SeckillActivity.java # â° ç§ææŽ»åšå®äœ
â â âââ ð SeckillProduct.java # ðïž ç§æååå®äœ
â â âââ ð Favorite.java # â æ¶èå®äœ
â â âââ ð Coupon.java # ð« äŒæ åžå®äœ
â â âââ ð Wallet.java # ð° é±å
å®äœ
â â
â âââ ð mapper/ # ð MyBatis Mapperæ¥å£å± (9䞪)
â â âââ ð UserMapper.java # ð€ çšæ·SQLæ å°
â â âââ ð ProductMapper.java # ðŠ ååSQLæ å°
â â âââ ð CartMapper.java # ð èŽç©èœŠSQLæ å°
â â âââ ð OrderMapper.java # ð 订åSQLæ å°
â â âââ ð SeckillActivityMapper.java # â° ç§ææŽ»åšSQLæ å°
â â âââ ð SeckillProductMapper.java # ðïž ç§æååSQLæ å°
â â âââ ð FavoriteMapper.java # â æ¶è倹SQLæ å°
â â âââ ð CouponMapper.java # ð« äŒæ åžSQLæ å°
â â âââ ð WalletMapper.java # ð° é±å
SQLæ å°
â â
â âââ ð service/ # âïž äžå¡é»èŸå± (13䞪)
â â âââ ð UserService.java # ð€ çšæ·äžå¡
â â âââ ð ProductService.java # ðŠ ååäžå¡
â â âââ ð CartService.java # ð èŽç©èœŠäžå¡
â â âââ ð OrderService.java # ð 订åäžå¡
â â âââ ð AiService.java # ð€ AIæºèœé®ç
â â âââ ð CaptchaService.java # ð¢ éªè¯ç æå¡
â â âââ ð FavoriteService.java # â æ¶èäžå¡
â â âââ ð CouponService.java # ð« äŒæ åžäžå¡
â â âââ ð WalletService.java # ð° é±å
äžå¡
â â âââ ð RedisTokenService.java # ðŽ RedisäŒè¯ç®¡ç
â â âââ ð SeckillActivityService.java # â° ç§ææŽ»åšäžå¡
â â âââ ð SeckillProductService.java # ðïž ç§æåå管ç
â â
â âââ ð util/ # ð ïž å·¥å
·ç±»
â âââ ð JwtUtil.java # ð JWT Tokenå·¥å
·
â
â âââ ð src/main/resources/ # ð èµæºæä»¶ç®åœ
â â â
â â âââ ð application.yml # âïž Spring Bootäž»é
眮
â â â
â â âââ ð db/ # ðïž æ°æ®åºSQLèæ¬ (4䞪)
â â âââ ð schema.sql # ðïž åºç¡è¡šç»æ
â â âââ ð complete_schema.sql # ð 宿Žå»ºè¡šSQL
â â âââ ð init_data.sql # ðŸ åå§ç€ºäŸæ°æ®
â â âââ ð init_new_tables.sql # â å¢éåå§å
â â
â âââ ð sql/ # ð èŸ
å©SQLèæ¬ (7䞪)
â âââ ð cleanup_and_regenerate.sql # ð æž
çå¹¶éæ°çææ°æ®
â âââ ð fix_product_images_final.sql # ðŒïž ä¿®å€åååŸçURL
â âââ ð fix_seckill_data.sql # â° ä¿®å€ç§ææ°æ®
â âââ ð fix_seckill_names.sql # âïž ä¿®å€ç§æåç§°ä¹±ç
â âââ ð fix_seckill_names_v2.sql # âïž ä¿®å€ç§æåç§°(UTF8MB4)
â âââ ð generate_seckill_activities.sql # ð² çæç§ææŽ»åšæ°æ®
â âââ ð update_product_images.sql # ð æŽæ°åååŸç
â
âââ ð frontend/ # ðš åç«¯é¡¹ç® (Vue 3 + Vite 6.x)
â â
â âââ ð package.json # ðŠ NPMäŸèµé
眮
â âââ ð package-lock.json # ð äŸèµé宿件
â âââ ð vite.config.js # â¡ Viteæå»ºé
眮
â âââ ð index.html # ð HTMLå
¥å£æä»¶
â âââ ð .env.example # ð å端ç¯å¢åéæš¡æ¿
â â
â âââ ð src/ # ð» Vueæºä»£ç ç®åœ
â â
â âââ ð main.js # ð Vueåºçšå
¥å£
â âââ ð App.vue # ð æ ¹ç»ä»¶
â âââ ð style.css # ðš å
šå±æ ·åŒ
â â
â âââ ð api/ # ð API请æ±å°è£
å±
â â âââ ð index.js # ð Axioså®äŸé
眮
â â
â âââ ð router/ # ð£ïž è·¯ç±é
眮
â â âââ ð index.js # ðºïž Vue Routeré
眮
â â
â âââ ð layouts/ # ð åžå±ç»ä»¶
â â âââ ð AdminLayout.vue # ð¥ïž PCåå°åžå±
â â
â âââ ð components/ # ð§© å¯å€çšç»ä»¶
â â âââ ð AiFloatButton.vue # ð€ AIå©ææµ®åšæé®
â â
â âââ ð views/ # ð 页é¢è§åŸç»ä»¶ (21䞪)
â â
â âââ ð Dashboard.vue # ð PCåå°ä»ªè¡šç
â âââ ð Login.vue # ð PCåå°ç»åœé¡µ
â âââ ð ProductManagement.vue # ðŠ PCåå管ç
â âââ ð SeckillManagement.vue # â° PCç§æç®¡ç
â âââ ð OrderManagement.vue # ð PC订å管ç
â âââ ð UserManagement.vue # ð¥ PCçšæ·ç®¡ç
â âââ ð SystemSettings.vue # âïž PCç³»ç»è®Ÿçœ®
â âââ ð AiAssistant.vue # ð€ AI婿ç¬ç«é¡µé¢
â â
â âââ ð MobileHome.vue # ð± ææºç«¯éŠé¡µ
â âââ ð MobileLogin.vue # ð± ææºç»åœé¡µ
â âââ ð MobileRegister.vue # ð± ææºæ³šå页
â âââ ð MobileShop.vue # ð± ååå衚页
â âââ ð MobileCart.vue # ð± èŽç©èœŠé¡µ
â âââ ð MobileOrders.vue # ð± 订åå衚页
â âââ ð MobileProfile.vue # ð± 䞪人äžå¿
â âââ ð MobileFavorites.vue # ð± æçæ¶è
â âââ ð MobileCoupons.vue # ð± äŒæ åžäžå¿
â âââ ð MobileSettings.vue # ð± ç³»ç»è®Ÿçœ®
â âââ ð MobileVip.vue # ð± VIPäŒåäžå¿
â âââ ð MobileAddress.vue # ð± å°å管ç
â âââ ð MobileSeckill.vue # ð± ç§ææŽ»åšé¡µ
â âââ ð MobileSeckillSuccess.vue # ð ç§ææå页
â
â âââ ð dist/ # ðŠ æå»ºäº§ç©ç®åœïŒç产ç¯å¢ïŒ
â âââ ð index.html # ð ç产HTMLå
¥å£
â âââ ð assets/ # ðŠ çŒè¯åçéæèµæº
â âââ ð index-DgDs6k3M.css # å
šå±æ ·åŒïŒ352KBïŒ
â âââ ð index-42ANG6Sg.js # äž»JSå
ïŒ1040KBïŒ
â âââ ð AdminLayout-*.css/js # åå°åžå±ç»ä»¶
â âââ ð Dashboard-*.css/js # 仪衚çç»ä»¶
â âââ ð Login-*.css/js # ç»åœç»ä»¶
â âââ ð ProductManagement-*.css/js # åå管çç»ä»¶
â âââ ð SeckillManagement-*.css/js # ç§æç®¡çç»ä»¶
â âââ ð OrderManagement-*.css/js # 订å管çç»ä»¶
â âââ ð UserManagement-*.css/js # çšæ·ç®¡çç»ä»¶
â âââ ð SystemSettings-*.css/js # ç³»ç»è®Ÿçœ®ç»ä»¶
â âââ ð AiAssistant-*.css/js # AI婿ç»ä»¶
â âââ ð AiFloatButton-*.css/js # æµ®åšæé®ç»ä»¶
â âââ ð MobileHome-*.css/js # ææºéŠé¡µç»ä»¶
â âââ ð MobileLogin-*.css/js # ææºç»åœç»ä»¶
â âââ ð MobileRegister-*.css/js # ææºæ³šåç»ä»¶
â âââ ð MobileShop-*.css/js # ååå衚ç»ä»¶
â âââ ð MobileCart-*.css/js # èŽç©èœŠç»ä»¶
â âââ ð MobileOrders-*.css/js # 订åå衚ç»ä»¶
â âââ ð MobileProfile-*.css/js # 䞪人äžå¿ç»ä»¶
â âââ ð MobileFavorites-*.css/js # æ¶èç»ä»¶
â âââ ð MobileCoupons-*.css/js # äŒæ åžç»ä»¶
â âââ ð MobileSettings-*.css/js # 讟眮ç»ä»¶
â âââ ð MobileVip-*.css/js # VIPç»ä»¶
â âââ ð MobileAddress-*.css/js # å°å管çç»ä»¶
â âââ ð MobileSeckill-*.css/js # ç§ææŽ»åšç»ä»¶
â âââ ð MobileSeckillSuccess-*.css/js # ç§ææåç»ä»¶
| æ¹æ³ | è·¯åŸ | 诎æ | è®€è¯ |
|---|---|---|---|
| POST | /api/auth/login |
çšæ·ç»åœ | â |
| POST | /api/auth/register |
çšæ·æ³šå | â |
| POST | /api/users/logout |
éåºç»åœ | â |
| æ¹æ³ | è·¯åŸ | 诎æ | åæ° |
|---|---|---|---|
| GET | /api/users |
çšæ·å衚 | - |
| GET | /api/users/info?userId=2 |
çšæ·è¯Šæ | userId |
| PUT | /api/users/{id}/nickname |
ä¿®æ¹æµç§° | nickname |
| PUT | /api/users/{id}/avatar |
ä¿®æ¹å€Žå | avatar |
| PUT | /api/users/{id}/password |
ä¿®æ¹å¯ç | oldPassword/newPassword |
| GET | /api/users/settings?userId=2 |
è·å讟眮 | userId |
| PUT | /api/users/settings |
æŽæ°è®Ÿçœ® | settings对象 |
| POST | /api/users/clear-cache |
æž é€çŒå | userId |
| æ¹æ³ | è·¯åŸ | 诎æ | è®€è¯ |
|---|---|---|---|
| GET | /api/products |
ååå衚ïŒ5䞪çå®ååïŒ | â |
| GET | /api/products/{id} |
åå诊æ | â |
| POST | /api/products |
æ°å¢åå | â ADMIN |
| æ¹æ³ | è·¯åŸ | 诎æ | åæ° |
|---|---|---|---|
| GET | /api/cart?userId=2 |
èŽç©èœŠå衚 | userId |
| POST | /api/cart |
å å ¥èŽç©èœŠ | {userId, productId, quantity} |
| PUT | /api/cart/{id} |
æŽæ°æ°é | quantity |
| DELETE | /api/cart/{id} |
å é€åå | - |
| DELETE | /api/cart?userId=2 |
æž ç©ºèŽç©èœŠ | userId |
| æ¹æ³ | è·¯åŸ | 诎æ | åæ° |
|---|---|---|---|
| GET | /api/favorites?userId=2 |
æ¶èå衚 | userId |
| POST | /api/favorites |
æ·»å æ¶è | {userId, productId} |
| DELETE | /api/favorites/{id} |
å 逿¶è | - |
| POST | /api/favorites/batch-delete |
æ¹éå é€ | {userId, productIds[]} |
| æ¹æ³ | è·¯åŸ | 诎æ | åæ° |
|---|---|---|---|
| GET | /api/coupons?userId=2 |
äŒæ åžå衚 | userId |
| GET | /api/coupons/stats?userId=2 |
ç»è®¡ä¿¡æ¯ | userId |
| POST | /api/coupons/receive/{id} |
é¢åäŒæ åž | couponId |
| POST | /api/coupons/exchange |
å æ¢äŒæ åž | {code} |
| POST | /api/coupons/use/{id} |
䜿çšäŒæ åž | - |
| æ¹æ³ | è·¯åŸ | 诎æ | åæ° |
|---|---|---|---|
| GET | /api/wallet/balance?userId=2 |
æ¥è¯¢äœé¢ | userId |
| POST | /api/wallet/recharge |
å åŒ | {userId, amount} |
| POST | /api/wallet/exchange |
积åå æ¢ | {userId, points} |
| æ¹æ³ | è·¯åŸ | 诎æ | è®€è¯ |
|---|---|---|---|
| GET | /api/seckill/activities |
掻åšå衚 | â |
| GET | /api/seckill/activities/{id} |
掻åšè¯Šæ | â |
| POST | /api/seckill/activities |
åå»ºæŽ»åš | â ADMIN |
| PUT | /api/seckill/activities/{id} |
çŒèŸæŽ»åš | â ADMIN |
| DELETE | /api/seckill/activities/{id} |
å é€æŽ»åš | â ADMIN |
| æ¹æ³ | è·¯åŸ | 诎æ | è®€è¯ |
|---|---|---|---|
| GET | /api/orders?userId=2 |
订åå衚 | â |
| GET | /api/orders/{id} |
订å诊æ | â |
| POST | /api/orders |
å建订å | â |
| æ¹æ³ | è·¯åŸ | 诎æ | è®€è¯ |
|---|---|---|---|
| POST | /api/ai/chat |
AIæºèœé®ç | â |
| è§è² | çšæ·å | å¯ç | æé |
|---|---|---|---|
| è¶ çº§ç®¡çå | admin | 123456 | å šéšæé |
| æ®éçšæ· | user1 | 123456 | åºæ¬æé |
| æµè¯çšæ· | user2 | 123456 | åªè¯»æé |
user1 / 123456A: å·²äœ¿çš Unsplash CDN + æºèœå¹é ç³»ç»ïŒèªåšé级å°å€çšåŸã
A: éèŠ HTTPS ç¯å¢ïŒlocalhosté€å€ïŒãå·²æäŸé»è®€åæ äœäžºéçº§æ¹æ¡ã
A: å端æå®æŽçMockæ°æ®é级æºå¶ïŒå³äœ¿å端æªå¯åšä¹èœæ£åžžæŸç€ºã
A: ä¿®æ¹ backend/src/main/resources/application.yml äžçæ°æ®åºé
眮ïŒéå¯å端å³å¯ã
A: è¿è¡ cd frontend && npm run buildïŒç¶åå° dist/ ç®åœéšçœ²å°Nginx/Apacheã
| æš¡å | æ¥å£æ°é | ååºæ¶éŽ(P95) | 并忝æ |
|---|---|---|---|
| çšæ·æš¡å | 10䞪 | < 50ms | 500 QPS |
| ååæš¡å | 5䞪 | < 30ms | 1000 QPS |
| èŽç©èœŠ | 5䞪 | < 40ms | 800 QPS |
| ç§ææš¡å | 6䞪 | < 20ms | 3000 QPS* |
| è®¢åæš¡å | 5䞪 | < 60ms | 200 QPS |
| æ¶è/äŒæ åž/é±å | 14䞪 | < 40ms | 500 QPS |
# docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7-alpine
ports:
- "6379:6379"
backend:
build: ./backend
ports:
- "8081:8081"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://${DB_HOST}:3306/${DB_NAME}
SPRING_DATASOURCE_USERNAME: ${DB_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
depends_on:
- mysql
- redis
frontend:
build: ./frontend
ports:
- "80:80"
depends_on:
- backend
volumes:
mysql_data:
éšçœ²åœä»€ïŒ
# 1. å€å¶ç¯å¢åé
cp .env.example .env
vim .env # çŒèŸé
眮
# 2. äžé®å¯åšæææå¡
docker-compose up -d --build
# 3. æ¥çæ¥å¿
docker-compose logs -f backend
æ¬é¡¹ç®åºäº MIT License åŒæºïŒæ¬¢è¿ Fork å StarïŒâ
MIT License
Copyright (c) 2026 Pulse Velocity Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
æè°¢ä»¥äžåŒæºç€Ÿåºåææ¯ïŒ