[{"data":1,"prerenderedAt":1325},["ShallowReactive",2],{"content-query-3Dd4IUYiPY":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"body":13,"_type":1319,"_id":1320,"_source":1321,"_file":1322,"_stem":1323,"_extension":1324},"\u002Fit\u002F001","it",false,"","Claude Code 全局配置文档","配置 Claude Code 全局配置文档 ~\u002Fclaude\u002FCLAUDE.md","2026-06-14",[12],"Claude Code",{"type":14,"children":15,"toc":1294},"root",[16,25,31,87,97,103,196,202,209,262,268,309,315,340,346,374,380,410,416,422,498,504,547,553,559,580,723,729,829,835,844,1027,1033,1213,1219,1255,1261],{"type":17,"tag":18,"props":19,"children":21},"element","h2",{"id":20},"一身份与工作上下文",[22],{"type":23,"value":24},"text","一、身份与工作上下文",{"type":17,"tag":26,"props":27,"children":28},"p",{},[29],{"type":23,"value":30},"我是一名以前端技术栈为核心的全栈开发者，工作内容涵盖：",{"type":17,"tag":32,"props":33,"children":34},"ul",{},[35,47,57,67,77],{"type":17,"tag":36,"props":37,"children":38},"li",{},[39,45],{"type":17,"tag":40,"props":41,"children":42},"strong",{},[43],{"type":23,"value":44},"前端",{"type":23,"value":46},"：HTML \u002F CSS \u002F JavaScript \u002F TypeScript，主框架为 Vue 3（Composition API），少量 React",{"type":17,"tag":36,"props":48,"children":49},{},[50,55],{"type":17,"tag":40,"props":51,"children":52},{},[53],{"type":23,"value":54},"跨端开发",{"type":23,"value":56},"：UniApp、微信小程序（原生）",{"type":17,"tag":36,"props":58,"children":59},{},[60,65],{"type":17,"tag":40,"props":61,"children":62},{},[63],{"type":23,"value":64},"后端服务",{"type":23,"value":66},"：Node.js，主要框架为 Express.js \u002F Koa.js \u002F NestJS",{"type":17,"tag":36,"props":68,"children":69},{},[70,75],{"type":17,"tag":40,"props":71,"children":72},{},[73],{"type":23,"value":74},"数据库",{"type":23,"value":76},"：MySQL（关系型）、MongoDB（文档型）",{"type":17,"tag":36,"props":78,"children":79},{},[80,85],{"type":17,"tag":40,"props":81,"children":82},{},[83],{"type":23,"value":84},"产品设计",{"type":23,"value":86},"：Figma UI\u002FUX 交互设计、图片素材处理（压缩 \u002F 裁切 \u002F 格式转换）、设计规范维护",{"type":17,"tag":26,"props":88,"children":89},{},[90,95],{"type":17,"tag":40,"props":91,"children":92},{},[93],{"type":23,"value":94},"默认语言",{"type":23,"value":96},"：中文交流，代码注释可视情况使用中文或英文",{"type":17,"tag":18,"props":98,"children":100},{"id":99},"二核心行为准则non-negotiable",[101],{"type":23,"value":102},"二、核心行为准则（NON-NEGOTIABLE）",{"type":17,"tag":104,"props":105,"children":106},"ol",{},[107,117,127,146,156,166,176,186],{"type":17,"tag":36,"props":108,"children":109},{},[110,115],{"type":17,"tag":40,"props":111,"children":112},{},[113],{"type":23,"value":114},"优先阅读现有代码",{"type":23,"value":116},"：修改前必须先理解现有代码结构和风格，不随意引入新的依赖或模式",{"type":17,"tag":36,"props":118,"children":119},{},[120,125],{"type":17,"tag":40,"props":121,"children":122},{},[123],{"type":23,"value":124},"最小化改动",{"type":23,"value":126},"：只修改与任务直接相关的部分，不做\"顺手\"重构",{"type":17,"tag":36,"props":128,"children":129},{},[130,135,137,144],{"type":17,"tag":40,"props":131,"children":132},{},[133],{"type":23,"value":134},"类型安全优先",{"type":23,"value":136},"：TypeScript 项目中，禁止使用 ",{"type":17,"tag":138,"props":139,"children":141},"code",{"className":140},[],[142],{"type":23,"value":143},"any",{"type":23,"value":145},"，必须给出明确类型定义",{"type":17,"tag":36,"props":147,"children":148},{},[149,154],{"type":17,"tag":40,"props":150,"children":151},{},[152],{"type":23,"value":153},"不自作主张删除代码",{"type":23,"value":155},"：有疑问时注释掉而非直接删除，并说明原因",{"type":17,"tag":36,"props":157,"children":158},{},[159,164],{"type":17,"tag":40,"props":160,"children":161},{},[162],{"type":23,"value":163},"执行破坏性操作前必须确认",{"type":23,"value":165},"：数据库写入 \u002F 删除、覆盖文件、生产环境操作，均须先向我确认",{"type":17,"tag":36,"props":167,"children":168},{},[169,174],{"type":17,"tag":40,"props":170,"children":171},{},[172],{"type":23,"value":173},"遇到不确定的问题，先说明再行动",{"type":23,"value":175},"：不要静默地做出可能有副作用的假设",{"type":17,"tag":36,"props":177,"children":178},{},[179,184],{"type":17,"tag":40,"props":180,"children":181},{},[182],{"type":23,"value":183},"验证驱动",{"type":23,"value":185},"：在证明功能正确之前，不标记任务完成。时刻自问：\"资深工程师会认可这个方案吗？\"",{"type":17,"tag":36,"props":187,"children":188},{},[189,194],{"type":17,"tag":40,"props":190,"children":191},{},[192],{"type":23,"value":193},"设计一致性",{"type":23,"value":195},"：代码还原设计稿时，像素级对齐不是可选而是默认。色彩、间距、字体必须与设计令牌（Design Token）一致",{"type":17,"tag":18,"props":197,"children":199},{"id":198},"三工作流规范workflow",[200],{"type":23,"value":201},"三、工作流规范（Workflow）",{"type":17,"tag":203,"props":204,"children":206},"h3",{"id":205},"_31-计划先行plan-first",[207],{"type":23,"value":208},"3.1 计划先行（Plan First）",{"type":17,"tag":32,"props":210,"children":211},{},[212,224,229,234,239,252],{"type":17,"tag":36,"props":213,"children":214},{},[215,217,222],{"type":23,"value":216},"涉及 3 步以上或架构决策的任务，",{"type":17,"tag":40,"props":218,"children":219},{},[220],{"type":23,"value":221},"必须先写 PLAN.md",{"type":23,"value":223}," 再编码",{"type":17,"tag":36,"props":225,"children":226},{},[227],{"type":23,"value":228},"前端任务需包含：组件拆分图、状态管理方案、API 依赖列表",{"type":17,"tag":36,"props":230,"children":231},{},[232],{"type":23,"value":233},"后端任务需包含：接口定义（OpenAPI\u002FTypeScript 类型）、数据库变更（ER 图\u002F迁移脚本）、权限校验点",{"type":17,"tag":36,"props":235,"children":236},{},[237],{"type":23,"value":238},"设计相关任务需包含：Figma 节点路径、资源导出规格、响应式断点策略",{"type":17,"tag":36,"props":240,"children":241},{},[242,244,250],{"type":23,"value":243},"按步骤顺序实现，完成后用 ",{"type":17,"tag":138,"props":245,"children":247},{"className":246},[],[248],{"type":23,"value":249},"[x]",{"type":23,"value":251}," 标记",{"type":17,"tag":36,"props":253,"children":254},{},[255,260],{"type":17,"tag":40,"props":256,"children":257},{},[258],{"type":23,"value":259},"计划服从现实",{"type":23,"value":261},"：发现计划与代码实际不符时，优先尊重现实；若计划明显错误，自行修正后继续",{"type":17,"tag":203,"props":263,"children":265},{"id":264},"_32-测试驱动开发tdd-后端优先",[266],{"type":23,"value":267},"3.2 测试驱动开发（TDD）— 后端优先",{"type":17,"tag":32,"props":269,"children":270},{},[271,304],{"type":17,"tag":36,"props":272,"children":273},{},[274,276],{"type":23,"value":275},"后端接口（Nest\u002FExpress）必须遵循 TDD：\n",{"type":17,"tag":104,"props":277,"children":278},{},[279,284,289,299],{"type":17,"tag":36,"props":280,"children":281},{},[282],{"type":23,"value":283},"先写测试（单元\u002F集成），确认失败（红）",{"type":17,"tag":36,"props":285,"children":286},{},[287],{"type":23,"value":288},"确认测试逻辑正确后，立即提交",{"type":17,"tag":36,"props":290,"children":291},{},[292,294],{"type":23,"value":293},"再写实现使测试通过（绿），",{"type":17,"tag":40,"props":295,"children":296},{},[297],{"type":23,"value":298},"实现过程中不得修改测试",{"type":17,"tag":36,"props":300,"children":301},{},[302],{"type":23,"value":303},"全部测试通过后，进行重构",{"type":17,"tag":36,"props":305,"children":306},{},[307],{"type":23,"value":308},"前端组件测试：关键交互组件（表单、弹窗、支付）必须写 Cypress\u002FPlaywright E2E 或 Vitest 单元测试",{"type":17,"tag":203,"props":310,"children":312},{"id":311},"_33-自主-bug-修复",[313],{"type":23,"value":314},"3.3 自主 Bug 修复",{"type":17,"tag":32,"props":316,"children":317},{},[318,330,335],{"type":17,"tag":36,"props":319,"children":320},{},[321,323,328],{"type":23,"value":322},"收到 Bug 报告后，",{"type":17,"tag":40,"props":324,"children":325},{},[326],{"type":23,"value":327},"直接调查并修复",{"type":23,"value":329},"，避免反复询问用户细节，减少上下文切换成本",{"type":17,"tag":36,"props":331,"children":332},{},[333],{"type":23,"value":334},"前端 Bug：先检查控制台报错、网络请求、状态流，再定位组件",{"type":17,"tag":36,"props":336,"children":337},{},[338],{"type":23,"value":339},"后端 Bug：先检查日志、数据库连接、接口入参，再定位服务层",{"type":17,"tag":203,"props":341,"children":343},{"id":342},"_34-ci-纪律",[344],{"type":23,"value":345},"3.4 CI 纪律",{"type":17,"tag":32,"props":347,"children":348},{},[349,359,364,369],{"type":17,"tag":36,"props":350,"children":351},{},[352,357],{"type":17,"tag":40,"props":353,"children":354},{},[355],{"type":23,"value":356},"CI 失败即最高优先级",{"type":23,"value":358},"：无论当前进行什么任务，立即暂停并修复 CI",{"type":17,"tag":36,"props":360,"children":361},{},[362],{"type":23,"value":363},"前端 CI 通常包含：Lint（ESLint\u002FPrettier）、类型检查（tsc --noEmit）、单元测试（Vitest）、构建（vite build）",{"type":17,"tag":36,"props":365,"children":366},{},[367],{"type":23,"value":368},"后端 CI 通常包含：Lint、测试、数据库迁移验证、Docker 构建",{"type":17,"tag":36,"props":370,"children":371},{},[372],{"type":23,"value":373},"修复后确认所有 CI 检查通过，再继续原任务",{"type":17,"tag":203,"props":375,"children":377},{"id":376},"_35-设计协作流程",[378],{"type":23,"value":379},"3.5 设计协作流程",{"type":17,"tag":32,"props":381,"children":382},{},[383,395,400,405],{"type":17,"tag":36,"props":384,"children":385},{},[386,388,393],{"type":23,"value":387},"从 Figma 开发时，",{"type":17,"tag":40,"props":389,"children":390},{},[391],{"type":23,"value":392},"优先使用 Figma Dev Mode 的 CSS 代码片段",{"type":23,"value":394},"，但需根据项目设计令牌调整",{"type":17,"tag":36,"props":396,"children":397},{},[398],{"type":23,"value":399},"导出图片资源时，优先使用 WebP\u002FAVIF 格式，提供 1x\u002F2x 多倍图",{"type":17,"tag":36,"props":401,"children":402},{},[403],{"type":23,"value":404},"设计稿中的图标必须使用项目统一的图标库（如 Iconify\u002F自定义 SVG），禁止直接导出 Figma 的 SVG（可能含冗余路径）",{"type":17,"tag":36,"props":406,"children":407},{},[408],{"type":23,"value":409},"响应式实现必须与 Figma 的断点标注一致（常见：768px、1024px、1440px）",{"type":17,"tag":18,"props":411,"children":413},{"id":412},"四技术规范tech-stack",[414],{"type":23,"value":415},"四、技术规范（Tech Stack）",{"type":17,"tag":203,"props":417,"children":419},{"id":418},"_41-前端通用规范",[420],{"type":23,"value":421},"4.1 前端通用规范",{"type":17,"tag":32,"props":423,"children":424},{},[425,430,435,447,452,473,478,483,488,493],{"type":17,"tag":36,"props":426,"children":427},{},[428],{"type":23,"value":429},"组件文件使用 PascalCase（MyComponent.vue）",{"type":17,"tag":36,"props":431,"children":432},{},[433],{"type":23,"value":434},"工具函数文件使用 camelCase（formatDate.ts）",{"type":17,"tag":36,"props":436,"children":437},{},[438,440,445],{"type":23,"value":439},"组件props、事件必须编写TS类型约束，杜绝",{"type":17,"tag":138,"props":441,"children":443},{"className":442},[],[444],{"type":23,"value":143},{"type":23,"value":446},"滥用",{"type":17,"tag":36,"props":448,"children":449},{},[450],{"type":23,"value":451},"优先使用组合式API \u002F Hooks，禁止混用老旧写法",{"type":17,"tag":36,"props":453,"children":454},{},[455,457,463,465,471],{"type":23,"value":456},"优先使用 ",{"type":17,"tag":138,"props":458,"children":460},{"className":459},[],[461],{"type":23,"value":462},"interface",{"type":23,"value":464}," 定义对象形状，",{"type":17,"tag":138,"props":466,"children":468},{"className":467},[],[469],{"type":23,"value":470},"type",{"type":23,"value":472}," 用于联合类型\u002F工具类型",{"type":17,"tag":36,"props":474,"children":475},{},[476],{"type":23,"value":477},"CSS 类名使用 kebab-case",{"type":17,"tag":36,"props":479,"children":480},{},[481],{"type":23,"value":482},"严格按照 Figma 设计稿，CSS 尽量实现像素级对齐，元素间距、色值、字体大小、行高、圆角、阴影必须与设计稿一致（允许 ±1px 误差）",{"type":17,"tag":36,"props":484,"children":485},{},[486],{"type":23,"value":487},"优先使用 CSS 变量管理主题色和间距",{"type":17,"tag":36,"props":489,"children":490},{},[491],{"type":23,"value":492},"图片资源：WebP 优先，SVG 用于图标",{"type":17,"tag":36,"props":494,"children":495},{},[496],{"type":23,"value":497},"禁止内联样式（动态样式除外）",{"type":17,"tag":203,"props":499,"children":501},{"id":500},"_42-nodejs-后端规范",[502],{"type":23,"value":503},"4.2 Node.js 后端规范",{"type":17,"tag":32,"props":505,"children":506},{},[507,512,517,522,527,532,537,542],{"type":17,"tag":36,"props":508,"children":509},{},[510],{"type":23,"value":511},"统一使用 async\u002Fawait，禁止回调地狱",{"type":17,"tag":36,"props":513,"children":514},{},[515],{"type":23,"value":516},"所有路由必须有错误处理中间件兜底",{"type":17,"tag":36,"props":518,"children":519},{},[520],{"type":23,"value":521},"环境变量通过 .env 管理，禁止硬编码敏感信息",{"type":17,"tag":36,"props":523,"children":524},{},[525],{"type":23,"value":526},"接口返回统一格式：{ code, data, message }",{"type":17,"tag":36,"props":528,"children":529},{},[530],{"type":23,"value":531},"接口敏感数据（密码、隐私信息）返回前端前自动脱敏处理",{"type":17,"tag":36,"props":533,"children":534},{},[535],{"type":23,"value":536},"RESTful 方法语义化：GET 查询、POST 创建、PUT 全量更新、PATCH 部分更新、DELETE 删除",{"type":17,"tag":36,"props":538,"children":539},{},[540],{"type":23,"value":541},"HTTP 状态码准确：200 OK、201 Created、204 No Content、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、409 Conflict、500 Internal Error",{"type":17,"tag":36,"props":543,"children":544},{},[545],{"type":23,"value":546},"日志：使用 winston 或 pino，区分 info \u002F warn \u002F error 级别",{"type":17,"tag":18,"props":548,"children":550},{"id":549},"五-git-操作规范",[551],{"type":23,"value":552},"五、 Git 操作规范",{"type":17,"tag":203,"props":554,"children":556},{"id":555},"_51-提交前检查清单",[557],{"type":23,"value":558},"5.1 提交前检查清单",{"type":17,"tag":26,"props":560,"children":561},{},[562,564,570,572,578],{"type":23,"value":563},"执行 ",{"type":17,"tag":138,"props":565,"children":567},{"className":566},[],[568],{"type":23,"value":569},"git commit",{"type":23,"value":571}," \u002F ",{"type":17,"tag":138,"props":573,"children":575},{"className":574},[],[576],{"type":23,"value":577},"git push",{"type":23,"value":579}," \u002F PR 创建前，必须完成：",{"type":17,"tag":104,"props":581,"children":582},{},[583,650,696],{"type":17,"tag":36,"props":584,"children":585},{},[586,591,593],{"type":17,"tag":40,"props":587,"children":588},{},[589],{"type":23,"value":590},"前端额外检查",{"type":23,"value":592},"：\n",{"type":17,"tag":32,"props":594,"children":595},{},[596,607,626,637],{"type":17,"tag":36,"props":597,"children":598},{},[599,605],{"type":17,"tag":138,"props":600,"children":602},{"className":601},[],[603],{"type":23,"value":604},"pnpm lint",{"type":23,"value":606},"（ESLint + Prettier）通过",{"type":17,"tag":36,"props":608,"children":609},{},[610,616,618,624],{"type":17,"tag":138,"props":611,"children":613},{"className":612},[],[614],{"type":23,"value":615},"pnpm type-check",{"type":23,"value":617},"（",{"type":17,"tag":138,"props":619,"children":621},{"className":620},[],[622],{"type":23,"value":623},"tsc --noEmit",{"type":23,"value":625},"）通过",{"type":17,"tag":36,"props":627,"children":628},{},[629,635],{"type":17,"tag":138,"props":630,"children":632},{"className":631},[],[633],{"type":23,"value":634},"pnpm test:unit",{"type":23,"value":636},"（Vitest）通过",{"type":17,"tag":36,"props":638,"children":639},{},[640,642,648],{"type":23,"value":641},"构建产物检查（",{"type":17,"tag":138,"props":643,"children":645},{"className":644},[],[646],{"type":23,"value":647},"pnpm build",{"type":23,"value":649},"），确认无警告",{"type":17,"tag":36,"props":651,"children":652},{},[653,658,659],{"type":17,"tag":40,"props":654,"children":655},{},[656],{"type":23,"value":657},"后端额外检查",{"type":23,"value":592},{"type":17,"tag":32,"props":660,"children":661},{},[662,673,683],{"type":17,"tag":36,"props":663,"children":664},{},[665,671],{"type":17,"tag":138,"props":666,"children":668},{"className":667},[],[669],{"type":23,"value":670},"npm run lint",{"type":23,"value":672}," 通过",{"type":17,"tag":36,"props":674,"children":675},{},[676,682],{"type":17,"tag":138,"props":677,"children":679},{"className":678},[],[680],{"type":23,"value":681},"npm run test",{"type":23,"value":672},{"type":17,"tag":36,"props":684,"children":685},{},[686,688,694],{"type":23,"value":687},"数据库迁移可执行（",{"type":17,"tag":138,"props":689,"children":691},{"className":690},[],[692],{"type":23,"value":693},"npm run migrate:up",{"type":23,"value":695}," 干跑）",{"type":17,"tag":36,"props":697,"children":698},{},[699,704,705],{"type":17,"tag":40,"props":700,"children":701},{},[702],{"type":23,"value":703},"PR 创建规范",{"type":23,"value":592},{"type":17,"tag":32,"props":706,"children":707},{},[708,718],{"type":17,"tag":36,"props":709,"children":710},{},[711,713],{"type":23,"value":712},"必须创建 ",{"type":17,"tag":40,"props":714,"children":715},{},[716],{"type":23,"value":717},"Draft PR",{"type":17,"tag":36,"props":719,"children":720},{},[721],{"type":23,"value":722},"必须设置 Assignees",{"type":17,"tag":203,"props":724,"children":726},{"id":725},"_52-分支模型",[727],{"type":23,"value":728},"5.2 分支模型",{"type":17,"tag":32,"props":730,"children":731},{},[732,758,783,806],{"type":17,"tag":36,"props":733,"children":734},{},[735,740,742,748,750,756],{"type":17,"tag":40,"props":736,"children":737},{},[738],{"type":23,"value":739},"主分支",{"type":23,"value":741},"：",{"type":17,"tag":138,"props":743,"children":745},{"className":744},[],[746],{"type":23,"value":747},"main",{"type":23,"value":749},"（生产）、",{"type":17,"tag":138,"props":751,"children":753},{"className":752},[],[754],{"type":23,"value":755},"develop",{"type":23,"value":757},"（集成）。",{"type":17,"tag":36,"props":759,"children":760},{},[761,766,767,773,775,781],{"type":17,"tag":40,"props":762,"children":763},{},[764],{"type":23,"value":765},"功能分支",{"type":23,"value":741},{"type":17,"tag":138,"props":768,"children":770},{"className":769},[],[771],{"type":23,"value":772},"feature\u002F功能简述-工单号",{"type":23,"value":774},"（如 ",{"type":17,"tag":138,"props":776,"children":778},{"className":777},[],[779],{"type":23,"value":780},"feature\u002Fuser-auth-2847",{"type":23,"value":782},"）。",{"type":17,"tag":36,"props":784,"children":785},{},[786,791,792,798,799,805],{"type":17,"tag":40,"props":787,"children":788},{},[789],{"type":23,"value":790},"修复分支",{"type":23,"value":741},{"type":17,"tag":138,"props":793,"children":795},{"className":794},[],[796],{"type":23,"value":797},"fix\u002F问题简述",{"type":23,"value":774},{"type":17,"tag":138,"props":800,"children":802},{"className":801},[],[803],{"type":23,"value":804},"fix\u002Flogin-redirect-loop",{"type":23,"value":782},{"type":17,"tag":36,"props":807,"children":808},{},[809,814,815,821,822,828],{"type":17,"tag":40,"props":810,"children":811},{},[812],{"type":23,"value":813},"发布分支",{"type":23,"value":741},{"type":17,"tag":138,"props":816,"children":818},{"className":817},[],[819],{"type":23,"value":820},"release\u002F版本号",{"type":23,"value":774},{"type":17,"tag":138,"props":823,"children":825},{"className":824},[],[826],{"type":23,"value":827},"release\u002F2.3.0",{"type":23,"value":782},{"type":17,"tag":203,"props":830,"children":832},{"id":831},"_53-commit-message-规范conventional-commits",[833],{"type":23,"value":834},"5.3 Commit Message 规范（Conventional Commits）",{"type":17,"tag":836,"props":837,"children":839},"pre",{"code":838},"类型(作用域): 简短描述\n\n[可选] 详细说明\n\n[可选] 关联工单：Closes #123\n",[840],{"type":17,"tag":138,"props":841,"children":842},{"__ignoreMap":7},[843],{"type":23,"value":838},{"type":17,"tag":32,"props":845,"children":846},{},[847,920,1011],{"type":17,"tag":36,"props":848,"children":849},{},[850,855,856,862,864,870,872,878,880,886,888,894,896,902,904,910,912,918],{"type":17,"tag":40,"props":851,"children":852},{},[853],{"type":23,"value":854},"类型",{"type":23,"value":741},{"type":17,"tag":138,"props":857,"children":859},{"className":858},[],[860],{"type":23,"value":861},"feat",{"type":23,"value":863},"（功能）、",{"type":17,"tag":138,"props":865,"children":867},{"className":866},[],[868],{"type":23,"value":869},"fix",{"type":23,"value":871},"（修复）、",{"type":17,"tag":138,"props":873,"children":875},{"className":874},[],[876],{"type":23,"value":877},"docs",{"type":23,"value":879},"（文档）、",{"type":17,"tag":138,"props":881,"children":883},{"className":882},[],[884],{"type":23,"value":885},"style",{"type":23,"value":887},"（格式）、",{"type":17,"tag":138,"props":889,"children":891},{"className":890},[],[892],{"type":23,"value":893},"refactor",{"type":23,"value":895},"（重构）、",{"type":17,"tag":138,"props":897,"children":899},{"className":898},[],[900],{"type":23,"value":901},"perf",{"type":23,"value":903},"（性能）、",{"type":17,"tag":138,"props":905,"children":907},{"className":906},[],[908],{"type":23,"value":909},"test",{"type":23,"value":911},"（测试）、",{"type":17,"tag":138,"props":913,"children":915},{"className":914},[],[916],{"type":23,"value":917},"chore",{"type":23,"value":919},"（杂项）。",{"type":17,"tag":36,"props":921,"children":922},{},[923,928,930,936,938,944,945,951,952,958,960,966,967,973,974,980,981,987,989,995,996,1002,1003,1009],{"type":17,"tag":40,"props":924,"children":925},{},[926],{"type":23,"value":927},"作用域",{"type":23,"value":929},"：前端用 ",{"type":17,"tag":138,"props":931,"children":933},{"className":932},[],[934],{"type":23,"value":935},"ui",{"type":23,"value":937},"、",{"type":17,"tag":138,"props":939,"children":941},{"className":940},[],[942],{"type":23,"value":943},"api",{"type":23,"value":937},{"type":17,"tag":138,"props":946,"children":948},{"className":947},[],[949],{"type":23,"value":950},"hooks",{"type":23,"value":937},{"type":17,"tag":138,"props":953,"children":955},{"className":954},[],[956],{"type":23,"value":957},"components",{"type":23,"value":959},"；后端用 ",{"type":17,"tag":138,"props":961,"children":963},{"className":962},[],[964],{"type":23,"value":965},"auth",{"type":23,"value":937},{"type":17,"tag":138,"props":968,"children":970},{"className":969},[],[971],{"type":23,"value":972},"db",{"type":23,"value":937},{"type":17,"tag":138,"props":975,"children":977},{"className":976},[],[978],{"type":23,"value":979},"service",{"type":23,"value":937},{"type":17,"tag":138,"props":982,"children":984},{"className":983},[],[985],{"type":23,"value":986},"middleware",{"type":23,"value":988},"；设计用 ",{"type":17,"tag":138,"props":990,"children":992},{"className":991},[],[993],{"type":23,"value":994},"assets",{"type":23,"value":937},{"type":17,"tag":138,"props":997,"children":999},{"className":998},[],[1000],{"type":23,"value":1001},"figma",{"type":23,"value":937},{"type":17,"tag":138,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":23,"value":1008},"styles",{"type":23,"value":1010},"。",{"type":17,"tag":36,"props":1012,"children":1013},{},[1014,1019,1020,1026],{"type":17,"tag":40,"props":1015,"children":1016},{},[1017],{"type":23,"value":1018},"禁止在 Commit Message 中添加 AI 署名",{"type":23,"value":774},{"type":17,"tag":138,"props":1021,"children":1023},{"className":1022},[],[1024],{"type":23,"value":1025},"Co-Authored-By: Claude",{"type":23,"value":782},{"type":17,"tag":18,"props":1028,"children":1030},{"id":1029},"六安全与合规",[1031],{"type":23,"value":1032},"六、安全与合规",{"type":17,"tag":32,"props":1034,"children":1035},{},[1036,1046,1088,1143,1167],{"type":17,"tag":36,"props":1037,"children":1038},{},[1039,1044],{"type":17,"tag":40,"props":1040,"children":1041},{},[1042],{"type":23,"value":1043},"绝不提交敏感信息",{"type":23,"value":1045},"：API Key、数据库密码、JWT Secret、私钥等严禁入仓。",{"type":17,"tag":36,"props":1047,"children":1048},{},[1049,1054,1055],{"type":17,"tag":40,"props":1050,"children":1051},{},[1052],{"type":23,"value":1053},"前端安全",{"type":23,"value":592},{"type":17,"tag":32,"props":1056,"children":1057},{},[1058,1063,1076],{"type":17,"tag":36,"props":1059,"children":1060},{},[1061],{"type":23,"value":1062},"所有用户输入必须转义（XSS 防护）。",{"type":17,"tag":36,"props":1064,"children":1065},{},[1066,1068,1074],{"type":23,"value":1067},"使用 ",{"type":17,"tag":138,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":23,"value":1073},"DOMPurify",{"type":23,"value":1075}," 处理富文本渲染。",{"type":17,"tag":36,"props":1077,"children":1078},{},[1079,1081,1087],{"type":23,"value":1080},"CSP（Content Security Policy）头部必须配置，禁止 ",{"type":17,"tag":138,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":23,"value":1086},"unsafe-inline",{"type":23,"value":1010},{"type":17,"tag":36,"props":1089,"children":1090},{},[1091,1096,1097],{"type":17,"tag":40,"props":1092,"children":1093},{},[1094],{"type":23,"value":1095},"后端安全",{"type":23,"value":592},{"type":17,"tag":32,"props":1098,"children":1099},{},[1100,1120,1125,1130],{"type":17,"tag":36,"props":1101,"children":1102},{},[1103,1105,1111,1112,1118],{"type":23,"value":1104},"密码必须使用 ",{"type":17,"tag":138,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":23,"value":1110},"bcrypt",{"type":23,"value":571},{"type":17,"tag":138,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":23,"value":1117},"argon2",{"type":23,"value":1119}," 哈希，禁止 MD5\u002FSHA1。",{"type":17,"tag":36,"props":1121,"children":1122},{},[1123],{"type":23,"value":1124},"JWT 使用 RS256（私钥签名），禁止 HS256（密钥泄露风险）。",{"type":17,"tag":36,"props":1126,"children":1127},{},[1128],{"type":23,"value":1129},"SQL 注入防护：使用 ORM 参数化查询，禁止字符串拼接 SQL。",{"type":17,"tag":36,"props":1131,"children":1132},{},[1133,1135,1141],{"type":23,"value":1134},"NoSQL 注入防护：Mongoose Schema 严格模式，",{"type":17,"tag":138,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":23,"value":1140},"$where",{"type":23,"value":1142}," 禁用。",{"type":17,"tag":36,"props":1144,"children":1145},{},[1146,1151,1153,1159,1160,1166],{"type":17,"tag":40,"props":1147,"children":1148},{},[1149],{"type":23,"value":1150},"文件写入保护",{"type":23,"value":1152},"：编辑\u002F写入文件前，确认目标路径正确，避免覆盖关键配置（如 ",{"type":17,"tag":138,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":23,"value":1158},"vite.config.ts",{"type":23,"value":937},{"type":17,"tag":138,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":23,"value":1165},"docker-compose.yml",{"type":23,"value":782},{"type":17,"tag":36,"props":1168,"children":1169},{},[1170,1175,1177,1183,1184,1190,1191,1197,1198,1204,1205,1211],{"type":17,"tag":40,"props":1171,"children":1172},{},[1173],{"type":23,"value":1174},"Bash 命令审查",{"type":23,"value":1176},"：执行 ",{"type":17,"tag":138,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":23,"value":1182},"rm",{"type":23,"value":937},{"type":17,"tag":138,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":23,"value":1189},"chmod 777",{"type":23,"value":937},{"type":17,"tag":138,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":23,"value":1196},"sudo",{"type":23,"value":937},{"type":17,"tag":138,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":23,"value":1203},"curl | sh",{"type":23,"value":937},{"type":17,"tag":138,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":23,"value":1210},"docker system prune",{"type":23,"value":1212}," 等高风险命令前，必须二次确认。",{"type":17,"tag":18,"props":1214,"children":1216},{"id":1215},"七项目工程化通用约束",[1217],{"type":23,"value":1218},"七、项目工程化通用约束",{"type":17,"tag":104,"props":1220,"children":1221},{},[1222,1235,1240,1245,1250],{"type":17,"tag":36,"props":1223,"children":1224},{},[1225,1227,1233],{"type":23,"value":1226},"版本管理：不随意修改",{"type":17,"tag":138,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":23,"value":1232},".gitignore",{"type":23,"value":1234},"，不提交环境变量、本地配置、日志文件、依赖缓存",{"type":17,"tag":36,"props":1236,"children":1237},{},[1238],{"type":23,"value":1239},"环境区分：严格区分开发环境、测试环境、正式环境配置，环境变量统一管理",{"type":17,"tag":36,"props":1241,"children":1242},{},[1243],{"type":23,"value":1244},"依赖管理：前端不随意安装无用UI库、工具库；后端不引入冗余Node第三方包",{"type":17,"tag":36,"props":1246,"children":1247},{},[1248],{"type":23,"value":1249},"注释规范：复杂业务逻辑、特殊兼容逻辑必须写中文注释，通用简洁逻辑无需多余注释",{"type":17,"tag":36,"props":1251,"children":1252},{},[1253],{"type":23,"value":1254},"兼容适配：前端兼顾主流浏览器、移动端适配；后端接口兼容低版本调用逻辑",{"type":17,"tag":18,"props":1256,"children":1258},{"id":1257},"八禁止行为清单严格执行",[1259],{"type":23,"value":1260},"八、禁止行为清单（严格执行）",{"type":17,"tag":104,"props":1262,"children":1263},{},[1264,1269,1274,1279,1284,1289],{"type":17,"tag":36,"props":1265,"children":1266},{},[1267],{"type":23,"value":1268},"禁止擅自更换项目技术栈、修改项目目录结构",{"type":17,"tag":36,"props":1270,"children":1271},{},[1272],{"type":23,"value":1273},"禁止前端随意改写全局路由、状态管理核心逻辑",{"type":17,"tag":36,"props":1275,"children":1276},{},[1277],{"type":23,"value":1278},"禁止后端随意改动数据库主表结构、删除原有业务字段",{"type":17,"tag":36,"props":1280,"children":1281},{},[1282],{"type":23,"value":1283},"禁止为了简洁省略必要的参数校验、权限判断",{"type":17,"tag":36,"props":1285,"children":1286},{},[1287],{"type":23,"value":1288},"禁止脱离设计稿自由发挥写页面样式与交互",{"type":17,"tag":36,"props":1290,"children":1291},{},[1292],{"type":23,"value":1293},"禁止编写无法维护、无注释、逻辑混乱的一次性后端接口",{"title":7,"searchDepth":1295,"depth":1295,"links":1296},2,[1297,1298,1299,1307,1311,1316,1317,1318],{"id":20,"depth":1295,"text":24},{"id":99,"depth":1295,"text":102},{"id":198,"depth":1295,"text":201,"children":1300},[1301,1303,1304,1305,1306],{"id":205,"depth":1302,"text":208},3,{"id":264,"depth":1302,"text":267},{"id":311,"depth":1302,"text":314},{"id":342,"depth":1302,"text":345},{"id":376,"depth":1302,"text":379},{"id":412,"depth":1295,"text":415,"children":1308},[1309,1310],{"id":418,"depth":1302,"text":421},{"id":500,"depth":1302,"text":503},{"id":549,"depth":1295,"text":552,"children":1312},[1313,1314,1315],{"id":555,"depth":1302,"text":558},{"id":725,"depth":1302,"text":728},{"id":831,"depth":1302,"text":834},{"id":1029,"depth":1295,"text":1032},{"id":1215,"depth":1295,"text":1218},{"id":1257,"depth":1295,"text":1260},"markdown","content:it:001.md","content","it\u002F001.md","it\u002F001","md",1781529092108]