2a403493ed22a753829029d5062bc862b3f1bf9b
				
			
			
		
	开发技术规范文档
本规范文档适用于技术团队及新引入技术的项目落地,目标是规范化公司技术选型、架构设计、开发流程,提升质量与效率,降低技术风险。
📌 一、前言
目标与背景
规范化公司技术选型、架构设计、开发流程,提升质量与效率,降低技术风险。
适用范围
适用于技术团队及新引入技术的项目落地。
🧱 二、技术栈选型与架构概览
2.1 技术体系结构图
平台整体架构图, Web 层、服务层、硬件接口层、中间件层、存储层、第三方接入等模块交互与部署方式。
2.2 技术选型说明
| 模块 | 技术选型 | 说明 | 
|---|---|---|
| Web 框架 | PHP + Swoole + Hyperf | 高并发、协程模型,用于高性能后端服务 | 
| 硬件上位机开发 | C# + C++ | C# 用于可视化控制界面,C++ 用于底层驱动与 TCP 通信模块 | 
| 前端框架 | Vue 3.x + TypeScript/JavaScript + Vuex + Vue Router + Element Plus | 前端开发栈,响应式与组件化开发 | 
| 对外接口 | RESTful API | 标准化输出格式,统一鉴权方案 | 
| 数据库 | MySQL(RDS) + Redis(缓存+分布式锁) | 用数据库架构 | 
| 中间件 | RabbitMQ | 异步任务队列、事件消息总线 | 
| 服务发现与配置中心 | Nacos | 服务注册发现 + 动态配置中心 | 
| 硬件通信 | TCP 服务 | 所有硬件上位机通过统一 TCP 服务接入,遵循协议解析规范 | 
☁️ 三、云服务与第三方服务使用规范
3.1 阿里云资源管理
- ECS 实例命名规则:
<环境>-<业务>-<编号>(如:prod-order-01) - 资源标签管理:按业务、环境、负责人分类
 - 网络安全组规则:最小权限原则,仅开放必要端口,需开放端口时,需由技术审批
 
3.2 第三方基础服务
- 阿里短信服务:统一 SDK、消息模板管理、错误码处理机制
 - e签宝电子签名:鉴权方式、回调接口、数据可追溯性管理
 
💰 四、采购审批流程
- 所有第三方服务需走审批流程:技术经理 → 总监审批 → 录入内部采购系统
 - 保留完整审批链,评估成本、替代方案与风险
 - 采购记录需与采购管理系统对接
 
📐 五、系统设计与文档规范
5.1 需求分析文档
- 使用统一模板,输出功能描述、用户角色、流程图、非功能性需求等
 
5.2 接口设计规范
- 遵循 RESTful 设计原则
 - 使用统一接口文档框架(Apipost)
 - 支持自动代码生成、Mock 调试、文档同步更新
 - 硬件TCP接口使用统一接口规范,签名验签
 
5.3 架构决策记录
- 流程记录重大技术决策
 - 内容包括:背景、讨论、决定等
 
🧑💻 六、开发规范与代码结构
6.1 目录结构(以自动化/MES/生产系统为例)
- 本文基于 Hyperf 官方框架结构,并结合社区最佳实践,逐一说明每个目录/文件的职责与用途。
 
├── .devcontainer/
├── .github/
├── app/
├── bin/
├── config/
├── migrations/
├── public/
├── runtime/
├── storage/
├── test/
├── .env.example
├── composer.json
├── phpunit.xml.dist
└── ...
6.2 Hyperf 项目目录结构详解 📁
| 路径 | 类型 | 功能说明 | 
|---|---|---|
.devcontainer/ | 
文件夹 | VS Code 容器配置,统一开发环境 | 
.github/ | 
文件夹 | CI/CD(如 GitHub Actions)、Issue 模板配置 | 
composer.json | 
文件 | PHP 包依赖配置 | 
.env.example | 
文件 | 环境变量模板,供复制为 .env 使用 | 
phpunit.xml.dist | 
文件 | PHPUnit 测试配置 | 
| 路径 | 类型 | 功能说明 | 
|---|---|---|
app/ | 
文件夹 | 应用主要业务代码入口,包含以下子模块 | 
app/Amqp/ | 
文件夹 | AMQP 消息发送/消费任务类 | 
app/Aspect/ | 
文件夹 | AOP 切面逻辑(如日志、鉴权) | 
app/Command/ | 
文件夹 | CLI 自定义命令脚本 | 
app/Constants/ | 
文件夹 | 全局常量定义(状态码、消息类型等) | 
app/Context/ | 
文件夹 | 请求上下文管理(如 QID、用户信息) | 
app/Controller/ | 
文件夹 | HTTP 接口控制层 | 
app/Dao/ | 
文件夹 | 直接数据库访问层封装 | 
app/Exception/ | 
文件夹 | 自定义异常类和统一逻辑 | 
app/Helpers/ | 
文件夹 | 通用工具函数 | 
app/Job/ | 
文件夹 | 定时任务或队列任务执行类 | 
app/JsonRpc/ | 
文件夹 | JSON-RPC 接口,供硬件或外部调用 | 
app/Listener/ | 
文件夹 | 事件监听器与触发机制 | 
app/Log/ | 
文件夹 | 日志入口、格式化、QID 链路 | 
app/Middleware/ | 
文件夹 | HTTP/MQ 中间件(限流、鉴权、异常处理) | 
app/Model/ | 
文件夹 | ORM 映射层,对应数据库表 | 
app/Process/ | 
文件夹 | 自定义进程(如 Socket、守护进程) | 
app/Repository/ | 
文件夹 | Repository 或 DAO 层,封装 Model 调用 | 
app/Request/ | 
文件夹 | 接口参数验证对象 | 
app/Scope/ | 
文件夹 | Eloquent 范畴定义(global/local) | 
app/Service/ | 
文件夹 | 业务逻辑层 | 
app/Task/ | 
文件夹 | 异步任务,配合 Scheduler 使用 | 
app/Utils/ | 
文件夹 | 独立于业务的工具逻辑封装 | 
- 代码调用层级:Controller → Repository → Dao → Service → Model
 - Repository 不直接操作 DB,由 Dao 统一调用 Model
 
6.3 命名与依赖注入
- 类命名:以 
Repository,Dao,Service,Controller,Model... 后缀命名 - 使用 
@property注解实现隐式 DI,提高 IDE 识别与导航 
6.4 响应与日志规范
- 统一响应出口:
App\Utils - 示例代码:
 
namespace App\Utils;
class Response {
    public function success(array $data = [], string $message = 'Success', int $code = 200): Response
    {
        $result = [
            'code' => $code,
            'message' => $message,
            'data' => $data,
        ];
        return self::jsonResponse($result);
    }
    public function error(string $message, int $code = 0, $data = null): Response
    {
        $result = [
            'code' => $code,
            'message' => $message,
            'data' => $data,
        ];
        return self::jsonResponse($result);
    }
}
- 中间件在请求到达 Controller 前生成 qid(唯一请求 ID),写入上下文,日志需携带 qid 用于链路追踪
 
🔨 七、测试策略
- 单元测试:Service 层、关键工具类、协议解析模块覆盖。
 - 集成测试:API 接口调试、数据库交互、消息队列流程。
 - 性能测试:压力测试脚本(wrk)、Swoole 并发 benchmark。
 - 协议连通:硬件 TCP 接口测试工具、模拟场景以及并发测试。
 
🚫 八、安全与合规
- 配置隔离:生产环境用配置中心读取,禁止硬编码。
 - 鉴权方式:对外接口通过 OAuth2/JWT + IP 白名单 + 签名方式同网关。
 - 硬件接入安全:TCP 接口需做协议签名校验,防重放、防 DOS、防配置漏洞攻击。
 - 数据保护:敏感数据如手机号、身份证在数据库存储时采用加密。
 
🎓 九、文档与知识管理
- 所有文档采用 Markdown 管理,统一托管于 Git 仓库。
 - 配合 Docsify 等文档生成方案,形成知识库。
 - 技术规范等文档均版本化管理、长期维护。
 
🚩 十、组织与流程管控
- 技术规范由 技术总监 起草,由技术团队评审、讨论完善,由总监批准。
 - 新技术、新框架、新工具需要流程引入(决策/评审),并记录至技术规范文档。
 - 接口或框架调整须形成文档、明确迁移路径、兼容性策略。
 
Description
				
					Languages
				
				
								
								
									HTML
								
								100%