• 主动
    • 拆任务
      你是具有丰富开发经验的前端开发工程师,请你阅读@需求文档.md 这个产品及UI文档,你需要完成这个产品的前端页面开发,这是一个移动端的H5页面,需要适配手机访问,请你按照你丰富的前端开发经验,拆解出详细的前端开发任务,按照以下格式保存到 doc目录中。
      - 根据开发顺序创建TASK001这样的任务编号;
      - 每个任务包含名称,任务描述、版本、状态(计划中、测试单元编写中、开发中、完成等)。
      每个TASK都有验收标准清单和注意事项(提现用户或将来的AI助手需要注意的详细内容)
       
      @后端开发任务.md 现在你开始执行任务,每次只能执行一个任务,执行任务完成后需要更新任务状态以及验收清单。功能和接口规范需要跟 @doc 下文档保持一致。 必须是我回复后才能继续下一项任务
    • PRD
      我想开发一个小程序
      目标用户:
      - 主要用户:25-45岁的家长,没时间来教小孩怎么写作文,也可能不知道还在对应年级作文的写作规范和要求
       用户痛点:
      -家长难以针对孩子写作弱点提供定制化提升方案
      -无法获得实时写作建议
       
      我目前想到的核心功能如下:
      1、用户可以对作文进行拍照,然后上传图片
      2、调用大模型对作文进行批改
      3、每次批改作文消耗一个积分,使用微信支付进行充值可获得积分
      4、用户使用微信授权登陆,登陆完成需要绑定手机号
       
      graph TD;
          A[用户打开小程序] --> B[显示微信登录按钮];
          B --> C[用户点击微信登录按钮];
          C --> D[小程序向微信请求登录授权];
          D --> E[微信验证用户身份并返回授权结果];
          E --> F[如果授权成功,用户登录小程序,小程序获取用户基本信息(如头像、昵称等)];
          E --> G[如果授权失败,弹出提示框告知用户登录失败,引导用户重新尝试或检查微信设置];
          F --> H[用户可在个人中心进行密码设置(可选,用于后续可能的账号安全需求)];
          F --> I[如果用户忘记密码,可在登录页面点击“忘记密码”按钮];
          I --> J[进入密码找回流程,通过微信验证身份后重置密码];
       
      现在需要你帮我输出高保真的原型图,请通过以下方式帮我完成所有界面的原型设计,并确保这些原型界面可以直接用于开发:
      1、用户体验分析:先分析这个小程序的主要功能和用户需求,确定核心交互逻辑。
      2、产品界面规划:作为产品经理,定义关键界面,确保信息架构合理。
      3、高保真 UI 设计:作为 UI 设计师,设计贴近真实小程序设计规范的界面,使用现代化的 UI 元素,使其具有良好的视觉体验。
      4HTML 原型实现:使用 HTML + Tailwind CSS(或 Bootstrap)生成所有原型界面,并使用 FontAwesome(或其他开源 UI 组件)让界面更加精美、接近真实的 小程序 设计。拆分代码文件,保持结构清晰:
      5、每个界面应作为独立的 HTML 文件存放,例如 home.html、profile.html、settings.html 等。
      - index.html 作为主入口,不直接写入所有界面的 HTML 代码,而是使用 iframe 的方式嵌入这些 HTML 片段,并将所有页面直接平铺展示在 index 页面中,而不是跳转链接。
      - 真实感增强:  - 界面尺寸应模拟 iPhone 15 Pro,并让界面圆角化,使其更像真实的手机界面。 
      - 使用真实的 UI 图片,而非占位符图片(可从 Unsplash、Pexels、Apple 官方 UI 资源中选择)。 
      - 添加顶部状态栏(模拟 iOS 状态栏),并包含 App 导航栏(类似 iOS 底部 Tab Bar)。
        请按照以上要求生成完整的 HTML 代码,并确保其可用于实际开发。
    • UI
      你是一名专业的网页设计师和前端开发专家,对现代 Web 设计趋势和最佳实践有深入理解,尤其擅长创造具有极高审美价值的用户界面。你的设计作品不仅功能完备,而且在视觉上令人惊叹,能够给用户带来强烈的"Aha-moment"体验。
       
      请根据最后提供的内容,设计一个**美观、现代、易读**"中文"可视化网页。请充分发挥你的专业判断,选择最能体现内容精髓的设计风格、配色方案、排版和布局。
       
      **设计目标:**
       
      *   **视觉吸引力:** 创造一个在视觉上令人印象深刻的网页,能够立即吸引用户的注意力,并激发他们的阅读兴趣。
      *   **可读性:** 确保内容清晰易读,无论在桌面端还是移动端,都能提供舒适的阅读体验。
      *   **信息传达:** 以一种既美观又高效的方式呈现信息,突出关键内容,引导用户理解核心思想。
      *   **情感共鸣:** 通过设计激发与内容主题相关的情感(例如,对于励志内容,激发积极向上的情绪;对于严肃内容,营造庄重、专业的氛围)。
       
      **设计指导(请灵活运用,而非严格遵循):**
       
      *   **整体风格:** 可以考虑杂志风格、出版物风格,或者其他你认为合适的现代 Web 设计风格。目标是创造一个既有信息量,又有视觉吸引力的页面,就像一本精心设计的数字杂志或一篇深度报道。
      *   **Hero 模块(可选,但强烈建议):** 如果你认为合适,可以设计一个引人注目的 Hero 模块。它可以包含大标题、副标题、一段引人入胜的引言,以及一张高质量的背景图片或插图。
      *   **排版:**
          *   精心选择字体组合(衬线和无衬线),以提升中文阅读体验。
          *   利用不同的字号、字重、颜色和样式,创建清晰的视觉层次结构。
          *   可以考虑使用一些精致的排版细节(如首字下沉、悬挂标点)来提升整体质感。
          *   Font-Awesome中有很多图标,选合适的点缀增加趣味性。
      *   **配色方案:**
          *   选择一套既和谐又具有视觉冲击力的配色方案。
          *   考虑使用高对比度的颜色组合来突出重要元素。
          *   可以探索渐变、阴影等效果来增加视觉深度。
      *   **布局:**
          *   使用基于网格的布局系统来组织页面元素。
          *   充分利用负空间(留白),创造视觉平衡和呼吸感。
          *   可以考虑使用卡片、分割线、图标等视觉元素来分隔和组织内容。
      *   **调性:**整体风格精致, 营造一种高级感。
      *   **数据可视化:** 
          *   设计一个或多个数据可视化元素,展示Naval思想的关键概念和它们之间的关系。
          *   可以考虑使用思想导图、概念关系图、时间线或主题聚类展示等方式。
          *   确保可视化设计既美观又有洞察性,帮助用户更直观地理解Naval思想体系的整体框架。
          *   使用Mermaid.js来实现交互式图表,允许用户探索不同概念之间的关联。
       
      **技术规范:**
       
      *   使用 HTML5、Font Awesome、Tailwind CSS 和必要的 JavaScript。
          *   Font Awesome: <https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css>
          *   Tailwind CSS: <https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css>
          *   非中文字体: <https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap>
          *   `font-family: Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;`
          *   Mermaid: <https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js>
      *   实现完整的深色/浅色模式切换功能,默认跟随系统设置,并允许用户手动切换。
      *   代码结构清晰、语义化,包含适当的注释。
      *   实现完整的响应式,必须在所有设备上(手机、平板、桌面)完美展示。
       
      **额外加分项:**
       
      *   **微交互:** 添加微妙而有意义的微交互效果来提升用户体验(例如,按钮悬停效果、卡片悬停效果、页面滚动效果)。
      *   **补充信息:** 可以主动搜索并补充其他重要信息或模块(例如,关键概念的解释、相关人物的介绍等),以增强用户对内容的理解。
      *   **延伸阅读:** 分析文件后,提供一份"进一步阅读"的简短清单,推荐 5 本最佳相关书籍或论文,并提供简要说明或链接。
       
      **输出要求:**
       
      *   提供一个完整、可运行的单一 HTML 文件,其中包含所有必要的 CSS 和 JavaScript。
      *   确保代码符合 W3C 标准,没有错误或警告。
       
      请你像一个真正的设计师一样思考,充分发挥你的专业技能和创造力,打造一个令人惊艳的网页!
       
      待处理内容:{{content}}
    • Git流程
      ---
      description: 
      globs: 
      alwaysApply: false
      ---
       
      # Gitflow工作流规则
       
      ## 主分支
       
      ### main(或master)
      - 包含生产就绪代码
      - 永远不要直接提交到main分支
      - 只接受来自以下分支的合并:
        - hotfix/* 分支
        - release/* 分支
      - 每次合并后必须使用版本号标记
       
      ### develop
      - 主开发分支
      - 包含最新交付的开发变更
      - 功能分支的源分支
      - 永远不要直接提交到develop分支
       
      ## 支持分支
       
      ### feature/*
      - 从develop分支创建
      - 合并回:develop
      - 命名约定:feature/[issue-id]-描述性名称
      - 示例:feature/123-user-authentication
      - 创建PR前必须与develop分支保持同步
      - 合并后删除
       
      ### release/*
      - 从develop分支创建
      - 合并回:
        - main
        - develop
      - 命名约定:release/vX.Y.Z
      - 示例:release/v1.2.0
      - 仅进行bug修复、文档编写及与发布相关的任务
      - 不添加新功能
      - 合并后删除
       
      ### hotfix/*
      - 从main分支创建
      - 合并回:
        - main
        - develop
      - 命名约定:hotfix/vX.Y.Z
      - 示例:hotfix/v1.2.1
      - 仅用于紧急生产环境修复
      - 合并后删除
       
      ## 提交信息
       
      - 格式:`type(scope): description`
      - 类型:
        - feat: 新功能
        - fix: Bug修复
        - docs: 文档变更
        - style: 格式调整、缺失分号等
        - refactor: 代码重构
        - test: 添加测试
        - chore: 维护任务
       
      ## 版本控制
       
      ### 语义化版本
      - MAJOR版本用于不兼容的API变更
      - MINOR版本用于向后兼容的功能性变更
      - PATCH版本用于向后兼容的bug修复
       
      ## Pull Request规则
       
      1. 所有变更必须通过Pull Request进行
      2. 所需批准:至少1个
      3. CI检查必须通过
      4. 不允许直接提交到受保护分支(main, develop)
      5. 合并前分支必须保持最新
      6. 合并后删除分支
       
      ## 分支保护规则
       
      ### main和develop
      - 要求Pull Request审核
      - 要求状态检查通过
      - 要求分支保持最新
      - 限制规则包括管理员
      - 禁止强制推送
      - 禁止删除
       
      ## 发布流程
       
      1. 从develop创建release分支
      2. 更新版本号
      3. 修复任何与发布相关的问题
      4. 创建PR到main
      5. 合并到main后:
         - 标记发布
         - 合并回develop
         - 删除release分支
       
      ## 热修复流程
       
      1. 从main创建hotfix分支
      2. 修复问题
      3. 更新patch版本号
      4. 创建PR到main
      5. 合并到main后:
         - 标记发布
         - 合并回develop
         - 删除hotfix分支
    • Git格式
      ---
      description: 辅助生成 git 提交信息
      globs: 
      alwaysApply: false
      ---
      # Git 规则
       
      ## 重要原则
      - **重要**:不要自动提交 git 代码,除非有明确的提示
      - 提交前确保代码通过所有测试
      - 保持提交信息简洁明了,描述清楚变更内容
      - 避免大型提交,尽量将变更分解为小的、相关的提交
       
      ## 提交规范
      git 提交模板<type>(<scope>): <subject>,具体要求如下:
      1. 注意冒号 : 后有空格
      2. type 的枚举值有:
      - feat: 新增功能
      - fix: 修复 bug
      - docs: 文档注释
      - style: 代码格式(不影响代码运行的变动)
      - refactor: 重构、优化(既不增加新功能, 也不是修复bug)
      - perf: 性能优化
      - test: 增加测试
      - chore: 构建过程或辅助工具的变动
      - revert: 回退
      - build: 打包
      3. 若 subject 中描述超过两种要点,请使用要点列表描述详情,每个要点使用-符号开头,多个换行,参考如下样例:
        feat(web): implement email verification workflow
        
        - Add email verification token generation service
        - Create verification email template with dynamic links
        - Add API endpoint for token validation
        - Update user model with verification status field
       
       
      ## 分支管理
      - main/master: 主分支,保持稳定可发布状态
      - develop: 开发分支,包含最新开发特性
      - feature/*: 功能分支,用于开发新功能
      - bugfix/*: 修复分支,用于修复bug
      - release/*: 发布分支,用于准备发布
       
      **常用分支命名约定**:
       
      | 分支类型   | 命名格式             | 示例                      |
      | ---------- | -------------------- | ------------------------- |
      | 功能分支   | feature/[描述]       | feature/user-auth         |
      | 修复分支   | fix/[问题ID]-[描述]  | fix/issue-42-login-crash  |
      | 发布分支   | release/[版本]       | release/v2.1.0            |
      | 热修复分支 | hotfix/[版本]-[描述] | hotfix/v2.0.1-payment-fix |
  • 触发
    • TDD
      # 核心编程原则
       
      ## 沟通与语言规范
      - 交流、注释: 统一使用简体中文。
      - 每次回复,都请以“收到,思维武者🔍”开头,请审视的输入的潜在问题,能提出明显在我思考框架外的建议。
      - 代码实体、技术术语、提交记录: 统一使用英文。
      - 批判性反馈与破框思维: 对于任何方案,提出 >= 3个风险, >= 3条改进建议。
      - 若不可行,直接指出原因并给替代方案。
      - 任务全部完成时,打印执行总时间。
       
      ## [重要]调试-验证矩阵表格(位于CLAUDE.md中的"调试"模块下的"验证矩阵")
      - 验证矩阵完备:所有业务场景及业务功能,必须穷举出验证矩阵条目及严苛的验收标准。尤其注意丰富业务边界场景验证条目。不列举非业务相关条目。
      - 验证矩阵正交:验证矩阵条目必须无重复,必须保持高信息密度。
      - 验证矩阵对齐:缺失验证矩阵条目禁止编码、禁止执行调试动作。发现缺失条目必须及时补充。
      - 验收标准精密
        - 唯一性原则:每个验证项只有一个唯一正确的状态
        - 完整性原则:必须验证从输入到输出的完整业务流程
        - 原子性原则:验收标准必须是原子的,不可拆分的
        - 可重现性原则:验收结果必须100%可重现
        - 端到端验证:验证实际业务功能而非仅技术指标
        - 高信息密度:在不丢失精密信息的前提下,保证高信息密度
       
      ## TDD, 设计>测试>实现
      - 设计先行:任何业务实现前,先向docs和CLAUDE.md同步设计修改。
      - 即时测试:功能改动即刻更新并合并到现有测试,测试必须体现出所有功能。
      - 业务导向:只写业务的端到端测试。测试代码要对齐"调试-验证矩阵表格"的业务功能。
      - 模块导向:每个业务模块必须有测试文件、且只有1个完备的测试文件,超出必需合并。
       
      ## 测试覆盖
      - 单测力求覆盖所属业务模块全部分支。
      - 必须真实覆盖功能, 禁止伪实现。业务代码严禁使用TODO、空循环、假数据、占位返回值
      - Mock仅限于测试代码中,业务逻辑严禁依赖任何Mock开关。  
       
      ## [重要]坚守正义(只做正确的事, 只正确的做事)
      - 严禁过度简化:绝不允许为精练代码修改甚至裁剪任何功能。
      - 坚决实行业界最佳实践:坚守优雅设计, 坚守代码可扩展性。
      - 逐一修复:发现错误必须定位并修复,不跳过。禁止打补丁实现假成功,必须真正把代码改正。
       
      ## 可读性
      - 不过度简化,严格保留业务功能细节的前提下,极致压缩实现同样功能需要的代码行数。
      - 代码密度>85%。
      - 函数式风格压缩代码。
      - 命名见名知意, 除行业标准外禁止缩写。
      - 禁止为兼容写冗余分支。
      - 只有极其必要时才新建文件,单模块文件数<=8个。
      - 避免重复(DRY):写代码前检查所有已知代码,有相似代码直接复用或重构后复用。
      - 高内聚,低耦合:相关代码必须放在一起; 仅暴露必要的API和参数; 禁止跨层调用内部实现。 
       
      ## 及时精练
      - 修改完代码后自动删除死代码, 自动跑测试提升代码质量。
      - 修改完代码后自动按"可读性"重构业务代码。
       
      ## 代码质量
      - 及时修正:任何测试、调试后,必须补充潜在的问题到测试中,并在代码改正,并测试成功。
      - 只留存业务逻辑代码、测试代码, 禁止其它代码或脚本,禁止演示用代码,调试用的代码用完即删。
      - 替代方案:当前代码方案不可行时,立即切换到完整可行的替代实现。
      - TODO管理:不写任何TODO,出现未知业务时,自行构思业务最佳实践并自动实现。
       
      ## 统一文档
      - 功能更新必须写入项目CLAUDE.md
      - 功能更新必须结合CLAUDE.md的"调试"模块已有的调试方法,对其做合并或追加。
      - CLAUDE.md必须精练
      - 严禁CLAUDE.md、DOC.md、README.md之外的其它任何文档及*.md文件。
    • 触发写API
      ---
      ** 入参要求
      - header中必须设置 auth, 值为当前登录后保存的token值
      - 请求的参数使用json 格式, 就算是参数为空,也需要使用 {} 来代替
      ** http请求
         请求方式默认是post,除非有明确要求
      ** 返参
      - 后端统一返回的参数为json对象,格式如下
      {
      "error": 0,
       "body": object,
       "message": ''
       
         }
       error =0, 表示没有任何异常
       error = 500, 表示系统异常,需要弹出系统异常的错误
       error = 401,表示需要登录
       error 其它值,表示业务异常,直接弹出 message内容
       body 是一个对象
       ** 设计一个通用函数来处理后端API返回值,所有的API文件都是用这个通用函数
       ** 当接口发生修改或者新增时,将接口信息按照如下格式:
       接口名称
      - 接口核心功能描述,不超过200字
      - 接口地址: /print/assembly/{id}/export-pdf
      - 方法: GET
      - 需要登录: 是
      - 请求参数: 无
      - 响应类型: blob
      - 返回值:{}
      同步更新到  @接口文档.md
       
       
      ---
      我现在需要一份接口文档,你需要扫描每个页面,页面在 @pages @components   ,按照以下流程来获取页面中的接口信息
      - 从页面中获取调用的接口,并找到接口调用的真实地址,如果没有你可以自己生成真实的接口地址
      - 从页面中获取调用接口的入参和返参,并放到下面的格式中返回
      - 出参和入参的格式定义需要符合接口的统一规则 api.mdc
      - 接口需要标出是否需要登陆才能访问
      最后生成md文档保存起来
      格式如下:
      接口名称
      - 接口核心功能描述,不超过200字
      - 接口地址: /print/assembly/{id}/export-pdf
      - 方法: GET
      - 需要登录: 是
      - 请求参数: 无
      - 响应类型: blob
      - 返回值:{}
      记得把 接口规则文档放到上下文中
       
       
      ---
      description: 
      globs: src/api/*.js
      alwaysApply: false
      ---
      #说明
      本规则适用于所有需要调用api请求的功能
      #项目结构
      - api目录存放所有跟后端请求的服务API,任何涉及到后端调用的必须写在这个目录里面
      - api的命名方式 模块名称大写API.js
      - 每个接口必须有注释,注释格式如下:
      /**
      * 接口名称
      * 功能描述
      * 入参
      * 返回参数
      * url地址
      * 请求方式
      **/
      - 每个接口的实现可参考如下示例:
          import { get, post, put, del } from './index.js'
          /**
          * 获取购物车列表
          * 功能描述:获取用户购物车中的所有商品
          * 入参:无
          * 返回参数:购物车商品列表
          * url地址:/cart/list
          * 请求方式:GET
          */
          export function getCartList() {    
              return get('/cart/list')
          }
       
      ---
      description: 
      globs: src/api/mockManager.js
      alwaysApply: false
      -----
      你每次写mock的接口的同时也需要在api目录写真实的接口
       
      ---
       @api 里面的每个route发生变化时必须执行自动化测试,并将测试结果告诉我
      我的项目是一个前后端分离的项目,现在这个项目是前端项目,我希望前端项目在发生变更时,如果涉及到后端的接口变化,你帮我生成一个后端服务的任务清单,我将任务任务清单发给后端服务能直接生成代码。
      任务清单放到doc中。
      基于以上需求,帮我生成一个rules
  • 场景
    • CRD
      # 调试
       
      ## 用deploy.sh 部署config/samples/ms1/torin/ms1_tpl.yaml 调试。deploy.sh 要保持最简,尽量不改动
       
      ## 测试CR时,应该先本地调试,再正式调试
      ### 本地调试,正确顺序是
          1. kill掉占用端口的进程
          2. "nohup make run > operator.log 2>&1 &"
          3. "gtimeout 10 tail -f operator.log"调试,注意一次看日志的timeout时间不能超过10s。
      ### 正式调试是,deploy正式调试之前应该准备好CRD和Helm,正确顺序是:
          1. helm push(推送更新的chart到仓库) 
              helm package ./config/samples/ms1/maas/helm/mas
              helm push *.tgz oci://moments8-acr-registry.cn-beijing.cr.aliyuncs.com/moments8
          2. deploy controller
              make manifests generate fmt vet install
              IMG=moments8-acr-registry.cn-beijing.cr.aliyuncs.com/moments8/mas-operator:v1.0.2
              docker buildx build --platform linux/amd64 -t $IMG .
              docker push $IMG
              make deploy IMG=$IMG
          3. apply CR
              ./deploy.sh
       
      # 要做
       
      ## 执行阻塞相关命令时:
          1. 执行预期中会一直阻塞的命令时,必须使用gtimeout设置超时时间,包括但不限于:tail -f、kubectl logs -f、kubectl delete、kubectl rollout、make run等持续运行的命令。例如:gtimeout 30 tail -f operator.log 或 gtimeout 30 kubectl logs -f pod-name。这样可以防止命令无限期阻塞工作流程。
          2. 所有timeout类型的设置,包括gtimeout命令,时间不要超过30s。无论是gtimeout、kubectl wait的--timeout参数,还是其他任何超时设置,都必须控制在30秒以内。
          3. 使用sleep命令时,时间不能超过30秒。所有需要等待的命令都应该控制在30秒以内,避免长时间阻塞工作流程。
       
      ## 在删除Kubernetes资源时:
          1. 必须分两步执行:第一步使用kubectl patch移除finalizers:kubectl patch [resource] --type=json -p='[{"op":"remove","path":"/metadata/finalizers"}]',第二步再执行kubectl delete:kubectl delete [resource]。这两个命令必须分开执行,不能用&&连接符一次性执行,以确保每一步都能正确完成并观察到结果。
          2. kubectl delete namespace时,应该先把该namespace下的资源一个个patch移除finalizers后再delete,而不是直接强制删除namespace。
          3. 所有kubectl delete命令都必须加超时限制,最多20秒。
       
      # 不要做
       
      ## 不要写脚本
      ## 不要写文档
      ## 不要用make test 或 go test 测试,统一用deploy.sh调试
       
      # 项目结构
      ## 顶层目录
      | 目录 | 作用 |
      | --- | --- |
      | `api/` | CRD 类型定义与代码生成 |
      | `internal/controller/` | 业务控制器与辅助模块 |
      | `config/` | CRDRBAC、样例 YAML、Kustomize |
      | `cmd/` | 主入口 `main.go` |
      | `scripts/` | CI/CD、调试与工具脚本 |
       
      ## 关键文件
      - **Makefile**:一键构建、测试、推送  
      - **PROJECT**:Kubebuilder 配置  
      - **go.mod / go.sum**:依赖管理  
       
      ## 开发流程
      1. 修改 `api/*``make manifests` 生成 CRD  
      2. 实现业务逻辑 → `make generate` 自动注册 RBAC  
      3. 本地测试 → `make test`  
      4. 构建镜像 → `make docker-build && make docker-push`  
      5. 在 infra 集群中部署 Operator
       
      ## 代码规范
      - 控制器函数注释采用 **GoDoc** 风格  
      - 避免循环依赖,工具类放入 `pkg/`  
      - 日志使用 `ctrl.Logger`,统一字段
       
      *:Kubebuilder 配置  
      - **go.mod / go.sum**:依赖管理  
       
      ## 开发流程
      1. 修改 `api/*``make manifests` 生成 CRD  
      2. 实现业务逻辑 → `make generate` 自动注册 RBAC  
      3. 本地测试 → `make test`  
      4. 构建镜像 → `make docker-build && make docker-push`  
      5. 在 infra 集群中部署 Operator
       
      ## 代码规范
      - 控制器函数注释采用 **GoDoc** 风格  
      - 避免循环依赖,工具类放入 `pkg/`  
      - 日志使用 `ctrl.Logger`,统一字段
    • 后端
      ---
      description: java 开发规范
      globs: 
      alwaysApply: true
      ---
      # Java 开发规范与架构指南
       
      ## 项目架构说明
       
      ### 模块划分
      - **gyl-common**: 通用工具模块(工具函数、枚举类、通用DTO、异常定义)
      - **gyl-core**: 核心业务模块(service、manager、mapper三层架构)
      - **gyl-gateway**: 网关层(HTTP请求处理、参数校验、路由转发)
       
      ### 三层架构详解
       
      #### Service层 (`gyl-core/src/main/java/com/njgyl/core/service`)
      - **职责**: 业务流程编排、参数校验、权限控制
      - **设计原则**: 一个业务领域一个Service,一个功能一个方法
      - **接口规范**: 必须定义接口,入参和返参使用DTO类型
      - **调用关系**: 调用Manager层方法,不直接操作数据库
       
      #### Manager层 (`gyl-core/src/main/java/com/njgyl/core/manager`)
      - **职责**: 核心业务逻辑封装、数据操作、缓存处理
      - **设计原则**: 通用化设计,提供可复用的业务方法
      - **缓存管理**: Redis读写操作统一在此层处理
      - **接口规范**: 不需要定义接口,直接使用实现类,入参和返参使用DTO类型
      - **业务封装**: 相同或相似业务逻辑必须在此层统一封装
       
      #### Mapper层 (`gyl-core/src/main/java/com/njgyl/core/mapper`)
      - **职责**: 数据库访问,一个表对应一个Mapper
      - **技术选型**: 优先使用MyBatis-Plus单表CRUD,复杂查询使用XML
      - **文件规范**: XML文件命名为`表名+Mapper.xml`存放在`gyl-core/src/main/resources/mapper/`
      - **数据类型**: 入参必须使用专门数据库对象或者DTO类型,禁止自定义Map类型,返参可以是entity或者其他对象类型
       
      #### Gateway层 (`gyl-gateway`)
      - **职责边界**: 仅负责参数校验(不涉及service层)、请求路由,禁止编写业务逻辑
      - **调用规范**: 只能调用gyl-core下的Service方法
      - **路径规范**: 
        - 后台管理: `/api/admin/`
        - 商城应用: `/api/app/`
        - 仓配系统: `/api/wms/`
      - **认证模块**: AdminHandlerInterceptors(后台)、ShopHandlerInterceptors(商城)
       
      ## 开发规范
       
      ### 业务逻辑封装规范
      - **避免重复**: Service层不允许重复业务逻辑,必须调用Manager层统一方法
      - **参数适配**: Service层通过不同DTO参数调用Manager层统一方法
      - **实践案例**: 密码修改功能,无论用户修改还是管理员重置,都调用Manager层统一方法
      - **流程实现**: 在流程代码中不允许出现TODO或者注释不写代码只写文字的情况
      ### API设计规范
      - **请求方法**: 仅允许POST和GET请求
      - **参数规范**: 超过2个参数必须定义DTO实体
      - **DTO命名**: 功能明确命名,`AdminUserCreateDTO``MallUserLoginDTO`
      - **字段校验**: 使用Bean Validation注解进行参数校验
      - **响应格式**: 统一使用 [Result](mdc:gyl-common/src/main/java/com/njgyl/common/result/Result.java) 封装,时间字段转字符串
       
      ### 数据处理规范
      - **对象拷贝**: 禁止使用`BeanUtil.copyProperties()`,采用手动字段赋值
      - **状态管理**: 所有状态字段使用枚举类型,避免魔法数字
      - **DTO分类**: 按功能分包存放(user/、shop/、goods/等)
      - **转换封装**: DTO转换方法统一放在各模块convert包中
       
      ### 异常处理规范
      - **日志记录**: 所有异常catch必须记录详细日志(堆栈、参数、方法信息)
      - **异常分类**:
        - `BusinessException`: 业务逻辑异常
        - `ServiceException`: 服务层处理异常
        - `DataAccessException`: 数据访问异常
      - **异常传播**: Service层异常由统一异常处理器处理
      - **事务异常**: 在@Transactional(rollbackFor = Exception.class)的函数中不要使用try .... catch 捕获异常
       
      ### 工具类使用规范
      - **优先选择**: Hutool工具库
      - **字符串操作**: `StrUtil` 替代 `StringUtils`
      - **集合操作**: `CollUtil` 处理集合相关操作
      - **时间处理**: `DateUtil` 进行时间格式化和计算
       
      ## 开发流程规范
       
      ### 标准开发流程
      1. **需求分析**: 识别是否有相似功能已存在
      2. **架构设计**: 确定核心逻辑实现层级,避免重复开发
      3. **Mapper层**: 定义数据访问接口和SQL(如需要)
      4. **Manager层**: 封装可复用的业务逻辑和数据操作
      5. **Service层**: 实现具体业务流程,调用Manager层方法
      6. **Controller层**: 提供HTTP接口,仅做参数校验和路由
       
      ### 代码复用原则
      - **开发前必查**: 查阅 [README.md](mdc:README.md) 确认现有功能
      - **Manager层优先**: 优先使用已有Manager层方法,避免重复实现
      - **逻辑抽象**: 将相似业务逻辑抽象到Manager层,供多个Service调用
      - **重构意识**: 发现重复代码时,及时重构到合适层级
      - **调用规范**: 不要使用包名的方式调用类或者方法,比如 om.njgyl.core.convert.UserConvert
       
      ## 安全与限制规范
       
      ### 安全性要求
      - **认证授权**: Redis缓存登录状态,基于角色的权限管理
      - **密码安全**: MD5加密存储,登录时比对加密值
      - **数据验证**: 所有外部输入必须验证,使用参数化查询防SQL注入
      - **XSS防护**: 对输出内容进行适当转义
       
      ### 严格禁止事项
      - **文件修改**: 禁止修改`pom.xml`(未经允许)`gyl-core/src/main/java/com/njgyl/core/entity/`下的实体类
      - **对象拷贝**: 禁止使用`BeanUtil.copyProperties()`
      - **数据库变更**: 必须生成SQL文档存放在`doc/`目录,需版本化管理和向前兼容
      - **循环操作数据**: 禁止在循环中查询数据,应该使用ids查询
       
      ## 最佳实践总结
       
      ### 关注点分离
      - 每一层只关注自己的职责,不越界处理其他层的逻辑
      - Gateway层专注请求处理,Service层专注业务编排,Manager层专注业务封装
       
      ### 代码复用
      - 在Manager层统一封装相似业务逻辑,避免在Service层重复实现
      - 通过参数适配实现不同场景下的业务逻辑复用
       
      ### 可维护性
      - 使用枚举管理状态,使用DTO传输数据,手动字段赋值提高可读性
      - 完善的异常处理和日志记录,便于问题排查和系统监控
    • 前端
      ---
      description: 
      globs: 
      alwaysApply: true
      ---
      # 项目通用规范
       
      ## 技术栈
      - 使用vue3+vant框架,使用原生的js语言,不需要使用typeScript
      - 尽量使用vant现有的组件
      - 使用Pinia管理用户登录态、购物车数据
      - 所有调用后端服务都必须使用API,目录在src/api
      - 页面的组件嵌套不要超过三层
      - 你在进行页面开发时,可以扫描 [README.md](mdc:README.md) 的项目结构,看下是否有可用的组件或者工具方法
      ## 项目结构
      每次更新完文件都需要更新项目结构目录,信息在 [README.md](mdc:README.md)中
      使用真实的 UI 图片,而非占位符图片(可从 Unsplash、Pexels、Apple 官方 UI 资源中选择)
      ## 限制
      - 不允许在对话中使用npm run dev 启动项目
      - 不要在vue页面中定义测试数据,所有的数据必须来自后端服务或者mock接口
      - 不要创建测试文档
      ## 项目结构规则
      - **分层组织**:按功能或领域划分目录,遵循"关注点分离"原则
      - **命名一致**:使用一致且描述性的目录和文件命名,反映其用途和内容
      - **模块化**:相关功能放在同一模块,减少跨模块依赖
      - **适当嵌套**:避免过深的目录嵌套,一般不超过3-4层
      - **资源分类**:区分代码、资源、配置和测试文件
      - **依赖管理**:集中管理依赖,避免多处声明
      - **约定优先**:遵循语言或框架的标准项目结构约定
      ## 通用开发原则
      - **可测试性**:编写可测试的代码,组件应保持单一职责,没有我的允许不能创建测试用例
      - **DRY 原则**:避免重复代码,提取共用逻辑到单独的函数或类
      - **代码简洁**:保持代码简洁明了,遵循 KISS 原则(保持简单直接),每个方法行数不超过300行
      - **命名规范**:使用描述性的变量、函数和类名,反映其用途和含义
      - **注释文档**:为复杂逻辑添加注释,编写清晰的文档说明功能和用法
      - **风格一致**:遵循项目或语言的官方风格指南和代码约定
      - **利用生态**:优先使用成熟的库和工具,避免不必要的自定义实现
      - **架构设计**:考虑代码的可维护性、可扩展性和性能需求
      - **版本控制**:编写有意义的提交信息,保持逻辑相关的更改在同一提交中
      - **异常处理**:正确处理边缘情况和错误,提供有用的错误信息 
      ## git 操作
      - 你完成了一项功能开发后,需要进行commit 操作
      ## 响应语言
      - 始终使用中文回复用户
    • 小程序
      /components/**/*/pages/**/*
       
      你是一个经验丰富的小程序开发人员,擅长解决各种小程序开发问题,严格遵守小程序开发规范
      项目结构
      - components
        /**这里存放小程序的自定义组件,每个组件单独一个文件夹 */
      - pages
       /**这里存放小程序的页面,每个页面单独一个文件夹 */
      - api
      /** 这里存放调用后端服务的文件,按模块划分,每个模块一个文件,文件命名:**Api.js */
      - static
      /**存放其他常用js或者静态资源图片 */
      ui及页面规范
      - 所有页面必须包含 js、json、wxml、wxss文件,json文件必须包含以下基本内容
      {
        "navigationBarTitleText": "上传作文",
        "usingComponents": {
        }
      }
       
      代码规范:
          - 使用微信小程序原生框架进行开发,合理使用组件化开发。
          - 遵循微信小程序设计规范,确保良好的用户体验。
          - 利用微信小程序提供的API进行功能开发,如登录、支付、地理位置等。
          - 使用分包加载优化小程序体积和加载性能。
          - 合理使用页面生命周期函数和组件生命周期函数。
          - 编写详细的代码注释,并在代码中添加必要的错误处理和日志记录。
          - 合理使用本地存储和缓存机制。
       
       
      api/*.js
       
      ** 入参要求
         - header中必须设置 auth, 值为当前登录后保存的token值
         - 请求的参数使用json 格式, 就算是参数为空,也需要使用 {} 来代替
      ** http请求
         请求方式默认是post,除非有明确要求
      ** 返参
        - 后端统一返回的参数为json对象,格式如下
         {
          "error": 0,
           "body": object,
           "message": ''
       
         }
       error =0, 表示没有任何异常
       error = 500, 表示系统异常,需要弹出系统异常的错误
       error = 401,表示需要登录
       error 其它值,表示业务异常,直接弹出 message内容
       body 是一个对象
       ** 设计一个通用函数来处理后端API返回值,所有的API文件都是用这个通用函数
    • 技术栈