表名: UserInput
字段:
objectId (默认字段) createdAt (默认字段) userName (用户姓名) contactInfo (联系方式) brandName (品牌名称) brandType (品牌类型) targetMarket (目标市场) competitorsInfo (竞争对手信息) specificNeeds (其他特定需求)
表名: Report
字段:
objectId (默认字段) createdAt (默认字段) userInput (Pointer) - 关联到用户输入表 reportContent (报告内容) reportDate (报告生成日期)
表名: Competitor
字段:
objectId (默认字段) createdAt (默认字段) userInput (Pointer) - 关联到用户输入表 competitorName (竞争对手名称) competitorStrengths (竞争对手优势) competitorWeaknesses (竞争对手劣势)
UserInput 表: 存储用户的基本信息和需求。 Report 表: 存储生成的品牌策划报告,并通过外键关联到 UserInput 表。 Competitor 表: 存储竞争对手的信息,同样与 UserInput 表关联。
@startuml
class UserInput {
    +objectId: String
    +createdAt: Date
    +userName: String
    +contactInfo: String
    +brandName: String
    +brandType: String
    +targetMarket: String
    +competitorsInfo: String
    +specificNeeds: String
}
class Report {
    +objectId: String
    +createdAt: Date
    +userInput: Pointer
    +reportContent: String
    +reportDate: Date
}
class Competitor {
    +objectId: String
    +createdAt: Date
    +userInput: Pointer
    +competitorName: String
    +competitorStrengths: String
    +competitorWeaknesses: String
}
UserInput "1" -- "0..*" Competitor : has >
UserInput "1" -- "0..1" Report : generates >
@enduml
收集用户信息:
提供一个表单让用户填写姓名、联系方式、品牌名称、品牌类型、目标市场、竞争对手信息和其他特定需求。 在用户提交表单时,验证输入数据的完整性和有效性(例如,检查联系方式格式、品牌名称是否为空等)。 保存用户输入:
将用户输入的数据存储到 UserInput 表中,并生成一个唯一的 objectId。
收集竞争对手信息:
在用户输入表单中,允许用户添加多个竞争对手的信息(如名称、优势、劣势)。 使用动态表单元素(如添加按钮)来允许用户输入多个竞争对手。 保存竞争对手信息:
当用户提交信息时,遍历竞争对手列表,将每个竞争对手的信息存储到 Competitor 表中,并将其与相应的 UserInput 记录关联。
生成报告:
在用户提交信息后,触发一个报告生成的过程。 根据用户的输入和需求,使用预定义的模板生成报告内容。可以根据品牌类型、目标市场和竞争对手信息来调整报告的内容和格式。 保存报告:
将生成的报告内容存储到 Report 表中,并将其与相应的 UserInput 记录关联。
[
  {
    "UserInput": {
      "objectId": "1",
      "name": "张三",
      "contact": "13800138000",
      "brandName": "未来科技",
      "brandType": "科技",
      "targetMarket": "中国",
      "competitors": [
        {
          "name": "竞争者A",
          "strengths": "强大的市场份额",
          "weaknesses": "创新能力不足"
        },
        {
          "name": "竞争者B",
          "strengths": "丰富的产品线",
          "weaknesses": "价格较高"
        }
      ],
      "specificNeeds": "需要市场分析和品牌定位建议"
    },
    "Competitor": [
      {
        "competitorId": "1",
        "userInputId": "1",
        "name": "竞争者A",
        "strengths": "强大的市场份额",
        "weaknesses": "创新能力不足"
      },
      {
        "competitorId": "2",
        "userInputId": "1",
        "name": "竞争者B",
        "strengths": "丰富的产品线",
        "weaknesses": "价格较高"
      }
    ],
    "Report": {
      "reportId": "1",
      "userInputId": "1",
      "content": "根据用户输入,生成的市场分析报告..."
    }
  },
  {
    "UserInput": {
      "objectId": "2",
      "name": "李四",
      "contact": "13900139000",
      "brandName": "绿色生活",
      "brandType": "环保",
      "targetMarket": "国际",
      "competitors": [
        {
          "name": "竞争者C",
          "strengths": "全球知名品牌",
          "weaknesses": "市场反应慢"
        }
      ],
      "specificNeeds": "希望获得国际市场的进入策略"
    },
    "Competitor": [
      {
        "competitorId": "3",
        "userInputId": "2",
        "name": "竞争者C",
        "strengths": "全球知名品牌",
        "weaknesses": "市场反应慢"
      }
    ],
    "Report": {
      "reportId": "2",
      "userInputId": "2",
      "content": "根据用户输入,生成的国际市场进入策略报告..."
    }
  }
]
最后,报告生成器确认报告存储成功,并将结果返回给表单,表单再将报告链接展示给用户。
@startuml
actor User
participant "Form" as Form
participant "Database" as DB
participant "Report Generator" as ReportGen
User -> Form: 填写表单
Form -> User: 提交数据
User -> Form: 提交数据
Form -> DB: 存储用户数据
DB -> Form: 确认存储成功
Form -> ReportGen: 生成报告请求
ReportGen -> DB: 获取用户数据
DB -> ReportGen: 返回用户数据
ReportGen -> ReportGen: 生成报告内容
ReportGen -> DB: 存储生成的报告
DB -> ReportGen: 确认报告存储成功
ReportGen -> Form: 返回报告生成成功
Form -> User: 显示报告链接
@enduml