# eshop-class1-group5 **Repository Path**: grade24-fullstack-class1/eshop-class1-group5 ## Basic Information - **Project Name**: eshop-class1-group5 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-07-21 - **Last Updated**: 2026-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 叮咚电子商城(DingDong Shop)暑期企业级综合项目实战 > 班级:____ 组号:____ 组名:____ ## 一、项目简介 本项目为软件技术专业暑期企业级综合项目实战,目标是以小组协作方式,在 **4 周** 内完成一个功能完整、可演示、可部署的 **电子商城系统**,全程模拟企业真实研发流程:需求分析 → 系统设计 → 编码实现 → 测试 → 部署 → 验收答辩。 项目开发硬约束:所有功能默认采用 TDD 流程;当任务指令存在模糊、不确定或冲突时,必须先沟通澄清并迭代出目标范围、契约、测试、实现和验收流程后再编码。完整规则见 `docs/README.md`。 ## 二、小组成员与分工(模块负责制) 本项目采用 **模块负责制**:不按前后端分工,每人认领业务模块,独立负责该模块的 **数据库表 + 后端接口 + 前端页面** 完整链路。 | 姓名 | 学号 | 角色 | 负责模块(全栈) | |------|------|------|------------------| | | | 组长/架构员 | 项目脚手架、登录鉴权、公共组件、集成联调 + 1 个小模块 | | | | 模块负责人 | 商品模块(分类/列表/搜索/详情 + 商家端商品管理) | | | | 模块负责人 | 订单 + 支付模块(含商家端订单履约) | | | | 模块负责人 | 用户 + 购物车模块(含后台用户管理) | | | | 模块负责人 | 测试 + 部署 + 选做功能 | > 分工规则详见 `docs/00-项目要求/项目要求.md` 第三节,模块难度权重与考核挂钩。 > 4 人组时,测试与部署职责分摊到各模块负责人,选做功能由认领者负责。 ## 三、技术栈 | 分层 | 技术选型 | 版本 | |------|----------|------| | 前端 | Vue 3 + TypeScript + Vite + Pinia + Vue Router + Element Plus | Vue 3.5 / Vite 7 | | 后端 | ASP.NET Core Web API + EF Core + JWT + Swagger | .NET 8 / EF Core 8 | | 数据库 | PostgreSQL + Npgsql | PostgreSQL 16+ | | 部署 | Docker Compose + Nginx(第 4 周完成) | 待部署模块补充 | 项目品牌统一为 **叮咚商城**,交付买家端、商家工作台和平台管理端三个入口。当前课程范围采用单店经营模型:设置一个可登录的商家角色,不做商家入驻、多店铺拆单、抽佣和结算;这不会影响后续扩展为多商户平台。 ## 四、仓库目录结构 ``` ├── README.md # 项目总说明、目录地图和启动方式 ├── .env.example # 环境变量示例,真实密码不提交 ├── .config/dotnet-tools.json # dotnet-ef 本地工具版本 ├── docs/ # 全组共享文档 │ ├── 00-项目要求/ # 教师发布的要求和验收标准,勿改 │ ├── 01-需求文档/ # 叮咚商城产品需求文档(PRD) │ ├── 02-设计文档/ # 架构、数据库、接口、组长接入指南 │ ├── 03-测试文档/ # 测试计划、用例、缺陷和报告 │ ├── 04-会议记录/ # 小组会议纪要 │ ├── 05-总结答辩/ # 项目总结报告和答辩材料 │ ├── 06-成员任务书/ # 下发给四位成员及其 AI 的任务书、思维导图 │ └── 07-模块交付记录/ # 每个模块完成后的交付记录 ├── reports/ # 日报周报 │ ├── daily/ # 每人每天一份日报 │ └── weekly/ # 组长汇总周报 ├── frontend/ # 唯一 Vue3 前端工程:买家端、商家端、平台端都在这里 │ ├── package.json # 前端依赖和 npm 命令 │ ├── src/ │ │ ├── api/ # 唯一 Axios 调用入口和各模块 API │ │ ├── components/ # 可复用业务组件和公共组件 │ │ ├── layouts/ # StoreLayout、MerchantLayout、AdminLayout │ │ ├── router/modules/ # 各成员新增自己的路由文件,自动加载 │ │ ├── stores/ # Pinia 公共状态,如登录状态 │ │ ├── styles/ # 全局样式和叮咚商城视觉变量 │ │ ├── types/ # 前端 TypeScript 类型 │ │ ├── views/ # 页面:买家、merchant、admin 三类页面 │ │ └── __tests__/ # 前端 Vitest 测试 │ └── vite.config.ts # Vite 配置 └── backend/ # 唯一 ASP.NET Core 解决方案 ├── EShop.sln # 后端解决方案入口 ├── sql/ # 手写、可重复执行的演示数据 SQL;不是 Migration │ └── README.md # SQL 文件命名和提交规则 ├── src/ │ ├── EShop.Domain/ # 实体、枚举、领域常量 │ ├── EShop.Application/ # DTO、请求、服务接口和业务服务 │ ├── EShop.Infrastructure/ # AppDbContext、EF 配置、JWT、数据库实现 │ │ └── Data/Migrations/ # EF Core 生成的迁移:仅组长最终生成 │ └── EShop.Api/ # Controller、Program.cs、中间件、Swagger └── tests/EShop.Tests/ # 后端 xUnit 测试 ``` ### SQL 文件在哪里? - **当前没有 `schema.sql`**:本项目使用 EF Core Code First,数据库表结构由实体和 `IEntityTypeConfiguration` 生成,最终迁移文件由组长放在 `backend/src/EShop.Infrastructure/Data/Migrations/`。 - **成员手写 SQL 放在 `backend/sql/`**:只放可重复执行的演示数据,例如 `product-demo-data.sql`;不要在这里手写或提交 Migration。 - **数据库设计说明在 `docs/02-设计文档/数据库设计.md`**:改表之前先改这里,再写实体和配置。 ## 五、关键时间节点(4 周) | 阶段 | 时间 | 交付物 | |------|------|--------| | 第 1 周 | 需求与设计 | 需求规格说明书、架构/数据库/接口设计 | | 第 2 周 | 核心功能开发 | 用户、商品模块可演示 | | 第 3 周 | 完整功能开发 | 购物车、订单、支付(模拟)模块可演示;选做功能与挑战模块开发 | | 第 4 周 | 测试、部署与答辩 | 测试报告、挑战模块压测/边界验证、部署上线、总结报告、答辩 | ## 六、Git 协作规范 1. 主分支 `master` 只存放可运行代码,禁止直接 push。 2. `develop` 为日常集成分支,禁止未经 Pull Request 直接 push。 3. 功能开发使用 `feature/功能名` 分支,完成后经交叉 Code Review 合并到 `develop`。 4. 提交信息格式:`: <描述>`,type 取值:`feat` `fix` `refactor` `docs` `test` `chore`。 5. **每人每天至少一次有效提交**,提交记录将作为个人考核依据。 6. **交叉 Code Review**:每人的功能分支由相邻模块负责人审查后方可合并(审查人在合并说明中留名)。 ## 七、如何开始 1. 全组阅读 `docs/00-项目要求/` 和个人任务书。 2. 安装 .NET 8 SDK、Node.js 22、PostgreSQL 16+。 3. 执行 `dotnet tool restore` 和 `dotnet restore backend/EShop.sln`。 4. 执行 `npm ci --prefix frontend`。 5. 根据 `.env.example` 和后端开发配置示例设置本地数据库及 JWT。 6. 后端执行 `dotnet run --project backend/src/EShop.Api`。 7. 前端执行 `npm --prefix frontend run dev`。 8. Swagger 地址:`http://localhost:5080/swagger`;前端地址:`http://localhost:5173`。 9. 详细接入流程见 `docs/02-设计文档/组长公共骨架与模块接入指南.md`。