本目录包含了Sky-Server项目的完整设计文档,涵盖了系统架构、数据库设计、API设计和开发计划等方面。
系统的整体架构设计文档,包括:
- 项目概述: 项目背景、核心特性、技术选型
- 系统架构: 整体架构图、分层设计
- 项目目录结构: 详细的代码组织结构
- 核心模块设计: 各个核心模块的职责和接口设计
- 元数据服务
- 通用CRUD服务
- 权限服务
- 动作执行服务
- 单据编号服务
- 数据字典服务
- 数据流设计: 查询、创建、动作执行的流程
- 安全设计: 认证、授权、数据隔离、SQL注入防护
- 性能优化: 缓存、数据库优化、并发控制
- 部署架构: 开发环境和生产环境部署方案
适合人群: 架构师、技术负责人、新加入的开发人员
数据库的详细设计文档,包括:
- 数据库概述: 数据库选型、设计原则
- 数据表分类: 元数据表、权限表、动作表、字典表等
- 核心表详细设计: 每个核心表的字段说明、索引设计
- sys_table: 表单定义
- sys_column: 字段定义
- sys_table_ref: 表关联关系
- sys_action: 动作定义
- sys_user: 用户表
- sys_groups: 权限组
- sys_seq: 单据编号生成器
- sys_dict: 数据字典
- 表关系图: 数据库ER图
- 标准字段说明: 所有表的通用字段
- 数据库优化建议: 索引策略、分区策略、查询优化
- 安全建议: 密码存储、SQL注入防护、数据备份
适合人群: 数据库设计师、后端开发人员、DBA
RESTful API的详细设计文档,包括:
- API设计原则: RESTful规范、统一响应格式、HTTP状态码
- 认证与授权: 登录、Token刷新、登出
- 通用CRUD API: 增删改查接口设计
- 查询列表(支持过滤、排序、分页)
- 查询单条
- 创建记录
- 更新记录
- 删除记录(软删除)
- 批量操作
- 元数据API: 获取表元数据、刷新缓存
- 数据字典API: 字典和字典项查询
- 动作执行API: 执行自定义动作
- 权限API: 权限检查、获取用户权限
- 单据编号API: 生成编号、预览编号
- 用户管理API: 用户信息、修改密码
- 文件上传API: 文件上传下载
- 导入导出API: Excel导入导出
- 错误码定义: 统一的错误码体系
- API安全: 请求签名、限流、CORS
- API版本管理: 版本策略、废弃通知
适合人群: 后端开发人员、前端开发人员、测试人员
详细的开发计划和实施路线图,包括:
- 项目概述: 项目目标、项目周期
- 开发阶段划分: 分为6个阶段
- 第一阶段: 基础框架搭建
- 第二阶段: 认证授权模块
- 第三阶段: 元数据服务
- 第四阶段: 通用CRUD引擎
- 第五阶段: 高级功能
- 第六阶段: 完善和优化
- 技术规范: 代码规范、Git规范、测试规范、文档规范
- 开发工具: 必备工具、推荐IDE、开发插件
- 质量保证: 代码审查、自动化测试、性能基准
- 风险管理: 技术风险、进度风险及缓解措施
- 里程碑: 各阶段交付内容
- 参考资料: 技术文档、设计模式、最佳实践
适合人群: 项目经理、技术负责人、开发团队
建议按以下顺序阅读文档:
- 01-系统架构设计.md - 了解整体架构和技术选型
- 02-数据库设计.md - 理解数据模型和业务逻辑
- 04-开发计划.md - 了解开发规范和工作流程
- 03-API设计.md - 熟悉API接口设计
- 先查看 01-系统架构设计.md 确定功能所属模块
- 参考 02-数据库设计.md 了解相关数据表
- 参考 03-API设计.md 设计API接口
- 遵循 04-开发计划.md 中的技术规范编码
- 数据问题查看 02-数据库设计.md
- API问题查看 03-API设计.md
- 架构问题查看 01-系统架构设计.md
Sky-Server的核心理念是元数据驱动,即:
- 表结构、字段、关系不在代码中硬编码
- 所有定义存储在数据库的元数据表中(sys_table、sys_column等)
- 运行时动态加载元数据并生成UI和执行CRUD操作
- 通过配置而非编码来扩展系统功能
| 表名 | 用途 |
|---|---|
| sys_table | 定义逻辑表/表单 |
| sys_column | 定义字段 |
| sys_table_ref | 定义表关联关系 |
| sys_action | 定义自定义动作 |
| sys_table_cmd | 定义表操作钩子 |
| 类型 | 说明 |
|---|---|
| pk | 主键自增 |
| docno | 单据编号(使用序号生成器) |
| createBy | 创建人 |
| operator | 操作用户 |
| sysdate | 当前时间 |
| byPage | 用户输入 |
| select | 下拉选择(字典) |
| fk | 外键关联 |
用户(sys_user)
→ 权限组(sys_groups)
→ 目录权限(sys_group_prem)
→ 安全目录(sys_directory)
→ 表(sys_table)
权限值(位运算):
- 1: 读
- 2: 写
- 4: 提交
- 3 = 1 + 2: 读写
- 5 = 1 + 4: 读提交
- 所有表包含
SYS_COMPANY_ID字段 - 自动添加公司ID过滤条件
- 数据完全隔离
- 所有表包含
IS_ACTIVE字段 - 删除操作仅将其设为 'N'
- 支持数据恢复
- 所有表包含创建和修改信息
- CREATE_BY, CREATE_TIME
- UPDATE_BY, UPDATE_TIME
支持多种动作类型:
- URL: 跳转到指定URL
- SP: 执行存储过程
- JS: 执行JavaScript
- Python: 执行Python脚本
- Job: 执行后台任务
支持灵活的编号格式:
- 格式:
PO{YYYY}{MM}{DD}{0000} - 结果:
PO202601110001 - 支持日/月/年循环
| 类别 | 技术 |
|---|---|
| 语言 | Go 1.21+ |
| Web框架 | Gin |
| ORM | GORM |
| 数据库 | MySQL 8.0+ |
| 缓存 | Redis |
| 配置 | Viper |
| 日志 | Zap |
| 文档 | Swagger |
- Go 1.21+
- MySQL 8.0+
- Redis 6.0+
- Git
- Make(可选)
# 克隆项目(项目搭建后)
git clone https://github.com/sky-xhsoft/sky-server.git
cd sky-server
# 初始化数据库
mysql -u root -p < sqls/create_skyserver.sql
# 配置环境变量
cp configs/config.example.yaml configs/config.yaml
# 编辑 config.yaml 填入数据库等配置
# 安装依赖
go mod download
# 运行
go run cmd/server/main.go本文档随项目开发持续更新。如有问题或建议,请提交Issue。
- 项目仓库: https://github.com/sky-xhsoft/sky-server
- 问题反馈: https://github.com/sky-xhsoft/sky-server/issues
文档版本: v1.0.0 最后更新: 2026-01-11 维护者: Sky-XHSoft Team