【Code with SOLO】一人+AI,自己一行代码不用写,开发文档管理系统(DMS)


一、摘要

开发 DocumentMS,一个企业级文档管理系统,支持基于角色的访问控制、SSO 单点登录、MinIO 对象存储、文件锁定协作、QR 码访问、虚拟云盘等功能,让团队成员安全高效地共享和管理文件。全程使用 Trae SOLO 辅助开发,一行代码没写。


二、背景

需要一套轻量级文档管理系统,但市面上的方案太多了不知道怎么选,就自己写吧,要不这篇文章怎么水出来呢,其实文章也是SOLO写的,我改了些句子,截了几张图。

下面内容随便看,解释权在AI和个人理解。

痛点

  • 现有网盘权限粒度太粗,无法按文件夹精细控制

  • 需要与企业 SSO 集成,不希望单独管理用户账号

  • 多人编辑 Office 文件没有锁定机制,经常出现冲突版本

  • 需要扫码即可访问文件夹,适合车间/仓库等无键盘环境

  • 需要一个 Windows 虚拟云盘客户端,像本地磁盘一样操作

现有工具的问题

  • ShxPoint、Nxcloud 太重,部署维护成本高

  • 网盘方案(如 Gxxgle Drive、xxxDrive)无法满足企业 SSO 集成

  • 开源方案(如 Sxxxfile)权限模型不够灵活

于是我决定:用 AI 辅助开发,做一套专为自己使用的轻量级 DMS。


三、实践过程

1. 技术选型与架构

为什么选择这套技术栈

┌─────────────────────────────────────────────────────────┐
│              Blazor Web App + WPF Client                 │
│  (用户浏览器)        (Windows 虚拟云盘)                    │
└──────────────┬──────────────────────┬─────────────────────┘
               │                      │
┌──────────────▼──────────────────────▼─────────────────────┐
│                   DocumentMS.Api (.NET 10)                 │
│  - ASP.NET Core Web API                                    │
│  - JWT Bearer Authentication                               │
│  - CQRS Pattern with MediatR                               │
└──────────────┬─────────────────────────┬───────────────────┘
               │                         │
┌──────────────▼────────────┐  ┌────────▼────────────────────┐
│  PostgreSQL / SQLite      │  │  MinIO (S3 对象存储)        │
│  - EF Core                │  │  - 文件存储                 │
│  - 审计日志/权限/版本      │  │  - 预签名 URL 下载          │
└───────────────────────────┘  └─────────────────────────────┘
               │
┌──────────────▼────────────┐
│  External SSO Server      │
│  - OIDC 单点登录          │
│  - NATS 角色实时同步       │
└───────────────────────────┘
  • .NET 10 + Blazor Server - 现代 Web 框架,支持实时交互,开发效率高

  • DDD + Clean Architecture - 分层清晰,Domain 层无依赖,易于测试和维护

  • CQRS + MediatR - 读写分离,命令和查询各司其职

  • MinIO - S3 兼容对象存储,轻量、高性能

  • 外部 SSO (OIDC) - 企业统一身份认证,不重复造轮子

  • NATS - 轻量消息系统,实现 SSO 角色变更实时同步

  • WPF Client - Windows 桌面应用,挂载虚拟云盘,自动锁定 Office/CAD 文件

2. SOLO 帮我做什么

项目初始化阶段

  • 搭建 DDD + Clean Architecture 分层项目结构

  • 配置 .NET 10 项目依赖关系(Domain → Application → Infrastructure → Api/Blazor)

  • 设置多数据库支持(SQLite 开发 / PostgreSQL 生产)

核心功能开发阶段

  • 文件夹树结构、文档上传/下载、版本控制

  • 角色权限系统(按文件夹设置角色级别,控制访问层级)

  • SSO OIDC 集成 + 证书验证(自签名 CA)

  • QR 码生成与扫码下载流程

  • 文件锁定机制(Office/CAD 临时文件检测)

  • 审计日志记录(记录谁、何时、在哪个文件夹做了什么)

  • NATS 消息同步(SSO 角色变更后实时生效)

  • WPF 虚拟云盘客户端

部署与运维

  • systemd 服务部署(Linux)

  • Docker Compose 部署(MinIO、NATS)

  • CI/CD 发布流程

3. 踩过的坑

坑1:SSO OIDC 的 Audience 和 Scope 混淆

问题:Token 没有 aud 声明,API 验证失败
原因:API Scope 没有关联到 API Resource
  • 解决:在 SSO 中正确创建 API Resource → API Scope → Client 的顺序

  • 记录:详细写入 SSO-OIDC-IMPLEMENTATION.md 供以后参考

坑2:自签名证书导致 SSO 连接失败

Error: The remote certificate is invalid
HttpRequestException: SSL connection could not be established
  • 解决:实现自定义 CA 证书信任机制,不跳过验证,而是信任特定的根证书

  • 记录:SSL_SETUP.md 文档

坑3:NATS 角色同步 Toast 通知不显示

  • 原因:Blazor Server 后台线程无法直接渲染组件通知

  • 解决:改用 JavaScript Interop 方式显示 Toast,匹配 SSO 应用的实现

坑4:WPF 虚拟云盘的文件锁定检测

  • 原因:Office 文件编辑时会生成 ~$ 临时文件,需要检测并锁定服务器上对应文件

  • 解决:监控本地缓存目录,检测 Office/CAD 临时文件,触发服务器锁定事件

4. SOLO 提效点

项目搭建

  • 传统方式:查 DDD 架构文档 3 小时

  • 用 SOLO:30 分钟完成

OIDC 集成

  • 传统方式:读 OIDC 规范 + 调试 2 天

  • 用 SOLO:半天完成 + 自动生成配置文档

Bug 排查

  • 传统方式:grep 日志 + StackOverflow

  • 用 SOLO:SOLO 分析错误上下文,直接给出解决方案

文档编写

  • 传统方式:复制粘贴 + 手动排版

  • 用 SOLO:生成结构化 Markdown 文档(已生成 20+ 份文档)


四、成果展示

核心功能

文件夹管理 - 树形结构,支持无限层级嵌套

文档上传/下载 - 拖拽上传、进度条、批量操作

权限控制 - 按文件夹设置角色级别(Admin > Manager > User)

QR 码访问 - 扫码即可访问文件夹

审计日志 - 记录所有操作(谁、何时、在哪个文件夹做了什么)

多语言 - 中文/English 界面切换

虚拟云盘 - WPF 客户端,像本地磁盘一样操作

特色亮点

SSO 角色实时同步 - SSO 管理员创建/删除角色,通过 NATS 实时生效

自签名证书支持 - 信任特定 CA,不跳过 SSL 验证,安全合规

审计日志详细上下文 - 记录文件夹路径、用户角色、HTTP 请求等完整信息

虚拟云盘自动锁定 - 打开 Office 文件时自动锁定服务器对应文件,关闭时自动上传

一键部署 - systemd + Docker Compose,15 分钟完成部署

项目地址

  • 仓库: 待上传github

  • License: AGPLV3


五、效果与总结

开发效率提升

开发周期:预计 4 周 → 实际 2 周完成核心功能

OIDC 集成时间:从读规范到调试成功 2 天 → SOLO 辅助半天完成

文档时间:从 0 到完整 README + 部署指南 + 20+ 份专题文档

SOLO 真正做了什么

  1. 架构建议 - 解释为什么要用 DDD + Clean Architecture(领域层无依赖,易于测试)

  2. 代码生成 - 快速实现 CRUD,节省 100% 编码时间,自己一行都没写

  3. Bug 排查 - 分析 OIDC Audience、SSL 证书、NATS 同步等问题

  4. 文档辅助 - 生成清晰的 README、部署指南、SSO-OIDC 配置手册

可复用的方法

AI 辅助开发流程

需求 → 拆解任务 → SOLO 生成代码 → 本地测试 → 迭代优化 → 文档沉淀

DDD 架构设计

  • Domain 层定义实体、值对象、领域事件(纯 C#,无外部依赖)

  • Application 层定义 Commands/Queries(CQRS 模式)

  • Infrastructure 层实现 Repository、外部服务(MinIO、SSO、NATS)

  • Api/Blazor 层只负责展示和依赖注入

OIDC 集成最佳实践

  • SSO 是 Source of Truth,所有名称必须与 SSO 配置一致

  • 配置顺序:API Resource → API Scope → Client → appsettings.json

  • aud 声明是从 Scope 关联的 API Resource 自动派生的

  • 自定义 CA 证书信任机制,不跳过 SSL 验证


六、参赛感言

用 SOLO 开发 DocumentMS,让我真正体验到了"单人+AI"的可能性。

以前觉得做一个完整的应用,不知道要多久,现在发现:

  • 有想法 → SOLO 帮你落地

  • 有问题 → SOLO 帮你分析

  • 有 Bug → SOLO 帮你排查

  • 有知识 → SOLO 帮你沉淀为文档

一人一 AI,照样能做完整的产品。

这就是 AI 编程给普通开发者的机会。


#Code with SOLO #AI编程 #DMS #Blazor #DDD #CleanArchitecture

1 个赞