项目:xyMall | 版本:v1.2 | 生成日期:2026-10-06 | 依据:源码分析
本文是文档集(00~20 共 21 篇)的收尾工具篇,解决三个"查"的问题:查词(第一节的术语表——业务术语与技术术语各一张表,术语、一句话定义、系统展开详述的篇目);查文件(第二节的源码文件与篇目反向索引——拿到一个文件名不知道读哪篇时按图索骥,与《07-模块详解》的"从需求找模块"正向索引互补);查路径(第三节的按任务阅读路径——五种典型任务各自的最短文档序列与理由)。三节共同的前提假设是:读者不需要按顺序通读 21 篇,而是带着问题来、带着路径走。全部篇目引用格式为《编号-简称》;术语定义追求"读表即懂",机制细节一律指向详述篇目而非在本文重复。
先把 21 篇的分工压成一张速览图,方便在任何一篇里迷路时找回全局:00 是总览与阅读指引,01 讲架构分层与设计决策的现状,02 讲三端页面与交互,03 讲接口契约的设计意图,04 讲 40 张表的数据模型,05 把五条核心链路展开到方法级,06 是部署运行手册,07 是逐模块字典,08 是安全防线专题,09 是测试资产逐类解析,10 是性能账与瓶颈预测,11 是五个二次开发 SOP,12 是排障手册与决策树,13 是技术债务台账与演进路线,14 是配置逐文件走读,15 是全部端点速查;本批新增的五篇里,16 考古"决策为什么与代价",17 盘点依赖全景与健康度,18 逐段走读三个代表性文件,19 给核心接口的可复制示例集,本文(20)是术语、文件索引与任务路径。三层粒度由此形成:总览层(00/01)建全局认知、专题层(0217)按域深挖、工具层(1820)供随手查证。
术语表的收词标准有三条:其一,收"在这个代码库里有明确定义或特定含义"的词——泛业界词汇(如"微服务""限流")只在它被本项目赋予了特定约束时收录(如"单实例假设""四级漏斗");其二,收"新人第一次读到会卡住"的词——判断方法是该词是否在本项目有与字面理解不同的含义(如"懒迁移"不是"延迟迁移任务"、"资格复用"不是"资格回收");其三,业务术语与技术术语分表,因为两类读者的检索方向相反:业务侧读者从"秒杀怎么防超卖"进入,技术侧读者从"HEXISTS 是什么"进入。"首次出现篇目"列的语义是该术语获得系统阐述的篇目(多数术语会在 00 的总览里提前露面,但表中所指是能读完即懂的最低篇目);同一术语在多篇展开时,取机制细节最完整的一篇,其余以"见《0X》"互相引用。
| 术语 | 定义 | 首次出现篇目 |
|---|---|---|
| SKU | 商品规格行(goods_sku 表):同一商品的不同规格(如"黑色 标准")各有独立价格与库存;无 SKU 的历史数据回落主商品价与主表库存 | 《04-数据模型》 |
| 秒杀 | 限时限量抢购玩法:独立库存 seckill_stock、每人每场限一件(uk_seckill_user 唯一键)、四级漏斗防护 | 《05-核心流程》流程四 |
| PLUS 会员 | 付费会员体系(user_membership):余额购买月费,结算享受折扣(默认 95 折),价格与折扣后台热调 | 《07-模块详解》6.5 |
| 满减 | 门槛减免活动(promotion_full):券后金额达到 threshold 减 discount,多档取最优 | 《07-模块详解》6.2 |
| 优惠券三型 | coupon_type:0 满减型(面额直减)/ 1 折扣型(goods_value 存折扣百分比,88=8.8 折)/ 2 兑换码型;折扣型暂不支持限定范围(D13) | 《04-数据模型》3.4 |
| 积分抵扣 | 下单勾选 usePoints 后按"1 元 = rate 积分"抵现,上限为券后金额的 max-percent(默认 50%);签到攒积分 | 《05-核心流程》2.2 节③ |
| 拼团 | 开团/参团玩法(group_buy/group_team/group_member 三表):成团人数满员自动成团,到期未成自动退款 | 《07-模块详解》6.4 |
| 预售定金 | 预售商品按定金下单(presale_deposit 或默认 20%),未到 presale_start 拒绝下单,订单项标"【预售定金】" | 《05-核心流程》2.2 节③ |
| 成长值 | 支付成功按实付百分比(默认 10%)累加的会员指标(user.growth),前端映射 V1~V5 等级 | 《07-模块详解》9.3 |
| 运费规则 | 全站统一两条规则(非模板制):满 shipping.free.threshold(默认 99 元)包邮,否则收 shipping.fee(默认 10 元);后台 sys_config 热调 | 《06-部署运行》3.3 |
| 注册礼包 | 新用户注册赠送:优惠券(V4 种子)与余额(user.register.balance,V7 后修正为 0 防资损) | 《13-技术债务与演进建议》 |
| 四层优惠 | 下单金额计算的固定顺序契约:券 → 满减 → 积分 → PLUS;顺序即金额语义,新增营销层必须声明位次 | 《05-核心流程》2.2 节③ |
| 售后双通道 | 已支付订单的两条退款路径:用户售后审核退款(closeByAfterSale)与拼团未成退款(refundAndClose),CAS 互斥防重复退款 | 《05-核心流程》3.2 节末段 |
| 拆单包裹 | 订单可拆多个包裹分别发货(order_package,订单级演示能力,未对接仓配) | 《07-模块详解》5.5 |
| 看完又看 | 推荐位:同品类下他人最近的浏览记录(基于 browse_log),商品详情页底部展示 | 《07-模块详解》9.1 |
| 站内 IM 客服 | 用户与管理员的实时会话(WebSocket /ws/im + im_message 落库),"WS 管实时、HTTP 管历史"双通道 | 《01-系统架构》第 7 节 |
| 迟到支付 | 订单超时关闭后钱才到账:不做复活,按 (order_no, reason) 流水幂等退款至余额 | 《12-FAQ与故障排查》条目 27 |
| 术语 | 定义 | 首次出现篇目 |
|---|---|---|
| 单实例假设 | 系统刻意保持单副本部署(ADR-1):登录失败计数、幂等键、sys_config 缓存等进程内状态使多副本即数据不一致,扩容前必须外置 | 《13-技术债务与演进建议》D4/D5 |
| Redis 可降级设计 | 全部 Redis 访问点 try/catch 降级、DB 永远兜底的工程约定(ADR-2):Redis 挂掉只降性能不坏正确性 | 《01-系统架构》第 1 节 |
| 三重兜底 | 超时关单的三条独立触发路径:Redis ZSet 延迟队列(5s 轮询)→ DB 轮询 Job(60s)→ 详情读路径惰性触发;互不依赖、全部幂等 | 《05-核心流程》流程三 |
| 延迟队列 | 基于 Redis ZSet(orders:pay-timeout,score=支付截止毫秒)的定时任务实现,关单成功才出队,拒绝引入 MQ(ADR-6) | 《05-核心流程》流程三 |
| Lua 预扣(三脚本) | 秒杀挡量层:DEDUCT/RELEASE/WARM 三个 Lua 脚本原子完成"判重 + 判库存 + 记流水 + 扣减"及回补、预热 | 《05-核心流程》流程四 |
| 四级漏斗 | 秒杀请求的层层收口:接口限流(USER 5 次/2s)→ 分布式锁(同用户同场次)→ Lua 预扣 → DB 条件扣减;《10》按"限流→锁→Lua"称三级漏斗,口径差异见两篇各自语境 | 《15-接口全量参考》6.2 |
| 幽灵流水 | 进程在"Redis 预扣成功、DB 建单前"崩溃留下的孤儿流水;由对账 Job 交叉核验 seckill_success 后 release 清理,抢购侧有即时自愈分支 | 《05-核心流程》流程四第 ⑥ 步 |
| 对账纠偏 | SeckillReconcileJob 每分钟以 DB 权威覆写 Redis 库存 + 清理幽灵流水;是"Redis 与 DB 不互信"架构的最终裁决机制 | 《05-核心流程》流程四第 ⑥ 步 |
| CAS 条件更新 | 带旧值条件的 UPDATE(如 where stock >= n),影响行数为 0 即并发失败;全系统防超卖/防重复流转的权威闸门 | 《05-核心流程》2.2 节⑥ |
| 状态机 | OrderStateMachine 的合法迁移表:订单七态(0/1/2/3/4/-1/-2)间只允许 10 条迁移,所有流转先过它再 CAS | 《01-系统架构》第 6 节 |
| 幂等键 | 请求头 X-Idempotency-Key:下单防重的用户可见契约,同键 24h 内重放返回首次订单号;进程内实现,扩容前需外置 | 《05-核心流程》2.2 节② |
| 空值缓存 | 商品不存在/下架时写入 60 秒的 "N" 标记,恶意扫描不存在的 ID 不击穿 DB;上架有最长 1 分钟不可见窗口 | 《10-性能设计与优化》2.1 |
| 延迟双删 | 缓存失效策略:立即删 + 2 秒后守护线程二次删,清掉"删除→并发读回填旧值"脏窗口;重启丢失由 TTL 兜底 | 《10-性能设计与优化》2.1 |
| 分布式锁 | @DistributeLock(scene, keyExpression) 注解式 Redis 锁:SpEL 取参生成 key,Lua 比对释放,Redis 异常自动降级放行 | 《01-系统架构》2.3 节 |
| 懒迁移 | BCrypt 升级策略(ADR-4):新口令一律 BCrypt,旧"盐+MD5"密文在登录成功校验通过后原位替换,零停机完成哈希算法升级 | 《05-核心流程》1.2 节③ |
| 会话版本 | user.token_version(claims 中 ver):改密/注销 +1 使全部已签发 token 立即失效,与登出黑名单构成双失效通道 | 《05-核心流程》1.2 节④ |
| fail-closed | 安全开关默认取"拒绝"侧的设计纪律(ADR-11):模拟支付代码默认 false、验证码旁路仅 dev profile 声明,漏配即关闭而非开放 | 《08-安全与权限设计》第 7 节 |
| 归属校验 | "查改删必带 userId"的横向越权防线:getOwnedOrder(orderNo, userId) 式写法散布各 Service 第一步 | 《08-安全与权限设计》3.1 节 |
| 审计脱敏 | AuditParamMasker 对九类敏感字段(password 等)正则替换为 *** 后异步落 admin_operation_log,超 2000 字符截断 | 《08-安全与权限设计》3.3 节 |
| receive_seq 防超领 | 优惠券领取并发防线:(user_id, coupon_id, receive_seq) 唯一键 + 领取计数,并发超领由 DuplicateKeyException 兜底 | 《07-模块详解》6.1 |
| 资格复用 | seckill_success.state=-1(已取消)的行被条件更新复用而非删除重插——唯一键约束下"限购记录永不消失"的巧解 | 《07-模块详解》6.3 |
| 金额分制 | 全库金额一律 INT(分)存储与运算(ADR-9),杜绝浮点精度事故;展示层随身携带分转元 | 《00-项目总览》第 5 节 |
| Flyway 门禁 | schema 只走 db/migration/V1~V8 版本化迁移 + validate-on-migrate 漂移即拒启(ADR-7,源自 V3 事故);新权限点必须进迁移种子 | 《04-数据模型》第 2 节 |
| 逻辑删除 | MyBatis-Plus 全局 is_deleted 软删(业务主体表),流水/日志/关联表物理保留;查询自动过滤 | 《04-数据模型》第 6 节 |
| 绞杀式迁移 | 微服务演进方法论(ADR-10):网关保持路径契约不变,按服务逐个平移切流、观察、删旧代码(M0→M8 分阶段可回滚) | 《13-技术债务与演进建议》第 8 节 |
| 演示级边界 | AGENTS.md 明示的四项"勿在生产叙事引用"实现:物流轨迹演示数据、多商户无分账、ES 未实测、拆单包裹订单级 | 《13-技术债务与演进建议》第 7 节 |
下表收录 50 个关键文件(同族小文件合并为一行),路径相对 mall/;"详述篇目"给出该文件机制展开最深的篇目(多篇并列时第一个为首选)。查文件的另一半路径是正向的:《07-模块详解》按模块列文件清单,《15-接口全量参考》按端点列 Controller。
| 文件路径 | 职责 | 详述篇目 |
|---|---|---|
xy-mall/pom.xml | 父 POM:版本仲裁、framework 模块管理 | 《17-依赖全景》 |
xy-mall/AGENTS.md | 工程约定、坑位清单、二次开发检查清单 | 《00-项目总览》 |
xy-mall/start.sh | 启动脚本:source .env 并 exec java -jar | 《06-部署运行》 |
framework/framework-core/.../result/R.java | 统一响应体 R{code,message,data} | 《01-系统架构》 |
framework/framework-core/.../security/JwtUtil.java | JWT 签发/验签(HS256) | 《08-安全与权限设计》 |
framework/framework-core/.../security/PasswordUtil.java | BCrypt 主路径 + 旧 MD5 兼容分流 | 《16-决策记录ADR》ADR-4 |
framework/framework-core/.../security/LoginFailGuard.java + security/CaptchaCodeService.java | 登录失败锁定与验证码校验(含 dev 0000 旁路) | 《05-核心流程》流程一 |
framework/framework-web/.../handler/GlobalExceptionHandler.java | 异常→HTTP/body 映射规则 | 《03-接口设计》第 8 节 |
framework/framework-web/.../resolver/LoginUserArgumentResolver.java | 登录四重校验与 userId 注入 | 《05-核心流程》1.2 节⑤ |
framework/framework-web/.../filter/RateLimitFilter.java + aop/RateLimitAspect.java | 全局 IP 限流(300/min,429)与 @RateLimiter 接口级滑窗限流 | 《10-性能设计与优化》2.7 |
framework/framework-web/.../aop/WebLogAspect.java | 接口耗时观测 + Micrometer 指标 | 《10-性能设计与优化》2.8 |
framework/framework-web/.../config/WebConfig.java | CORS、/upload/** 静态映射、文档 404 | 《12-FAQ与故障排查》条目 3 |
framework/framework-cache/.../lock/DistributeLockAspect.java | @DistributeLock 注解式分布式锁 | 《10-性能设计与优化》2.3 |
framework/framework-cache/.../security/TokenBlacklistServiceImpl.java | 登出 token 黑名单(TTL 对齐剩余寿命) | 《08-安全与权限设计》2.2 节 |
server/.../modules/order/service/impl/OrderServiceImpl.java | 订单核心:下单/支付/关单/退款/回补(895 行) | 《18-代码走读实录》走读一 |
server/.../modules/order/controller/OrderController.java | 下单入口(限流/幂等/模拟支付开关) | 《15-接口全量参考》4.2 |
server/.../modules/order/service/OrderDelayQueue.java | Redis ZSet 延迟队列(第一重兜底) | 《05-核心流程》流程三 |
server/.../modules/order/service/OrderLazyCloseTrigger.java | 读路径惰性关单(第三重兜底) | 《05-核心流程》流程三 |
server/.../modules/order/job/OrderTimeoutJob.java | DB 轮询超时关单(第二重兜底) | 《05-核心流程》流程三 |
server/.../modules/order/statemachine/OrderStateMachine.java | 订单状态机合法迁移表 | 《09-测试与质量保障》2.3 |
server/.../modules/order/service/IdempotencyService.java | 进程内幂等键执行器(D4 债务点) | 《13-技术债务与演进建议》D4 |
server/.../modules/order/service/PointsCalculator.java | 积分抵扣纯函数(8 用例锚定) | 《09-测试与质量保障》2.1 |
server/.../modules/seckill/service/impl/SeckillServiceImpl.java | 抢购主链路 grab/补偿/onOrderClosed | 《18-代码走读实录》走读二 |
server/.../modules/seckill/service/SeckillStockRedisService.java | 秒杀 Lua 三脚本(预扣/回补/预热) | 《16-决策记录ADR》ADR-5 |
server/.../modules/seckill/job/SeckillReconcileJob.java | 每分钟对账纠偏 + 幽灵流水清理 | 《12-FAQ与故障排查》案例二 |
server/.../modules/goods/service/GoodsCacheService.java | 详情缓存/空值缓存/延迟双删 | 《18-代码走读实录》引用段 |
server/.../modules/goods/service/impl/GoodsServiceImpl.java | 商品查询门面(分页/详情/联想/榜单) | 《07-模块详解》4.1 |
server/.../modules/coupon/service/CouponCalculator.java | 券金额计算纯函数(5 用例) | 《09-测试与质量保障》2.2 |
server/.../modules/user/service/impl/UserServiceImpl.java | 注册/登录/懒迁移/注销 | 《05-核心流程》流程一 |
server/.../modules/pay/service/AlipayPayService.java | 支付宝签名/验签/统一下单 | 《05-核心流程》2.2 节④ |
server/.../modules/pay/controller/PayController.java | 支付宝四端点(create/page/return/notify) | 《19-数据契约与示例集》第 9 节 |
server/.../modules/aftersale/service/impl/AfterSaleServiceImpl.java | 售后申请/审核退款(锁定实付) | 《07-模块详解》5.4 |
server/.../modules/admin/controller/AdminGoodsController.java | 后台商品管理(SKU 聚合/双删触发) | 《05-核心流程》流程五 |
server/.../modules/admin/aop/AdminOperationLogAspect.java(含 AuditParamMasker) | 写操作审计与入参脱敏 | 《08-安全与权限设计》3.3 节 |
server/.../modules/config/service/SysConfigService.java(含 Impl) | 15 个运营参数键 + 进程缓存 | 《14-配置与环境详解》第 5 节 |
server/.../modules/upload/service/UploadStorageService.java | MinIO 上传/校验链/本地回落/迁移 | 《07-模块详解》8.3 |
server/.../modules/im/ws/ImWebSocketHandler.java(含 Config) | WS 会话管理/鉴权/消息落库 | 《01-系统架构》第 7 节 |
server/.../modules/es/service/EsGoodsIndexService.java | ES REST 直连(无客户端依赖) | 《07-模块详解》4.4 |
server/src/main/resources/application.yml(含 dev/prod profile) | 主配置与两 profile 的差异全集 | 《14-配置与环境详解》第 2 节 |
server/src/main/resources/db/migration/V1__init.sql | 28 张核心表 + RBAC/参数种子 | 《04-数据模型》第 2 节 |
xy-mall/docker-compose.yml | 五服务一键编排 | 《06-部署运行》4.1 |
xy-mall/scripts/e2e-smoke.py + scripts/load-seckill.py | P0 端到端冒烟断言链与秒杀压测(发布验收两件套) | 《09-测试与质量保障》第 4 节 |
xy-mall-web/src/api/request.ts | axios 封装(R 解包/401 去重) | 《01-系统架构》4.1 节 |
xy-mall-web/src/views/CheckoutView.vue | 结算页金额试算(四层优惠镜像) | 《18-代码走读实录》走读三 |
xy-mall-web/src/views/GoodsDetailView.vue | 商品详情页(1062 行最重组件) | 《02-页面设计》1.2 节 |
xy-mall-web/src/composables/usePublicConfig.ts | 公共配置单例缓存(前后端同源) | 《02-页面设计》第 5 节 |
xy-mall-web/e2e/gui-smoke.mjs | 浏览器 GUI 冒烟(playwright-core) | 《09-测试与质量保障》4.2 |
xy-mall-admin/src/views/Layout.vue | 后台外壳(菜单按 hasPerm 过滤) | 《02-页面设计》第 2 节 |
xy-mall-admin/src/directives/perm.ts | v-perm 按钮级权限指令 | 《07-模块详解》9.2 |
xy-mall-admin/src/views/GoodsListView.vue | 商品管理(SKU 子表/wangEditor/上传) | 《02-页面设计》2.2 节 |
五条路径覆盖接手者最高频的任务场景。每条给出文档序列与"为什么是这个顺序",序列中的篇目均可按需跳过——路径是主干不是清单。
序列:《12-FAQ与故障排查》→《15-接口全量参考》→《07-模块详解》→《05-核心流程》→《14-配置与环境详解》→《09-测试与质量保障》。
从《12》开始而非从代码开始,是这条路径最重要的建议:本文的方法论(四层报错面分辨、"设计如此"排除法、中文文案全局检索)能在一小时内解决多数报障,条目表格的"现象"列直接就是 grep 关键词;三个端到端案例示范了完整走查过程。定位到接口后用《15》核对端点契约与"典型错误"清单(排除已知业务校验),再按《07》的模块索引打开对应文件——模块内"关键文件表"把阅读范围缩小到两三个类。若 bug 涉及金额/库存/状态流转,必须回《05》读对应流程的机制叙事,避免"修好现象破坏守恒"(例如关单路径漏调回补)。配置类问题(环境变量、sys_config 值、profile)查《14》的全量清单;修复完成后按《09》的命令矩阵跑对应层的测试与冒烟(改动的层决定跑哪层),最后对照《13》确认是否触碰已知债务边界(D4 幂等、D6 支付开关),必要时把新现象回填进《12》。
序列:《11-扩展开发指南》→《04-数据模型》→《05-核心流程》→《16-决策记录ADR》→《03-接口设计》→《09-测试与质量保障》→《19-数据契约与示例集》。
《11》的 SOP 四(新增营销玩法模块)是主线 SOP:从建表、模块八件套、接入下单计算链到前台展示,五步全部带代码骨架与登记点清单;开工前先读《04》确认新表要遵守的建表模板与既有优惠字段(promo_discount/points_deduct 等),再读《05》流程二吃透"四层优惠顺序即契约"与"关单回补对称守恒"两条铁律——营销玩法的正确性 90% 取决于"只算不扣"的位置和取消/超时路径的对称返还。《16》的 ADR-9(金额分制/后端裁决)与 ADR-1(单实例事务内一致性)解释了这些铁律从何而来,避免"照抄却不知为何"。对外契约按《03》的风格登记新端点(资源名词复数 + R 统一响应),计算逻辑抽纯函数并按《09》的 PointsCalculatorTest 形态补边界用例(门槛差一分、多档取最优、上限截断);最后在《19》补该玩法的请求/响应/错误三件套示例。若玩法涉及限时限量(类秒杀),加读《16》ADR-5 与《10》2.3 节——直接复用 SeckillStockRedisService 的脚本骨架而非重造。
序列:《08-安全与权限设计》→《14-配置与环境详解》→《06-部署运行》→《13-技术债务与演进建议》→《09-测试与质量保障》→《12-FAQ与故障排查》。
上线检查的核心是"演示便利开关不要带进生产":《08》第 7 节的十二行配置清单(模拟支付、充值开关、CORS、验证码旁路、actuator、文档暴露、IM Origin、IP 白名单)是逐项核对的主表;《14》第 7 节的"新环境十分钟自检"与第 6A 节的配置变更规程是它的操作化版本,第 4 节的环境变量全量清单用于核对 .env 注入。《06》给出标准部署链路(compose 五服务、nginx 职责、备份恢复、升级回滚),其中 4.2 节"单实例假设边界"决定容量预期。《13》第 23 节的部署类债务(D1 admin 账号种子缺失、D3 默认 dev profile、D6 模拟支付演示语义)是三处最易漏的上线堵点;第 8 节路线图的"短期清单"可作为上线前的收尾工单。发布验收按《09》执行:3.3 节)贴在手边,第 2 节的两张决策树用于快速归因启动失败与运行期异常。mvn test 全绿 → e2e-smoke.py(部署五变量全检)→ load-seckill.py(若有大促场次);上线后前三天把《12》的日志与调试入口清单(3.1
序列:《10-性能设计与优化》→《12-FAQ与故障排查》→《05-核心流程》→《16-决策记录ADR》→《13-技术债务与演进建议》。
《10》第 1 节先校准预期(单机预算、正确性优先),第 2 节把每项已实施的优化对到实现文件与"性能账"——排查时按"请求进入的先后"对照 2.8 节的分层消耗图定位是限流、缓存、业务还是 DB 层的问题;第 3 节的六个瓶颈预测(MySQL 写吞吐、Druid 默认池、进程内限流上限、对账窗口、深分页、IM 单机)按"最先暴露"排序,多数线上慢查询能对号入座。定位到现象后用《12》3.1~3.4 节的日志入口拿到证据(慢 SQL 日志、慢接口 warn、Micrometer 指标),机制层回《05》确认该链路的正常形态(例如延迟队列 5s 轮询本身就是秒级时延,不是故障)。改动决策前读《16》:ADR-2(降级设计)解释为什么 Redis 挂掉会变慢但不坏数据,ADR-6 解释为什么没有 MQ,避免提出与定位冲突的"优化"方案。确认瓶颈真实存在后,《13》第 8 节的路线图与《MICROSERVICE-SHARDING-PLAN.md》决定是"单机内继续调优"(Druid 参数化、热点行拆段,《10》第 4 节建议 1/2)还是启动状态外置——后者必须先完成 D4/D5,否则多副本即不一致。
序列:《00-项目总览》→《06-部署运行》→《01-系统架构》→《04-数据模型》→《18-代码走读实录》→《07-模块详解》。
这条路径把"跑起来"放在"读明白"之前:《00》建立项目是什么的认知后,直接按《06》把前后端全部跑通并注册一个账号走完一笔交易——动手产生的疑问(为什么验证码要 0000、为什么图片 404、为什么下单要选地址)是最好的阅读动机。跑通后回《01》理解分层与框架层职责,再读《04》把核心十张表的结构记住(后续读任何 Service 都在对这些表做增改查)。第三天的重心交给《18》:三个文件的逐段走读会把《05》的五条链路落到"具体怎么写"的粒度,比先读流程叙事再读代码少绕一轮。第一周的后半段把《07》当字典翻一遍目录(不求记住,求知道"有什么"),配合 mvn test 与 scripts/e2e-smoke.py 各跑一遍建立"改动的回归底线"意识。第一周末的自检标准:能不看文档说出"下单事务里依次发生了哪七件事"、"Redis 挂掉后秒杀行为如何变化"、"新权限点为什么要进 Flyway 种子"——答得出这三问,就具备了在《11》任一 SOP 下开工的基础。
五条路径之外的两个补充:面试准备路径已在《00-项目总览》第 6 节给出(00 → 01 → 05 → 08),配合《16》的决策考古("为什么不用微服务"是高频追问)与《18》的三段走读(可复述的代码细节);文档维护纪律——任何一篇与源码冲突时以源码为准并回填修订(《13》D11/D15 是前车之鉴),新增端点/配置/测试时按《15》《14》《09》各自的登记惯例同步,21 篇的分工边界以各篇第 0/1 节的自我定位描述为准。若本文术语表或索引出现缺漏,修复方式是直接补行而非另起一篇——工具篇的价值在于"始终是最新的一张地图"。