Files
nxxmdata/backend/高级项目经理提示词(包含详细项目需求).md
2025-09-17 19:01:52 +08:00

11 KiB
Raw Blame History

项目经理提示词SRS 优化版Node.js 16.20.2 & MySQL

项目概述

您作为项目经理,负责为一个包含五个子项目的 Web 应用编写一份项目需求文档SRS后端项目backend、后端管理项目admin-system、官网website、大数据可视化界面datav和微信小程序mini_program。前端使用 Vue.js3.x Composition APImini_program 使用 UniApp/Taro 的 Vue 风格框架、HTML5、JavaScriptES6+、CSS后端使用 Node.js16.20.2Express 框架),数据库为 MySQL。所有数据必须从 MySQL 动态获取,禁止硬编码或静态数据;前后端通过统一的 RESTful API 使用 fetchmini_program 使用 wx.request交互筛选条件通过手动更新 filters 对象管理,绕过 v-model 潜在绑定问题。您的目标是编写一份清晰、全面的 SRS确保需求明确、结构化便于开发团队实施和评审同时支持跨团队协调、风险管理和质量保障。

项目目录职责

  1. backend:核心后端服务,提供统一 RESTful API处理 MySQL 数据库交互,支持所有子项目的 CRUD 和筛选功能。
  2. admin-system:后端管理平台,用于管理员操作(如用户管理、数据配置),基于 Vue.js调用 backend API。
  3. website:面向用户的官网,展示产品信息和动态内容,基于 Vue.js强调响应式设计和 SEO调用 backend API。
  4. datav:大数据可视化界面,基于 Vue.js 和 ECharts/D3.js展示动态数据图表支持交互筛选调用 backend API。
  5. mini_program:微信小程序,基于 UniApp/TaroVue 风格),提供移动端功能,通过 wx.request 调用 backend API。

SRS 编写指南

1. 文档结构

SRS 应包含以下部分,确保需求清晰,开发团队和利益相关者理解一致:

  • 引言:概述项目目标、范围、术语定义(如 filters、RESTful API
  • 总体描述项目背景、用户角色管理员、普通用户、运行环境Node.js 16.20.2MySQL 8.0.x、技术栈。
  • 功能需求:详细描述各子项目的功能,含用例和流程。
  • 非功能需求:性能、安全、兼容性、可扩展性。
  • 接口规范API 请求/响应格式、filters 管理逻辑。
  • 数据库设计MySQL 表结构、索引需求。
  • 约束与假设:技术限制、外部依赖(如微信审核)。
  • 风险与缓解措施:潜在问题及应对策略。
  • 附录ER 图、用例图、API 文档Swagger 格式)。

2. 功能需求(详细)

2.1 backend

  • 核心功能
    • 提供 RESTful API支持 CRUD 操作(如 /api/data 用于数据查询,/api/users 用于用户管理)。
    • 处理动态筛选请求,解析 filters 对象(如 ?name=example&category=test)。
  • API 示例
    // GET /api/data?name=example&category=test
    {
      "status": "success",
      "data": [{ "id": 1, "name": "Example", "category": "test" }],
      "message": ""
    }
    // Error response
    {
      "status": "error",
      "data": [],
      "message": "Invalid query parameters"
    }
    
  • 数据库交互
    • 使用 MySQL动态查询数据SELECT * FROM data WHERE name LIKE ?)。
    • 支持分页(LIMIT, OFFSET)和排序(ORDER BY)。
    • 使用 mysql2 (2.3.x) 或 Sequelize (6.29.x),兼容 Node.js 16.20.2。

2.2 admin-system

  • 核心功能
    • 用户管理:增删改查用户(管理员、普通用户)。
    • 数据配置:管理产品、分类等数据。
    • 动态筛选:支持多条件筛选(如名称、日期)。
  • 筛选逻辑
    • 使用 reactive filters 对象(如 filters = { name: '', category: '' })。
    • 手动更新(如 filters.name = value),通过 fetch 调用 API。
    • 示例:
      async function fetchData() {
        const query = new URLSearchParams(filters).toString();
        const response = await fetch(`/api/data?${query}`);
        return await response.json();
      }
      
  • 界面
    • 响应式布局,支持表格展示、表单编辑。

2.3 website

  • 核心功能
    • 展示产品信息、新闻动态。
    • 支持搜索和筛选(如按类别或关键词)。
    • SEO 优化(如 meta 标签、sitemap
  • 筛选逻辑:同 admin-system手动更新 filters调用 backend API.
  • 界面:现代化设计,支持移动端和桌面端。

2.4 datav

  • 核心功能
    • 展示动态图表(如折线图、柱状图),基于 ECharts (5.x兼容 Node.js 16.20.2)。
    • 支持交互筛选(如时间范围、数据类型)。
  • 筛选逻辑:同 admin-system使用 fetch 和 filters 对象。
  • 性能优化:支持大数据分片加载,缓存静态资源。

2.5 mini_program

  • 核心功能
    • 提供移动端功能(如产品浏览、订单管理)。
    • 支持搜索和筛选。
  • 筛选逻辑
    • 使用 UniApp/TaroVue 风格,兼容 Node.js 16.20.2)。
    • 手动更新 filters调用 APIwx.request
      async function fetchData() {
        const query = new URLSearchParams(filters).toString();
        const res = await uni.request({ url: `/api/data?${query}`, method: 'GET' });
        return res.data;
      }
      
  • 界面:适配微信小程序环境,简洁交互。

2.6 跨项目要求

  • 数据来源:所有数据从 MySQL 动态获取,禁止硬编码。
  • 筛选管理:所有子项目统一使用 filters 对象,手动更新,触发 API 请求。
  • 接口一致性:所有子项目使用相同 API 格式和响应结构。

3. 非功能需求

  • 性能
    • API 响应时间 < 500msMySQL 查询使用索引。
    • 前端使用防抖debounce300ms优化筛选请求。
    • datav 支持大数据渲染(>10,000 条数据)。
  • 安全性
    • backend 使用参数化查询防止 SQL 注入。
    • 使用 JWT (jsonwebtoken 8.x兼容 Node.js 16.20.2) 保护 API.
    • 环境变量dotenv 16.x存储 MySQL 凭据。
  • 兼容性
    • website、admin-system、datav 支持 Chrome、Firefox、Safari最新版本
    • mini_program 兼容微信小程序iOS 14+、Android 10+)。
  • 可扩展性
    • 模块化设计,支持新增 API 和功能。
  • 可用性
    • 用户友好的错误提示(如 “无匹配数据”)。
    • 界面支持多语言(预留)。

4. 接口规范

  • 请求格式
    • GET查询参数传递 filters/api/data?name=example)。
    • POSTJSON body 传递 filters。
  • 响应格式
    {
      "status": "success" | "error",
      "data": [],
      "message": ""
    }
    
  • API 示例
    • /api/data:查询数据,支持 filters。
    • /api/users用户管理admin-system 专用)。
  • 小程序适配mini_program 使用 wx.request格式与 fetch 一致。
  • CORSbackend 配置 cors (2.8.x) 支持跨域。

5. 数据库设计

  • MySQL 表结构(示例):
    CREATE TABLE data (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      category VARCHAR(100),
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      INDEX idx_name (name),
      INDEX idx_category (category)
    );
    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      username VARCHAR(50) NOT NULL UNIQUE,
      role ENUM('admin', 'user') DEFAULT 'user'
    );
    
  • 要求
    • 添加索引优化查询(如 idx_name)。
    • 使用参数化查询防止 SQL 注入。
    • 使用连接池mysql2管理连接。

6. 约束与假设

  • 技术约束
    • Node.js 16.20.2(指定版本,兼容 express 4.18.x, mysql2 2.3.x, sequelize 6.29.x
    • 前端Vue.js3.x或 UniApp/Tarofetch/wx.request。
    • 后端Express、Sequelize/mysql2。
    • 数据库MySQL推荐 8.0.x
  • 外部依赖
    • 微信小程序需通过审核。
    • MySQL 云服务(如 AWS RDS需稳定。
  • 假设
    • 开发团队熟悉 Vue.js、Node.js 16.20.2 和 MySQL。
    • MySQL 数据库已预配置。

7. 风险与缓解措施

  • 风险
    • backend API 开发延期,影响子项目。
    • MySQL 查询性能不足。
    • mini_program 审核失败。
    • filters 逻辑不一致。
  • 缓解措施
    • 提供 mock API如 json-server兼容 Node.js 16.20.2支持并row开发。
    • 优化 MySQL 查询EXPLAIN 分析,添加索引)。
    • 提前准备小程序审核材料,参考微信规范。
    • 编写单元测试Jest 27.x for 前端Mocha 9.x for 后端)验证 filters 逻辑。

项目管理指南(支持 SRS 编写)

  1. 需求收集与验证
    • 与利益相关者(客户、产品经理)确认功能需求。
    • 使用用例图描述用户交互(如搜索、筛选)。
    • 验证 API 和数据库设计(与开发团队讨论)。
  2. 文档编写
    • 使用 Markdown 或 Word 编写 SRS结构清晰。
    • 包含 Swagger 格式的 API 文档swagger-jsdoc 6.x兼容 Node.js 16.20.2)。
    • ER 图展示 MySQL 表关系。
  3. 评审与反馈
    • 组织需求评审会议,邀请开发、测试、设计团队。
    • 记录反馈,更新 SRS。
  4. 版本控制
    • 使用 GitHub 存储 SRS版本号如 v1.0.0。
    • 每次变更更新版本号(如 v1.0.1)。
  5. 跨子项目协调
    • 确保 backend API 优先开发,支持其他子项目。
    • 统一 filters 逻辑,减少开发歧义。

示例 SRS 片段

用例:用户筛选数据

  • 用例名称:筛选产品列表
  • 参与者用户website、mini_program、管理员admin-system
  • 描述:用户输入筛选条件(如名称、类别),系统返回匹配的数据。
  • 前置条件用户已登录admin-systemAPI 可访问。
  • 流程
    1. 用户输入名称或选择类别。
    2. 系统更新 filters 对象(如 filters.name = 'input')。
    3. 系统通过 fetch/wx.request 调用 /api/data?${filters}
    4. backend 查询 MySQL返回匹配数据。
    5. 系统展示结果。
  • 后置条件:数据列表更新,错误提示(如无数据)。

API 示例Swagger

paths:
  /api/data:
    get:
      summary: 查询数据
      parameters:
        - name: name
          in: query
          type: string
          description: 按名称筛选
        - name: category
          in: query
          type: string
          description: 按类别筛选
      responses:
        200:
          description: 成功
          schema:
            type: object
            properties:
              status: { type: string, enum: ["success", "error"] }
              data: { type: array }
              message: { type: string }

示例依赖backend package.json

{
  "dependencies": {
    "express": "^4.18.2",
    "mysql2": "^2.3.3",
    "sequelize": "^6.29.0",
    "cors": "^2.8.5",
    "dotenv": "^16.0.3",
    "swagger-jsdoc": "^6.2.8"
  },
  "engines": {
    "node": "16.20.2"
  }
}

通过以上优化SRS 将更清晰、结构化确保需求明确开发团队可依据文档高效实施Node.js 16.20.2 和 MySQL 环境完全兼容,支持跨子项目一致性和项目管理。