insCodeAI 尝试
项目:个人代码仓库与交付集成平台
技术栈:python fastapi
注意:fastapi 为异步框架,数据库 orm 中使用 asyncio 的异步方法,不能使用父子关系的异步方法,否则会报错
目标:
实现个人代码的版本管理、以及个人与甲方交付的集成
个人代码版本管理:
1. 创建个人代码项目仓库
2. 指定项目进行项目更新
3. 不同版本之间的同名文件可实现差异对比查看
4. 可实现版本间的文件同步
5. 可通过接口直接对某个项目进行版本更新
6. 可单独对项目的某个文件进行版本更新
7. 可实现指定版本的下载
8. 可实现指定版本的文件内容查看
9. 可实现指定版本的文件内容下载
10.版本提交记录与历史追踪
11.增量更新与完整版本管理
12.分支管理
13.文件操作精细化管理
14.版本依赖与关联
15.本地与云端同步优化
16.版本安全与权限控制
17.版本快照与时间点还原
18.大文件处理优化
19.版本对比增强
20.操作日志与审计
21.版本导出格式多样化
22.冲突解决机制
需求提交与交付:
1. 可一键生成可访问对应项目的账号密码
2. 客户使用账户,可对指定的项目进行需求提交(支持选择需求类型 / 优先级)
3. 可一键生成需求提交的模板
4. 可查看需求提交的历史记录
5. 可查看需求提交的详情
6. 需求全生命周期状态管理(预设 “待处理 / 开发中 / 已完成 / 已交付” 等状态,客户可查看状态,开发者可编辑状态并添加变更备注)
7. 需求与版本的关联管理(记录需求关联的版本,客户可查看关联版本内容,开发者可编辑关联关系;支持设置 “自动关联最新版本” 或 “手动选择版本”,版本更新时提示客户)
8. 需求与文件的关联管理(支持为需求关联特定文件,客户可查看关联文件内容,开发者可编辑关联关系及文件内容)
9. 需求沟通与反馈(支持针对需求留言沟通,沟通记录与需求绑定;需求状态变更时自动通知客户)
10. 交付确认机制(需求关联版本完成后,开发者可发起交付确认,客户可确认 “已验收” 或 “需修改”,记录确认结果)
11. 客户权限细分(可设置客户 “是否允许提交新需求 / 查看其他客户需求 / 下载关联版本” 等权限)
12. 需求统计与报表(开发者可查看需求处理效率 / 类型占比,可导出需求清单报表)
13. 客户查看的版本默认为最新的版本
项目目录参考如下
|—project
| |—app
| | |—module
| | | |—routers
| | | |—schemas
| | | |—services
| | | |—init.py
| |—curd
| |—models
| |—tools
|—.env
|—main.py
|—requirements.txt
project 是项目根
app 为项目的 app 目录
app 目录下的 module 为当前项目的不同模块
module 目录下的 routers 为当前模块的路由
module 目录下的 schemas 为当前模块的数据模型
module 目录下的 services 为当前模块的业务逻辑
module 目录下的 init.py 为当前模块的初始化文件
curd 为项目的 models 中不同数据库得同名 curd 文件目录
models 为项目的 models 目录
tools 为项目的工具目录
.env 为项目的环境变量文件
main.py 为项目的入口文件
requirements.txt 为项目的依赖文件
以上目录结构为参考,可以添加不同模块,模块下按照参考目录结构添加不同文件
个人代码版本管理模块设计
根据需求,建议将个人代码版本管理拆分为以下 4 个核心模块,每个模块负责不同的功能领域:
1. 项目管理模块(project_management)
Models
Project - 项目基本信息(ID、名称、描述、创建时间、所有者、权限设置等)
ProjectMember - 项目成员及权限关联
ProjectSetting - 项目配置(默认分支、大文件处理策略等)
Schemas
ProjectCreate - 创建项目请求模型
ProjectUpdate - 更新项目信息请求模型
ProjectResponse - 项目信息响应模型
ProjectMemberSchema - 项目成员信息模型
Routers
POST /projects - 创建新项目仓库
GET /projects - 获取项目列表
GET /projects/{project_id} - 获取项目详情
PUT /projects/{project_id} - 更新项目信息
DELETE /projects/{project_id} - 删除项目
POST /projects/{project_id}/members - 添加项目成员
GET /projects/{project_id}/settings - 获取项目设置
PUT /projects/{project_id}/settings - 更新项目设置
Services
项目创建与基础信息管理
项目成员与权限管理
项目配置管理
项目整体状态监控
2. 版本与分支管理模块(version_control)
Models
Version - 版本信息(版本号、创建时间、描述、关联项目、是否为完整版本等)
Branch - 分支信息(分支名、创建时间、关联项目、当前 HEAD 版本等)
VersionDependency - 版本依赖关系
VersionSnapshot - 版本快照信息
Schemas
VersionCreate - 创建版本请求模型
VersionResponse - 版本信息响应模型
BranchCreate - 创建分支请求模型
BranchResponse - 分支信息响应模型
VersionDependencySchema - 版本依赖关系模型
Routers
POST /projects/{project_id}/versions - 创建新版本
GET /projects/{project_id}/versions - 获取项目所有版本
GET /projects/{project_id}/versions/{version_id} - 获取指定版本详情
POST /projects/{project_id}/versions/{version_id}/export - 导出指定版本
POST /projects/{project_id}/versions/{version_id}/restore - 从版本还原
POST /projects/{project_id}/branches - 创建新分支
GET /projects/{project_id}/branches - 获取项目所有分支
PUT /projects/{project_id}/branches/{branch_id}/merge - 合并分支
GET /projects/{project_id}/versions/dependencies - 获取版本依赖关系
Services
版本创建与管理(完整版本 / 增量更新)
分支创建、切换与合并
版本依赖关系管理
版本快照与时间点还原
版本导出(多种格式)
3. 文件管理模块(file_management)
Models
ProjectFile - 文件基本信息(文件名、路径、类型、大小等)
FileVersion - 文件版本记录(关联文件、版本号、内容哈希、修改时间等)
FileDiff - 文件差异记录(关联两个文件版本、差异内容等)
LargeFileChunk - 大文件分片信息
Schemas
FileCreate - 创建文件请求模型
FileUpdate - 更新文件请求模型
FileResponse - 文件信息响应模型
FileVersionResponse - 文件版本信息模型
FileDiffResponse - 文件差异信息模型
Routers
POST /projects/{project_id}/files - 上传新文件
PUT /projects/{project_id}/files/{file_id} - 更新文件内容
GET /projects/{project_id}/files - 获取项目文件列表
GET /projects/{project_id}/files/{file_id}/versions - 获取文件所有版本
GET /projects/{project_id}/files/{file_id}/versions/{version_id} - 获取指定版本文件内容
POST /projects/{project_id}/files/{file_id}/versions/{version_id}/download - 下载指定版本文件
GET /projects/{project_id}/files/{file_id}/versions/{v1_id}/diff/{v2_id} - 对比两个版本文件差异
POST /projects/{project_id}/files/sync - 同步版本间文件
Services
文件 CRUD 操作
文件版本管理与历史记录
文件差异计算与展示
大文件分片上传与下载
文件同步与冲突解决
本地与云端文件同步
4. 操作日志与审计模块(audit_logging)
Models
OperationLog - 操作日志(操作用户、操作类型、操作对象、操作时间、操作结果等)
AuditRecord - 审计记录(关联日志、审计状态、审计时间等)
Schemas
OperationLogResponse - 操作日志响应模型
AuditRecordResponse - 审计记录响应模型
LogQueryParams - 日志查询参数模型
Routers
GET /projects/{project_id}/logs - 获取项目操作日志
GET /projects/{project_id}/logs/{log_id} - 获取日志详情
GET /projects/{project_id}/audit - 获取项目审计记录
POST /projects/{project_id}/logs/query - 高级日志查询
Services
操作日志记录与管理
审计记录生成与处理
日志查询与统计分析
安全事件监控与告警
跨模块关联说明
项目与版本:一个项目可以有多个版本,版本通过外键关联到项目
版本与文件:一个版本包含多个文件版本,通过多对多关系关联
分支与版本:一个分支可以指向多个版本,形成版本演进历史
操作日志与其他实体:操作日志可以关联到任何实体(项目、版本、文件等)
这种模块划分既遵循了单一职责原则,又能很好地覆盖所有需求点,同时便于未来功能扩展和维护。
需求提交与交付模块设计
根据需求,建议将 “需求提交与交付” 拆分为以下 3 个核心模块,覆盖客户管理、需求全生命周期、交付确认与统计等核心场景,各模块职责清晰且便于协作:
1. 客户与权限管理模块(client_management)
该模块聚焦客户账号生成、权限细分与账号关联项目管理,是需求提交与交付的基础支撑。
Models
ClientAccount:客户账号信息(账号 ID、用户名、加密密码、创建时间、关联项目 ID、状态(启用 / 禁用)等)
ClientPermission:客户权限配置(权限 ID、关联客户账号 ID、允许提交新需求(布尔值)、允许查看其他客户需求(布尔值)、允许下载关联版本(布尔值)、权限生效时间等)
ClientProjectRel:客户与项目关联关系(关联 ID、客户账号 ID、项目 ID、关联时间、是否默认项目等)
Schemas
ClientAccountCreate:生成客户账号请求模型(需传入关联项目 ID,支持默认生成密码或自定义密码)
ClientAccountResponse:客户账号响应模型(返回用户名、初始密码(首次生成时)、关联项目、账号状态等)
ClientPermissionUpdate:客户权限更新模型(支持单独修改某一项权限,如允许提交新需求)
ClientPermissionResponse:客户权限响应模型(返回客户所有权限配置详情)
ClientProjectRelResponse:客户与项目关联响应模型(返回关联项目列表及默认项目标识)
Routers
POST /projects/{project_id}/clients/generate-account:为指定项目一键生成客户账号
GET /projects/{project_id}/clients:获取指定项目下所有客户账号列表
GET /clients/{client_id}/permissions:获取指定客户的权限配置
PUT /clients/{client_id}/permissions:更新指定客户的权限配置
POST /clients/{client_id}/projects/{project_id}/bind:为客户绑定新的项目
PUT /clients/{client_id}/status:启用 / 禁用客户账号
Services
客户账号生成(自动生成用户名 / 密码,支持密码加密存储)
客户权限细分配置与校验(控制需求提交、需求查看、版本下载等操作权限)
客户与项目的关联管理(绑定 / 解绑项目,设置默认项目)
客户账号状态管理(启用 / 禁用,防止无效账号访问)
2. 需求管理模块(requirement_management)
该模块覆盖需求从提交到状态流转、关联版本 / 文件、沟通反馈的全生命周期管理,是核心业务模块。
Models
Requirement:需求核心信息(需求 ID、关联项目 ID、提交客户 ID、需求标题、需求描述、需求类型(如功能需求 / BUG 修复)、优先级(高 / 中 / 低)、状态(待处理 / 开发中 / 已完成 / 已交付)、创建时间、最后更新时间等)
RequirementTemplate:需求模板(模板 ID、模板名称、模板内容(预设固定字段与提示)、适用项目 ID 等)
RequirementVersionRel:需求与版本关联关系(关联 ID、需求 ID、版本 ID、关联方式(自动关联 / 手动关联)、关联时间、是否通知客户(布尔值)等)
RequirementFileRel:需求与文件关联关系(关联 ID、需求 ID、文件 ID、文件版本 ID、关联备注、关联时间等)
RequirementComment:需求沟通记录(评论 ID、需求 ID、评论人 ID(客户 / 开发者)、评论内容、评论时间、是否 @对方(布尔值)等)
RequirementStatusLog:需求状态变更日志(日志 ID、需求 ID、变更前状态、变更后状态、变更人 ID、变更备注、变更时间等)
Schemas
RequirementCreate:需求提交模型(需传入项目 ID、需求类型、优先级、需求描述等,关联客户 ID 自动获取)
RequirementUpdate:需求更新模型(支持修改需求描述、优先级,状态仅开发者可改)
RequirementResponse:需求详情响应模型(返回需求全量信息、关联版本 / 文件列表、最新沟通记录等)
RequirementTemplateCreate:需求模板创建模型(传入模板名称、模板内容、适用项目等)
RequirementTemplateResponse:需求模板响应模型(返回模板详情,支持直接用于生成需求)
RequirementRelateVersion:需求关联版本模型(传入需求 ID、版本 ID、关联方式,支持设置是否通知客户)
RequirementCommentCreate:需求评论模型(传入需求 ID、评论内容,评论人 ID 自动获取)
RequirementStatusUpdate:需求状态更新模型(传入需求 ID、目标状态、变更备注,仅开发者可提交)
Routers
GET /projects/{project_id}/requirement-templates:获取指定项目的需求模板列表
POST /projects/{project_id}/requirement-templates:创建需求模板(开发者操作)
GET /projects/{project_id}/requirement-templates/{template_id}:获取指定需求模板详情(支持基于模板生成需求)
POST /projects/{project_id}/requirements:提交新需求(客户需有 “允许提交新需求” 权限)
GET /projects/{project_id}/requirements:获取指定项目的需求列表(客户仅看自己提交的,开发者看所有)
GET /projects/{project_id}/requirements/{req_id}:获取指定需求的详情(含关联版本 / 文件、沟通记录)
PUT /projects/{project_id}/requirements/{req_id}/status:更新需求状态(开发者操作,需提交变更备注)
POST /projects/{project_id}/requirements/{req_id}/versions/relate:关联需求与版本(支持自动关联最新版本)
POST /projects/{project_id}/requirements/{req_id}/files/relate:关联需求与文件(开发者操作,支持指定文件版本)
GET /projects/{project_id}/requirements/{req_id}/comments:获取需求的沟通记录
POST /projects/{project_id}/requirements/{req_id}/comments:提交需求沟通评论(客户 / 开发者均可)
GET /projects/{project_id}/requirements/{req_id}/status-logs:查看需求的状态变更历史
Services
需求模板生成与管理(支持一键基于模板创建需求,减少客户输入成本)
需求提交与全生命周期状态管理(控制状态变更权限,记录变更日志)
需求与版本的关联(支持自动关联最新版本 / 手动选择版本,版本更新时触发客户通知)
需求与文件的关联(支持关联指定文件版本,客户可查看关联文件内容)
需求沟通反馈(绑定沟通记录与需求,支持 @提醒,确保沟通可追溯)
需求权限控制(客户仅查看自己的需求,开发者查看所有需求,基于权限配置过滤)
3. 交付确认与统计模块(delivery_analytics)
该模块聚焦需求交付确认流程与需求数据统计,覆盖交付闭环与数据复盘场景。
Models
DeliveryConfirmation:交付确认记录(确认 ID、需求 ID、关联版本 ID、发起确认人 ID(开发者)、确认状态(待确认 / 已验收 / 需修改)、客户确认意见、发起时间、确认时间等)
RequirementStat:需求统计数据(统计 ID、关联项目 ID、统计周期(日 / 周 / 月)、需求总数、各类型需求占比、各状态需求数量、平均处理时长等)
RequirementReport:需求报表(报表 ID、关联项目 ID、报表类型(需求清单 / 处理效率分析)、报表内容(JSON/Excel 格式)、生成时间、生成人 ID 等)
Schemas
DeliveryInitiate:发起交付确认模型(传入需求 ID、关联版本 ID、交付说明,开发者操作)
DeliveryConfirmationResponse:交付确认详情模型(返回确认状态、客户意见、关联需求 / 版本信息等)
DeliveryConfirm:客户确认交付模型(传入确认状态(已验收 / 需修改)、确认意见,客户操作)
RequirementStatQuery:需求统计查询模型(传入项目 ID、统计周期,支持指定时间范围)
RequirementStatResponse:需求统计响应模型(返回各维度统计数据,支持可视化展示)
RequirementReportGenerate:需求报表生成模型(传入项目 ID、报表类型,支持选择导出格式)
RequirementReportResponse:需求报表响应模型(返回报表下载链接、生成时间等)
Routers
POST /projects/{project_id}/requirements/{req_id}/delivery/initiate:发起需求交付确认(开发者操作)
GET /projects/{project_id}/requirements/{req_id}/delivery:查看需求的交付确认状态
PUT /projects/{project_id}/requirements/{req_id}/delivery/confirm:客户确认交付结果(需登录客户账号)
GET /projects/{project_id}/requirements/statistics:获取指定项目的需求统计数据(开发者操作)
POST /projects/{project_id}/requirements/reports/generate:生成需求报表(开发者操作,支持 Excel/CSV 格式)
GET /projects/{project_id}/requirements/reports/{report_id}/download:下载需求报表(开发者操作)
Services
交付确认流程管理(开发者发起确认、客户确认结果,记录确认意见与时间,形成交付闭环)
需求统计分析(计算各周期需求数量、类型占比、处理效率,支持多维度筛选)
需求报表生成与导出(支持多样化格式,如 Excel/CSV,便于开发者复盘与甲方汇报)
客户版本查看默认规则(客户访问需求关联版本时,默认展示最新版本,需校验 “允许下载关联版本” 权限)