作者 徐宝林

初始化项目0908

  1 +# AIGEO AI内容生成平台 - 开发与接口文档
  2 +
  3 +## 1. 项目概述
  4 +
  5 +AIGEO AI内容生成平台是一个基于人工智能技术的内容生成系统,主要功能包括关键词扩展、话题发现、AI文章生成、落地页生成、网站构建等。系统采用多租户架构,支持企业级用户管理。
  6 +
  7 +## 2. 技术架构
  8 +
  9 +### 2.1 后端技术栈
  10 +- Java 17
  11 +- Spring Boot 3.x
  12 +- Spring Security
  13 +- Spring Data JPA
  14 +- MySQL 8.0
  15 +- Redis
  16 +- JWT认证
  17 +- Knife4j (Swagger文档)
  18 +
  19 +### 2.2 前端技术栈
  20 +- Vue.js (根据vue.md文件推断)
  21 +- Element UI
  22 +
  23 +### 2.3 第三方服务
  24 +- Dify AI API
  25 +- SearchAPI (百度、Google等搜索引擎API)
  26 +
  27 +## 3. 核心模块
  28 +
  29 +### 3.1 认证与授权模块
  30 +
  31 +#### 3.1.1 接口列表
  32 +
  33 +##### 用户登录
  34 +- **URL**: `POST /api/auth/login`
  35 +- **描述**: 用户使用用户名/邮箱和密码进行登录认证
  36 +- **请求参数**:
  37 +```json
  38 +{
  39 + "username": "string", // 用户名或邮箱
  40 + "password": "string" // 密码
  41 +}
  42 +```
  43 +
  44 +- **响应**:
  45 +```json
  46 +{
  47 + "code": 200,
  48 + "message": "登录成功",
  49 + "data": {
  50 + "token": "string", // JWT访问令牌
  51 + "expiresIn": 0, // 过期时间(秒)
  52 + "user": { // 用户信息
  53 + "id": 0,
  54 + "companyId": 0,
  55 + "username": "string",
  56 + "email": "string",
  57 + "fullName": "string",
  58 + "role": "string",
  59 + "isActive": true
  60 + }
  61 + }
  62 +}
  63 +```
  64 +
  65 +
  66 +##### 用户注册
  67 +- **URL**: `POST /api/auth/register`
  68 +- **描述**: 新用户注册,可同时创建新公司
  69 +- **请求参数**:
  70 +```json
  71 +{
  72 + "companyId": 0, // 所属公司ID(可选)
  73 + "companyName": "string",// 公司名称(创建新公司时使用)
  74 + "username": "string", // 用户名
  75 + "email": "string", // 邮箱
  76 + "password": "string", // 密码
  77 + "confirmPassword": "string", // 确认密码
  78 + "fullName": "string" // 用户全名(可选)
  79 +}
  80 +```
  81 +
  82 +- **响应**:
  83 +```json
  84 +{
  85 + "code": 200,
  86 + "message": "注册成功",
  87 + "data": {
  88 + "token": "string", // JWT访问令牌
  89 + "expiresIn": 0, // 过期时间(秒)
  90 + "user": { // 用户信息
  91 + "id": 0,
  92 + "companyId": 0,
  93 + "username": "string",
  94 + "email": "string",
  95 + "fullName": "string",
  96 + "role": "string",
  97 + "isActive": true
  98 + }
  99 + }
  100 +}
  101 +```
  102 +
  103 +
  104 +### 3.2 公司管理模块
  105 +
  106 +#### 3.2.1 接口列表
  107 +
  108 +##### 创建公司
  109 +- **URL**: `POST /api/companies`
  110 +- **描述**: 创建新公司
  111 +- **请求参数**:
  112 +```json
  113 +{
  114 + "name": "string", // 公司名称
  115 + "domain": "string", // 公司域名(可选)
  116 + "billingEmail": "string", // 账单邮箱(可选)
  117 + "contactPhone": "string", // 联系电话(可选)
  118 + "address": "string" // 公司地址(可选)
  119 +}
  120 +```
  121 +
  122 +- **响应**:
  123 +```json
  124 +{
  125 + "code": 200,
  126 + "message": "公司创建成功",
  127 + "data": {
  128 + "id": 0,
  129 + "name": "string",
  130 + "domain": "string",
  131 + "status": "TRIAL", // 公司状态(TRIAL/SUSPENDED/ACTIVE)
  132 + "trialExpiryDate": "2023-01-01T00:00:00",
  133 + "billingEmail": "string",
  134 + "contactPhone": "string",
  135 + "address": "string",
  136 + "createdAt": "2023-01-01T00:00:00",
  137 + "updatedAt": "2023-01-01T00:00:00"
  138 + }
  139 +}
  140 +```
  141 +
  142 +
  143 +##### 获取公司详情
  144 +- **URL**: `GET /api/companies/{id}`
  145 +- **描述**: 根据ID获取公司详情
  146 +- **响应**:
  147 +```json
  148 +{
  149 + "code": 200,
  150 + "message": "查询成功",
  151 + "data": {
  152 + "id": 0,
  153 + "name": "string",
  154 + "domain": "string",
  155 + "status": "TRIAL",
  156 + "trialExpiryDate": "2023-01-01T00:00:00",
  157 + "billingEmail": "string",
  158 + "contactPhone": "string",
  159 + "address": "string",
  160 + "createdAt": "2023-01-01T00:00:00",
  161 + "updatedAt": "2023-01-01T00:00:00"
  162 + }
  163 +}
  164 +```
  165 +
  166 +
  167 +##### 获取公司列表
  168 +- **URL**: `GET /api/companies`
  169 +- **描述**: 获取所有公司列表
  170 +- **响应**:
  171 +```json
  172 +{
  173 + "code": 200,
  174 + "message": "查询成功",
  175 + "data": [
  176 + {
  177 + "id": 0,
  178 + "name": "string",
  179 + "domain": "string",
  180 + "status": "TRIAL",
  181 + "trialExpiryDate": "2023-01-01T00:00:00",
  182 + "billingEmail": "string",
  183 + "contactPhone": "string",
  184 + "address": "string",
  185 + "createdAt": "2023-01-01T00:00:00",
  186 + "updatedAt": "2023-01-01T00:00:00"
  187 + }
  188 + ]
  189 +}
  190 +```
  191 +
  192 +
  193 +### 3.3 用户管理模块
  194 +
  195 +#### 3.3.1 接口列表
  196 +
  197 +##### 创建用户
  198 +- **URL**: `POST /api/users`
  199 +- **描述**: 创建新用户
  200 +- **请求参数**:
  201 +```json
  202 +{
  203 + "companyId": 0, // 所属公司ID
  204 + "username": "string", // 用户名
  205 + "email": "string", // 邮箱
  206 + "fullName": "string", // 用户全名(可选)
  207 + "phone": "string", // 电话(可选)
  208 + "role": "string", // 角色(可选)
  209 + "isActive": true // 是否启用(可选)
  210 +}
  211 +```
  212 +
  213 +- **响应**:
  214 +```json
  215 +{
  216 + "code": 200,
  217 + "message": "用户创建成功",
  218 + "data": {
  219 + "id": 0,
  220 + "companyId": 0,
  221 + "username": "string",
  222 + "email": "string",
  223 + "fullName": "string",
  224 + "phone": "string",
  225 + "role": "string",
  226 + "isActive": true,
  227 + "createdAt": "2023-01-01T00:00:00",
  228 + "updatedAt": "2023-01-01T00:00:00"
  229 + }
  230 +}
  231 +```
  232 +
  233 +
  234 +##### 获取用户详情
  235 +- **URL**: `GET /api/users/{id}`
  236 +- **描述**: 根据ID获取用户详情
  237 +- **响应**:
  238 +```json
  239 +{
  240 + "code": 200,
  241 + "message": "查询成功",
  242 + "data": {
  243 + "id": 0,
  244 + "companyId": 0,
  245 + "username": "string",
  246 + "email": "string",
  247 + "fullName": "string",
  248 + "phone": "string",
  249 + "role": "string",
  250 + "isActive": true,
  251 + "createdAt": "2023-01-01T00:00:00",
  252 + "updatedAt": "2023-01-01T00:00:00"
  253 + }
  254 +}
  255 +```
  256 +
  257 +
  258 +##### 获取用户列表
  259 +- **URL**: `GET /api/users`
  260 +- **描述**: 获取所有用户列表
  261 +- **响应**:
  262 +```json
  263 +{
  264 + "code": 200,
  265 + "message": "查询成功",
  266 + "data": [
  267 + {
  268 + "id": 0,
  269 + "companyId": 0,
  270 + "username": "string",
  271 + "email": "string",
  272 + "fullName": "string",
  273 + "phone": "string",
  274 + "role": "string",
  275 + "isActive": true,
  276 + "createdAt": "2023-01-01T00:00:00",
  277 + "updatedAt": "2023-01-01T00:00:00"
  278 + }
  279 + ]
  280 +}
  281 +```
  282 +
  283 +
  284 +##### 根据公司ID获取用户列表
  285 +- **URL**: `GET /api/users/company/{companyId}`
  286 +- **描述**: 根据公司ID获取用户列表
  287 +- **响应**:
  288 +```json
  289 +{
  290 + "code": 200,
  291 + "message": "查询成功",
  292 + "data": [
  293 + {
  294 + "id": 0,
  295 + "companyId": 0,
  296 + "username": "string",
  297 + "email": "string",
  298 + "fullName": "string",
  299 + "phone": "string",
  300 + "role": "string",
  301 + "isActive": true,
  302 + "createdAt": "2023-01-01T00:00:00",
  303 + "updatedAt": "2023-01-01T00:00:00"
  304 + }
  305 + ]
  306 +}
  307 +```
  308 +
  309 +
  310 +### 3.4 关键词管理模块
  311 +
  312 +#### 3.4.1 接口列表
  313 +
  314 +##### 创建关键词
  315 +- **URL**: `POST /api/keywords`
  316 +- **描述**: 创建新关键词
  317 +- **请求参数**:
  318 +```json
  319 +{
  320 + "companyId": 0, // 所属公司ID
  321 + "keyword": "string", // 关键词
  322 + "language": "string", // 语言(可选)
  323 + "category": "string", // 分类(可选)
  324 + "usageCount": 0 // 使用次数(可选)
  325 +}
  326 +```
  327 +
  328 +- **响应**:
  329 +```json
  330 +{
  331 + "code": 200,
  332 + "message": "关键词创建成功",
  333 + "data": {
  334 + "id": 0,
  335 + "companyId": 0,
  336 + "keyword": "string",
  337 + "language": "string",
  338 + "category": "string",
  339 + "usageCount": 0,
  340 + "createdAt": "2023-01-01T00:00:00",
  341 + "updatedAt": "2023-01-01T00:00:00"
  342 + }
  343 +}
  344 +```
  345 +
  346 +
  347 +##### 获取关键词详情
  348 +- **URL**: `GET /api/keywords/{id}`
  349 +- **描述**: 根据ID获取关键词详情
  350 +- **响应**:
  351 +```json
  352 +{
  353 + "code": 200,
  354 + "message": "查询成功",
  355 + "data": {
  356 + "id": 0,
  357 + "companyId": 0,
  358 + "keyword": "string",
  359 + "language": "string",
  360 + "category": "string",
  361 + "usageCount": 0,
  362 + "createdAt": "2023-01-01T00:00:00",
  363 + "updatedAt": "2023-01-01T00:00:00"
  364 + }
  365 +}
  366 +```
  367 +
  368 +
  369 +##### 获取关键词列表
  370 +- **URL**: `GET /api/keywords`
  371 +- **描述**: 获取所有关键词列表
  372 +- **响应**:
  373 +```json
  374 +{
  375 + "code": 200,
  376 + "message": "查询成功",
  377 + "data": [
  378 + {
  379 + "id": 0,
  380 + "companyId": 0,
  381 + "keyword": "string",
  382 + "language": "string",
  383 + "category": "string",
  384 + "usageCount": 0,
  385 + "createdAt": "2023-01-01T00:00:00",
  386 + "updatedAt": "2023-01-01T00:00:00"
  387 + }
  388 + ]
  389 +}
  390 +```
  391 +
  392 +
  393 +##### 根据公司ID获取关键词列表
  394 +- **URL**: `GET /api/keywords/company/{companyId}`
  395 +- **描述**: 根据公司ID获取关键词列表
  396 +- **响应**:
  397 +```json
  398 +{
  399 + "code": 200,
  400 + "message": "查询成功",
  401 + "data": [
  402 + {
  403 + "id": 0,
  404 + "companyId": 0,
  405 + "keyword": "string",
  406 + "language": "string",
  407 + "category": "string",
  408 + "usageCount": 0,
  409 + "createdAt": "2023-01-01T00:00:00",
  410 + "updatedAt": "2023-01-01T00:00:00"
  411 + }
  412 + ]
  413 +}
  414 +```
  415 +
  416 +
  417 +### 3.5 话题管理模块
  418 +
  419 +#### 3.5.1 接口列表
  420 +
  421 +##### 创建话题
  422 +- **URL**: `POST /api/topics`
  423 +- **描述**: 创建新话题
  424 +- **请求参数**:
  425 +```json
  426 +{
  427 + "companyId": 0, // 所属公司ID
  428 + "name": "string", // 话题名称
  429 + "description": "string" // 话题描述(可选)
  430 +}
  431 +```
  432 +
  433 +- **响应**:
  434 +```json
  435 +{
  436 + "code": 200,
  437 + "message": "话题创建成功",
  438 + "data": {
  439 + "id": 0,
  440 + "companyId": 0,
  441 + "name": "string",
  442 + "description": "string",
  443 + "createdAt": "2023-01-01T00:00:00",
  444 + "updatedAt": "2023-01-01T00:00:00"
  445 + }
  446 +}
  447 +```
  448 +
  449 +
  450 +##### 获取话题详情
  451 +- **URL**: `GET /api/topics/{id}`
  452 +- **描述**: 根据ID获取话题详情
  453 +- **响应**:
  454 +```json
  455 +{
  456 + "code": 200,
  457 + "message": "查询成功",
  458 + "data": {
  459 + "id": 0,
  460 + "companyId": 0,
  461 + "name": "string",
  462 + "description": "string",
  463 + "createdAt": "2023-01-01T00:00:00",
  464 + "updatedAt": "2023-01-01T00:00:00"
  465 + }
  466 +}
  467 +```
  468 +
  469 +
  470 +##### 获取话题列表
  471 +- **URL**: `GET /api/topics`
  472 +- **描述**: 获取所有话题列表
  473 +- **响应**:
  474 +```json
  475 +{
  476 + "code": 200,
  477 + "message": "查询成功",
  478 + "data": [
  479 + {
  480 + "id": 0,
  481 + "companyId": 0,
  482 + "name": "string",
  483 + "description": "string",
  484 + "createdAt": "2023-01-01T00:00:00",
  485 + "updatedAt": "2023-01-01T00:00:00"
  486 + }
  487 + ]
  488 +}
  489 +```
  490 +
  491 +
  492 +##### 根据公司ID获取话题列表
  493 +- **URL**: `GET /api/topics/company/{companyId}`
  494 +- **描述**: 根据公司ID获取话题列表
  495 +- **响应**:
  496 +```json
  497 +{
  498 + "code": 200,
  499 + "message": "查询成功",
  500 + "data": [
  501 + {
  502 + "id": 0,
  503 + "companyId": 0,
  504 + "name": "string",
  505 + "description": "string",
  506 + "createdAt": "2023-01-01T00:00:00",
  507 + "updatedAt": "2023-01-01T00:00:00"
  508 + }
  509 + ]
  510 +}
  511 +```
  512 +
  513 +
  514 +### 3.6 AI配置管理模块
  515 +
  516 +#### 3.6.1 接口列表
  517 +
  518 +##### 创建AI配置
  519 +- **URL**: `POST /api/ai-configs`
  520 +- **描述**: 创建新的AI配置
  521 +- **请求参数**:
  522 +```json
  523 +{
  524 + "companyId": 0, // 所属公司ID
  525 + "provider": "string", // AI提供商(DIFY/OPENAI等)
  526 + "name": "string", // 配置名称
  527 + "baseUrl": "string", // 基础URL
  528 + "apiKey": "string", // API密钥
  529 + "modelName": "string", // 模型名称
  530 + "temperature": 0.7, // 温度参数(可选)
  531 + "maxTokens": 2048, // 最大令牌数(可选)
  532 + "isActive": true // 是否启用(可选)
  533 +}
  534 +```
  535 +
  536 +- **响应**:
  537 +```json
  538 +{
  539 + "code": 200,
  540 + "message": "AI配置创建成功",
  541 + "data": {
  542 + "id": 0,
  543 + "companyId": 0,
  544 + "provider": "string",
  545 + "name": "string",
  546 + "baseUrl": "string",
  547 + "apiKey": "string",
  548 + "modelName": "string",
  549 + "temperature": 0.7,
  550 + "maxTokens": 2048,
  551 + "isActive": true,
  552 + "createdAt": "2023-01-01T00:00:00",
  553 + "updatedAt": "2023-01-01T00:00:00"
  554 + }
  555 +}
  556 +```
  557 +
  558 +
  559 +##### 获取AI配置详情
  560 +- **URL**: `GET /api/ai-configs/{id}`
  561 +- **描述**: 根据ID获取AI配置详情
  562 +- **响应**:
  563 +```json
  564 +{
  565 + "code": 200,
  566 + "message": "查询成功",
  567 + "data": {
  568 + "id": 0,
  569 + "companyId": 0,
  570 + "provider": "string",
  571 + "name": "string",
  572 + "baseUrl": "string",
  573 + "apiKey": "string",
  574 + "modelName": "string",
  575 + "temperature": 0.7,
  576 + "maxTokens": 2048,
  577 + "isActive": true,
  578 + "createdAt": "2023-01-01T00:00:00",
  579 + "updatedAt": "2023-01-01T00:00:00"
  580 + }
  581 +}
  582 +```
  583 +
  584 +
  585 +##### 获取AI配置列表
  586 +- **URL**: `GET /api/ai-configs`
  587 +- **描述**: 获取所有AI配置列表
  588 +- **响应**:
  589 +```json
  590 +{
  591 + "code": 200,
  592 + "message": "查询成功",
  593 + "data": [
  594 + {
  595 + "id": 0,
  596 + "companyId": 0,
  597 + "provider": "string",
  598 + "name": "string",
  599 + "baseUrl": "string",
  600 + "apiKey": "string",
  601 + "modelName": "string",
  602 + "temperature": 0.7,
  603 + "maxTokens": 2048,
  604 + "isActive": true,
  605 + "createdAt": "2023-01-01T00:00:00",
  606 + "updatedAt": "2023-01-01T00:00:00"
  607 + }
  608 + ]
  609 +}
  610 +```
  611 +
  612 +
  613 +##### 根据公司ID获取AI配置列表
  614 +- **URL**: `GET /api/ai-configs/company/{companyId}`
  615 +- **描述**: 根据公司ID获取AI配置列表
  616 +- **响应**:
  617 +```json
  618 +{
  619 + "code": 200,
  620 + "message": "查询成功",
  621 + "data": [
  622 + {
  623 + "id": 0,
  624 + "companyId": 0,
  625 + "provider": "string",
  626 + "name": "string",
  627 + "baseUrl": "string",
  628 + "apiKey": "string",
  629 + "modelName": "string",
  630 + "temperature": 0.7,
  631 + "maxTokens": 2048,
  632 + "isActive": true,
  633 + "createdAt": "2023-01-01T00:00:00",
  634 + "updatedAt": "2023-01-01T00:00:00"
  635 + }
  636 + ]
  637 +}
  638 +```
  639 +
  640 +
  641 +## 4. 安全配置
  642 +
  643 +### 4.1 认证机制
  644 +系统使用JWT Token进行用户身份验证:
  645 +1. 用户通过`/api/auth/login`接口登录
  646 +2. 系统验证用户凭据后生成JWT Token
  647 +3. 客户端在后续请求中通过Authorization Header传递Token
  648 +4. 服务端通过JWT Filter验证Token有效性
  649 +
  650 +### 4.2 权限控制
  651 +系统基于角色的访问控制(RBAC):
  652 +- ADMIN: 系统管理员,拥有所有权限
  653 +- EDITOR: 编辑者,可创建和管理内容
  654 +- VIEWER: 查看者,只能查看内容
  655 +
  656 +### 4.3 安全接口
  657 +以下接口无需认证即可访问:
  658 +- `/api/auth/login` - 用户登录
  659 +- `/api/auth/register` - 用户注册
  660 +- `/api/companies` - 公司相关接口
  661 +- `/doc.html` - API文档
  662 +- `/webjars/**` - 静态资源
  663 +- `/v3/api-docs/**` - API文档接口
  664 +
  665 +## 5. 数据库设计
  666 +
  667 +### 5.1 核心表结构
  668 +
  669 +#### 公司表(ai_companies)
  670 +```sql
  671 +CREATE TABLE `ai_companies` (
  672 + [id](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\ai\entity\Feature.java#L15-L17) INT NOT NULL AUTO_INCREMENT COMMENT '公司主键ID',
  673 + [name](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\ai\entity\Feature.java#L22-L23) VARCHAR(255) NOT NULL COMMENT '公司名称',
  674 + [domain](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L21-L22) VARCHAR(100) DEFAULT NULL COMMENT '公司域名,用于多租户访问',
  675 + [status](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L24-L25) ENUM('active','suspended','trial') DEFAULT 'trial' COMMENT '公司状态',
  676 + `trial_expiry_date` DATE DEFAULT NULL COMMENT '试用到期日',
  677 + `default_settings` JSON DEFAULT NULL COMMENT '企业默认设置(JSON)',
  678 + `billing_email` VARCHAR(100) DEFAULT NULL COMMENT '账单邮箱',
  679 + `contact_phone` VARCHAR(20) DEFAULT NULL COMMENT '联系电话',
  680 + [address](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L39-L40) TEXT DEFAULT NULL COMMENT '公司地址',
  681 + `logo_url` VARCHAR(255) DEFAULT NULL COMMENT '公司Logo URL',
  682 + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  683 + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
  684 + PRIMARY KEY ([id](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L15-L16)),
  685 + UNIQUE KEY `uk_companies_domain` ([domain](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L21-L22))
  686 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公司表(多租户根)';
  687 +```
  688 +
  689 +
  690 +#### 用户表(ai_users)
  691 +```sql
  692 +CREATE TABLE `ai_users` (
  693 + [id](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\CompanyDTO.java#L15-L16) INT NOT NULL AUTO_INCREMENT COMMENT '用户主键ID',
  694 + `company_id` INT NOT NULL COMMENT '关联公司ID',
  695 + [username](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L21-L22) VARCHAR(50) NOT NULL COMMENT '用户名',
  696 + [email](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L24-L25) VARCHAR(100) NOT NULL COMMENT '邮箱',
  697 + `password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希',
  698 + `full_name` VARCHAR(100) DEFAULT NULL COMMENT '用户全名',
  699 + `avatar_url` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
  700 + [phone](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L33-L34) VARCHAR(20) DEFAULT NULL COMMENT '电话',
  701 + [role](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L36-L37) ENUM('admin','editor','viewer') DEFAULT 'editor' COMMENT '用户角色',
  702 + `is_active` TINYINT(1) DEFAULT 1 COMMENT '是否启用',
  703 + `last_login` TIMESTAMP NULL DEFAULT NULL COMMENT '最后登录时间',
  704 + `last_password_change` TIMESTAMP NULL DEFAULT NULL COMMENT '最后密码修改时间',
  705 + `failed_login_attempts` INT DEFAULT 0 COMMENT '登录失败次数',
  706 + `locked_until` TIMESTAMP NULL DEFAULT NULL COMMENT '锁定截止时间',
  707 + [timezone](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L54-L55) VARCHAR(50) DEFAULT 'Asia/Shanghai' COMMENT '时区',
  708 + [preferences](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L57-L58) JSON DEFAULT NULL COMMENT '用户个性化设置(JSON)',
  709 + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  710 + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  711 + PRIMARY KEY ([id](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L15-L16)),
  712 + UNIQUE KEY `uk_users_username` ([username](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L21-L22)),
  713 + UNIQUE KEY `uk_users_email` ([email](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L24-L25)),
  714 + KEY `idx_users_company_id` (`company_id`),
  715 + CONSTRAINT `fk_users_company` FOREIGN KEY (`company_id`) REFERENCES `ai_companies` ([id](file://F:\AIGEO\aigeo\aigeo\src\main\java\com\aigeo\company\dto\UserDTO.java#L15-L16))
  716 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';
  717 +```
  718 +
  719 +
  720 +## 6. 部署说明
  721 +
  722 +### 6.1 环境要求
  723 +- Java 17+
  724 +- MySQL 8.0+
  725 +- Redis
  726 +- Maven 3.8+
  727 +
  728 +### 6.2 配置文件
  729 +主要配置文件为`src/main/resources/application.yml`,包含:
  730 +- 服务器端口配置
  731 +- 数据库连接配置
  732 +- Redis配置
  733 +- JWT密钥配置
  734 +- 日志配置
  735 +
  736 +### 6.3 构建与运行
  737 +```bash
  738 +# 构建项目
  739 +mvn clean package
  740 +
  741 +# 运行项目
  742 +java -jar target/aigeo-1.0.0.jar
  743 +```
  744 +
  745 +
  746 +### 6.4 访问地址
  747 +- API接口: http://localhost:8080/api/
  748 +- API文档: http://localhost:8080/api/doc.html
  749 +
  750 +## 7. 开发规范
  751 +
  752 +### 7.1 代码结构
  753 +```
  754 +src/main/java/com/aigeo
  755 +├── AigeoApplication.java # 应用启动类
  756 +├── ai/ # AI配置模块
  757 +│ ├── controller/
  758 +│ ├── dto/
  759 +│ ├── entity/
  760 +│ ├── repository/
  761 +│ └── service/
  762 +├── article/ # AI文章生成模块
  763 +│ ├── controller/
  764 +│ ├── dto/
  765 +│ ├── entity/
  766 +│ ├── repository/
  767 +│ └── service/
  768 +├── auth/ # 认证模块
  769 +│ └── dto/
  770 +├── common/ # 公共组件
  771 +│ ├── enums/ # 枚举类
  772 +│ ├── exception/ # 异常处理
  773 +│ └── config/ # 配置类
  774 +├── company/ # 公司与用户模块
  775 +│ ├── controller/
  776 +│ ├── dto/
  777 +│ ├── entity/
  778 +│ ├── repository/
  779 +│ └── service/
  780 +├── config/ # 配置类
  781 +├── controller/ # 控制器层(旧结构,待迁移)
  782 +├── entity/ # 实体类(旧结构,待迁移)
  783 +├── exception/ # 异常处理
  784 +├── landingpage/ # 落地页生成模块
  785 +│ ├── controller/
  786 +│ ├── dto/
  787 +│ ├── entity/
  788 +│ ├── repository/
  789 +│ └── service/
  790 +├── repository/ # 数据访问层(旧结构,待迁移)
  791 +├── service/ # 业务逻辑层(旧结构,待迁移)
  792 +├── util/ # 工具类
  793 +└── website/ # 网站构建模块(待实现)
  794 +```
  795 +
  796 +
  797 +### 7.2 编码规范
  798 +- 使用Lombok简化实体类代码
  799 +- 遵循RESTful API设计规范
  800 +- 使用JPA注解进行ORM映射
  801 +- 采用分层架构设计(Controller-Service-Repository)
  802 +- 统一异常处理和响应格式
  803 +
  804 +## 8. 常见问题与解决方案
  805 +
  806 +### 8.1 403 Forbidden错误
  807 +问题原因:请求路径不正确或缺少认证信息
  808 +解决方案:
  809 +1. 确认URL路径正确,应为`http://localhost:8080/api/[endpoint]`
  810 +2. 对于需要认证的接口,确保在请求头中添加`Authorization: Bearer [token]`
  811 +
  812 +### 8.2 Content-Type错误
  813 +问题原因:请求的Content-Type不正确
  814 +解决方案:
  815 +1. 确保POST请求设置正确的Content-Type: application/json
  816 +2. 确保请求体为有效的JSON格式
  817 +
  818 +### 8.3 数据库连接问题
  819 +问题原因:数据库配置不正确
  820 +解决方案:
  821 +1. 检查application.yml中的数据库连接配置
  822 +2. 确认MySQL服务正常运行
  823 +3. 确认数据库用户具有相应的权限
  824 +
  825 +以上是AIGEO AI内容生成平台的详细开发文档和接口说明。如需更详细的信息,请参考具体的代码实现和数据库表结构。