Commit 69588bae authored by 郭腾飞's avatar 郭腾飞

项目规范初始化

parents
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
[*.java]
indent_size = 4
[*.md]
trim_trailing_whitespace = false
* text=auto eol=lf
# Documents and design source files
*.doc binary
*.docx binary
*.fig binary
*.pdf binary
*.ppt binary
*.pptx binary
*.sketch binary
*.xls binary
*.xlsx binary
# Media and archives
*.7z binary
*.gif binary
*.jpeg binary
*.jpg binary
*.mov binary
*.mp3 binary
*.mp4 binary
*.png binary
*.rar binary
*.webp binary
*.zip binary
# Operating systems and editors
.DS_Store
Thumbs.db
.idea/
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
*.iml
# Local environment and secrets
.env
.env.*
!.env.example
*.local
# Logs and temporary files
*.log
tmp/
temp/
# Java and Maven
target/
*.class
.mvn/timing.properties
# Node.js
node_modules/
dist/
coverage/
.vite/
.nuxt/
# Test and tool caches
.cache/
.eslintcache
.stylelintcache
# Local infrastructure data
infra/docker/data/
# AGENTS.md
本文件适用于整个仓库。修改子目录前,还应遵守该子目录中更具体的 `AGENTS.md`(如后续存在)。
## 项目定位
- 产品名称:梦畅AIGC
- 项目类型:AIGC 内容生成 Web 平台
- 仓库模式:前后端单仓库
## 技术约束
- `apps/web-vue/`:Vue 3 + TypeScript 主前端,内嵌 React + TypeScript 子模块。
- `services/api/`:Spring Boot 后端,JDK 21,Maven。
- Maven 坐标约定:`groupId=mc``artifactId=mcaigc`
- Java 基础包名约定:`mc.mcaigc`
- PostgreSQL 是主数据库,Redis 用于缓存,MinIO 用于对象存储。
- `infra/docker/` 只承载本地开发环境相关文件。
## 修改原则
1. 目录、源代码标识符和配置键使用英文;项目文档使用中文。
2. React 子模块与 Vue 主应用之间通过明确的公开契约交互,不直接依赖彼此的内部实现。
3. 后端模块不得绕过既定分层直接访问其他模块内部实现。
4. 原始资料只追加、不覆盖,按 `resources/raw/YYYY/YYYY-MM-DD/` 归档。
5. 不为尚未确认的需求预建模块、依赖或抽象。
6. 修改项目结构、核心技术选型或跨模块契约时,同步更新 `docs/` 中的相关文档。
## 验证要求
- 只运行与改动范围相匹配的最小验证。
- 新增业务代码后,应为关键分支、数据转换和边界条件补充自动化测试。
- 在工具链尚未初始化前,不编造不可执行的构建或测试命令。
# 梦畅AIGC
梦畅AIGC 是一个用于 AIGC 内容生成的 Web 平台。本仓库采用单仓库结构,包含 Vue 3 主前端(内嵌 React 子模块)、Spring Boot 后端、本地开发基础设施,以及项目文档和原始资料。
当前仓库仅完成目录与项目规范初始化,尚未生成任何业务代码或运行配置。
## 技术基线
- 主前端:Vue 3 + TypeScript
- 内嵌子模块:React + TypeScript,位于 Vue 主应用内部
- 后端:Spring Boot、JDK 21、Maven
- 数据库:PostgreSQL
- 缓存:Redis
- 对象存储:MinIO
- 本地环境:Docker
## 仓库结构
```text
.
├── apps/
│ └── web-vue/ # Vue 3 主前端,内嵌 React 子模块
├── services/
│ └── api/ # Spring Boot 后端
├── infra/
│ └── docker/ # 本地开发基础设施
├── resources/
│ └── raw/ # 按日期归档的原始资料
├── docs/
│ ├── product/ # 产品需求与维护中的产品文档
│ └── decisions/ # 重要架构决策记录
├── AGENTS.md # 开发和智能代理协作约定
└── README.md # 项目入口
```
目录用途和约束详见:
- [项目规范](docs/project-conventions.md)
- [架构约定](docs/architecture.md)
- [开发约定](docs/development.md)
- [资源管理规范](docs/resource-management.md)
## 当前待决策项
- Node.js 版本和前端包管理器
- React 子模块与 Vue 主应用的通信契约
- 数据库迁移工具
- 开发环境服务端口和容器编排细节
以上事项应在开始对应代码开发前确定,不在本次初始化中预设。
# 架构约定
## 1. 系统边界
梦畅AIGC 采用前后端分离的单仓库结构:
```text
Vue 3 主应用
└── React 子模块 ──┐
├─ HTTP/API ─ Spring Boot API ─ PostgreSQL
│ ├─ Redis
│ └─ MinIO
```
当前图仅描述已确认的系统边界,不代表最终部署拓扑。
## 2. 前端
- `apps/web-vue/` 是主要用户入口,也是 React 子模块的宿主应用。
- React 子模块位于 Vue 主应用内部,随主应用一起构建和部署。
- React 子模块与 Vue 主应用之间通过明确的挂载、输入、输出和事件契约交互。
## 3. 后端
- 后端位于 `services/api/`,使用 Spring Boot、JDK 21 和 Maven。
- Maven 坐标使用 `mc:mcaigc`,Java 基础包名使用 `mc.mcaigc`
- API、领域逻辑和基础设施访问应保持清晰边界;具体模块随真实业务出现后再建立。
- 数据库结构变更必须通过迁移管理,但迁移工具尚待选定。
## 4. 数据与基础设施
- PostgreSQL:持久化业务数据。
- Redis:缓存和适合其数据模型的短期状态;不得作为唯一持久化来源。
- MinIO:存储上传文件、生成内容等对象数据;数据库只保存必要的对象元数据和引用。
- Docker:用于本地开发依赖,不预设生产部署方式。
## 5. 待决策事项
下列事项应在相关实现开始前确定:
1. React 子模块的挂载、状态和事件通信契约。
2. API 契约格式和版本策略。
3. PostgreSQL 数据库迁移工具。
4. MinIO 对象命名、生命周期和访问控制策略。
5. 本地 Docker 服务端口、卷和初始化流程。
# 开发约定
## 1. 环境基线
- Java:JDK 21
- 后端构建:Maven
- 前端:Vue 3 + TypeScript、React + TypeScript
- 本地依赖:Docker 中运行 PostgreSQL、Redis 和 MinIO
Node.js 版本、前端包管理器和具体框架版本尚未确定。初始化前端代码时必须一次性选定并提交锁文件。
## 2. 分支与提交
- 新功能和修复在独立分支完成,分支名使用英文并体现目的。
- 一次提交只处理一个清晰主题,提交信息说明“做了什么”。
- 不提交构建产物、依赖目录、本地数据、日志和真实环境配置。
- 原始资料的新增或修订应在提交信息中说明来源和日期。
## 3. 代码质量
- 各应用初始化时建立可执行的格式化、静态检查、测试和构建命令。
- 新增依赖前确认标准库、平台能力或现有依赖不能满足需求。
- 跨模块调用使用公开契约,不依赖另一个模块的内部文件结构。
- 数据库、缓存和对象存储访问必须处理超时、失败和资源释放。
## 4. 配置管理
- 本地默认值和必要变量写入 `.env.example` 或应用对应的示例配置。
- 密钥只通过本地环境变量或安全的密钥管理方式提供。
- Docker 编排加入后,应为 PostgreSQL、Redis 和 MinIO 配置健康检查及持久化卷。
## 5. 初始化后的命令维护
当前没有业务工程,因此不提供不可执行的占位命令。后续初始化各应用时,应在根 `README.md` 补充以下真实命令:
- 安装依赖
- 启动本地基础设施
- 启动前端和后端
- 运行测试与静态检查
- 构建发布产物
# 项目规范
## 1. 目标
本规范定义梦畅AIGC 仓库的目录职责、命名方式和协作边界。当前阶段只建立规范,不提前生成业务代码、依赖配置或 Docker 编排文件。
## 2. 目录职责
| 路径 | 用途 | 主要内容 |
| --- | --- | --- |
| `apps/web-vue/` | 主 Web 应用 | Vue 3、TypeScript 源码,以及内嵌 React 子模块 |
| `services/api/` | 后端 API | Spring Boot、JDK 21、Maven 工程 |
| `infra/docker/` | 本地基础设施 | PostgreSQL、Redis、MinIO 的本地编排与初始化配置 |
| `resources/raw/` | 原始资料 | Excel、Markdown、产品原型源文件及其他输入资料 |
| `docs/product/` | 产品资料 | 已整理、持续维护的需求和产品说明 |
| `docs/decisions/` | 决策记录 | 影响多个模块或长期维护的重要架构决策 |
原始输入放在 `resources/raw/`;从原始输入提炼出的、需要持续维护的正式文档放在 `docs/`。同一文件不在两个目录重复维护。
## 3. 命名规范
- 除根目录文件外,目录和文件名使用英文小写,单词间使用连字符,例如 `content-review.md`
- 根目录文件可以使用项目和工具约定的标准名称,例如 `README.md``AGENTS.md``.editorconfig`
- Java 包名全小写;基础包名为 `mc.mcaigc`
- TypeScript 代码命名遵循各前端项目后续确定的统一检查规则。
- 文档正文使用中文;技术名词、代码标识符和命令保留英文。
- 日期统一使用北京时间(Asia/Shanghai)对应的 `YYYY-MM-DD`
## 4. 模块边界
- React 子模块随 Vue 主应用一起维护依赖、构建配置和测试。
- React 子模块不得被设计为独立部署的前端应用;其挂载、状态和通信方式应通过 Vue 主应用的公开契约实现。
- 前后端通过版本化 API 契约交互,不共享运行时内部实现。
## 5. 配置与安全
- 真实密钥和环境配置不得提交到 Git。
- 可提交的环境变量模板命名为 `.env.example`,只包含无敏感信息的示例值。
- 本地 Docker 数据卷落在 `infra/docker/data/` 时必须保持 Git 忽略。
- 大型资源当前允许直接提交 Git;当仓库体积或克隆时间明显影响协作时,再评估 Git LFS 或外部资产库。
## 6. 文档维护
- 代码行为、目录职责或技术选型发生变化时,同一变更中更新相关文档。
- 仅记录会影响实现和协作的约定,不为未知需求预写设计。
- 重要且难以逆转的决策在 `docs/decisions/` 单独记录背景、选择和后果。
# 资源管理规范
## 1. 适用范围
`resources/raw/` 用于保存项目收到的原始输入,包括但不限于:
- Excel 工作簿
- Markdown 原稿
- 产品原型设计源文件和导出文件
- 其他用于 AIGC 内容生产的输入资料
整理后需要持续维护的需求、设计说明和架构文档应移入 `docs/`,不再作为原始输入管理。
## 2. 日期目录
原始资料按进入项目的北京时间归档:
```text
resources/raw/
└── YYYY/
└── YYYY-MM-DD/
├── source-name.xlsx
├── prototype-name.fig
└── notes.md
```
例如,2026 年 8 月 13 日收到的资料存放在 `resources/raw/2026/2026-08-13/`
## 3. 文件命名
- 文件名使用英文小写、数字和连字符,不使用空格。
- 文件名应描述内容,不使用 `new``final-final` 等不明确后缀。
- 同日收到同名新版本时追加版本号,例如 `product-list-v02.xlsx`
- 无法重命名的外部交付文件可保留原名,但应在同目录索引中记录说明。
## 4. 原始性与版本
- 原始资料只追加,不覆盖已有文件。
- 需要修改时保留原文件并新增版本;不得直接编辑后冒充原始输入。
- 每个日期目录建议添加 `index.md`,记录来源、接收时间、用途和授权限制。
- 不确定版权或授权范围的资料必须在 `index.md` 标注,不得直接用于对外发布。
建议索引格式:
```markdown
# 资料索引
| 文件 | 来源 | 接收时间 | 用途 | 授权或限制 |
| --- | --- | --- | --- | --- |
| example.xlsx | 产品团队 | 2026-08-13 | 内容生成输入 | 仅限内部使用 |
```
## 5. Git 管理
- 当前原始资料和大型文件均直接提交到 Git。
- 提交前检查文件中是否包含个人信息或其他敏感数据。
- 二进制文件无法有效合并;多人协作修改前应先确认文件负责人。
- 当仓库体积显著影响克隆、拉取或 CI 时,再评估 Git LFS 或对象存储归档。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment