CTO来分享:如何让技术人员写好开发文档?

简介: CTO来分享:如何让技术人员写好开发文档?

前言

对于如何让技术人员写好开发文档,这是一个很常见的问题。

本次不过多分享理论,而是通过分享我们团队新成员编写的第一份真正的开发文档,作为成例,给大家参考和借鉴。

对于新人,一开始就明确高标准、提高专业要求,是很有价值的。

需求背景

有一天,有位YesDev的企业客户和我们提到:“黄总, 上次说的客户管理的流程下,手工选择发送【反馈信息】,方式为短信,企业微信,钉钉,邮件。 四种方式的配置信息和客户管理进行 关联配置。 发送后有发送记录可以进行管理,检索和导出。 发送内容可以根据需求自动生成。 其中短信可以进行模板管理和分配,短信发送接口配置(建议阿里云短信)。”

于是,我们产品经理整理并设计了以下的产品方案和PRD。

以下,则是对应的技术开发人员在完整需求开发的同时,编写整理的开发文档。内容包含:开发分支、单元测试、SQL数据库变更、核心流程的时序图、新增的API接口、单元测试覆盖率报告、新增的配置文件等。

使用的研发协同工具

YesDev,一款更友好的研发协同工具。

开发文档成例分享

需求背景

用户需要一个可以管理自己客户及客户联系人的功能,并且在需求需要反馈时,可以选择发短信或者邮件进行通知

仓库地址

https://codeup.aliyun.com/xxxxxxx/yesinew/yesinew_www.git
使用的是codeup云效。

后端开发分支

mxh_test

实现思路

  1. 用户需要可以配置短信和邮箱服务的后台录入功能
  2. 用户需要进行客户名单的管理,包括但不限于客户分组、客户管理、客户联系人等功能,并且对以上的功能可添加、编辑、删除以及查看
  3. 前端需增加反馈功能模块,用户可以获取录好的客户名单,进行邮件/短信通知,并且记录反馈通知信息
  4. 用户可以查看某个需求的发送给客户的反馈列表,也可以在企业管理后台,进行发送反馈记录的查看和导出记录

新增接口(基于PhalApi开源接口框架)

  • Platform.Customer_Customer.AddCustomer 添加客户
  • Platform.Customer_Customer.AddCustomerContacts 新增客户联系人
  • Platform.Customer_Customer.AddCustomerGroup 添加客户分组
  • Platform.Customer_Customer.DeleteCustomer 删除客户
  • Platform.Customer_Customer.DeleteCustomerContacts 删除客户联系人
  • Platform.Customer_Customer.GetContactsListByCustomerId 根据客户ID获取联系人列表
  • Platform.Customer_Customer.GetCustomerDetailLeftSideMenu 客户详情页左边栏
  • Platform.Customer_Customer.GetCustomerGroupList 获取客户分组列表
  • Platform.Customer_Customer.GetCustomerGroupOption 获取客户分组选项,用于select标签
  • Platform.Customer_Customer.GetCustomerList 获取客户列表(用于分组下的客户名单管理)
  • Platform.Customer_Customer.GetFeedbackContactsList 发送反馈时用到的客户联系人列表
  • Platform.Customer_Customer.GetOneCustomer 获取单个客户
  • Platform.Customer_Customer.GetOneCustomerContacts 获取单个客户联系人
  • Platform.Customer_Customer.GetOneCustomerDetail 获取单个客户详情(用于客户详情页)
  • Platform.Customer_Customer.UpdateCustomer 编辑客户
  • Platform.Customer_Customer.UpdateCustomerContacts 编辑客户联系人
  • Platform.Customer_Customer.UpdateCustomerGroup 编辑客户分组
  • Platform.Customer_Feedback.GetFeedbackList 获取反馈列表(用于前端需求页面)
  • Platform.Customer_Feedback.GetFeedbackListForAll 企业后台获取反馈列表
  • Platform.Customer_Feedback.GetFeedbackListForAllExportData 反馈列表导出
  • Platform.Customer_Feedback.GetFeedbackListForAllExportUrl 企业后台获取反馈列表导出链接
  • Platform.Customer_Feedback.SendFeedback 发送反馈信息接口
  • Platform.Sms_Sms.AddSmsConfig 添加短信配置
  • Platform.Sms_Sms.AddSmsTemplate 添加短信模板
  • Platform.Sms_Sms.DeleteSmsTemplate 删除单个短信模板
  • Platform.Sms_Sms.GetOneSmsConfig 获取短信配置
  • Platform.Sms_Sms.GetOneSmsTemplate 获取单个短信模板
  • Platform.Sms_Sms.GetSmsTemplateDetailByMoudleId 根据短信模板ID和模块ID,来获取替换后的短信文本
  • Platform.Sms_Sms.GetSmsTemplateList 获取短信模板列表
  • Platform.Sms_Sms.GetSmsTemplateListByOpen 获取已开启的短信模板
  • Platform.Sms_Sms.GetSmsTemplateParam 获取短信模板变量列表
  • Platform.Sms_Sms.SendSmsTest 发送短信测试
  • Platform.Sms_Sms.UpdateSmsConfig 修改短信配置
  • Platform.Sms_Sms.UpdateSmsTemplate 更新单个短信模板
  • Platform.Customer_Feedback.GetFeedbackList 获取反馈列表(用于前端)
  • Platform.Customer_Feedback.GetFeedbackListForAll 企业后台获取反馈列表
  • Platform.Customer_Feedback.GetFeedbackListForAllExportData 需求导出
  • Platform.Customer_Feedback.GetFeedbackListForAllExportUrl 企业后台获取反馈列表导出链接
  • Platform.Customer_Feedback.SendFeedback 发送反馈信息

修改的接口

  • Platform.Notes.CreateNewNote 添加新备注
  • Platform.Notes.GetNoteListMoreInfo 获取备注列表
  • Platform.AppSiteConfig_AppSiteConfig.AddOrUpdateAppSiteConfig 添加app配置设置

文件变更(基于PhalApi开源接口框架)

config/sms.php                                   |  22 +++
data/phalapi_pro.sql                             | 101 ++++++++++
src/app/Common/Api.php                           |  17 +-
src/base/Common/Sms.php                          |  70 +++++++
src/base/Common/ToolUtil.php                     |  67 +++++++
src/base/Common/UrlUtil.php                      |   5 +
src/base/Domain/AppSms.php                       |  73 ++++++++
src/base/Domain/Base.php                         |   8 +-
src/base/Domain/Customer.php                     | 348 ++++++++++++++++++++++++++++++----
src/base/Domain/CustomerFeedback.php             | 350 +++++++++++++++++++++++++++++++++++
src/base/Domain/Notes.php                        |  11 +-
src/base/Domain/Sms.php                          |   2 +-
src/base/Domain/SmsConfig.php                    | 243 ++++++++++++++++++++++++
src/base/Model/Customer.php                      |   5 +-
src/base/Model/CustomerContacts.php              |   5 +-
src/base/Model/CustomerFeedback.php              |  72 +++++++
src/base/Model/CustomerGroup.php                 |   6 +-
src/base/Model/SmsConfig.php                     |  11 ++
src/base/Model/SmsTemplate.php                   |  11 ++
src/platform/Api/AppSiteConfig/AppSiteConfig.php |   6 +-
src/platform/Api/Customer/Customer.php           | 218 +++++++++++++++++++++-
src/platform/Api/Customer/Feedback.php           | 150 +++++++++++++++
src/platform/Api/Notes.php                       |  11 +-
src/platform/Api/Sms/Sms.php                     | 184 +

数据库变更(使用MySQL数据库)

DROP TABLE IF EXISTS `pp_sms_config`;
  CREATE TABLE `pp_sms_config` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `access_key` varchar(255) NOT NULL DEFAULT '' COMMENT '短信服务商的access_key',
    `access_secret` varchar(255) NOT NULL DEFAULT '' COMMENT '短信服务商的access_secret',
    `config_status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '邮箱状态:1-开启  0-关闭',
    `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID',
    `add_time` datetime DEFAULT NULL COMMENT '创建时间',
    `app_key` varchar(100) NOT NULL DEFAULT '公司标识',
    `created_staff_id` int(11) NOT NULL DEFAULT '0' COMMENT '创建员工ID',
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '短信配置表';
  DROP TABLE IF EXISTS `pp_sms_template`;
  CREATE TABLE `pp_sms_template` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `sms_sign` varchar(255) NOT NULL DEFAULT '' COMMENT '短信签名',
    `template_code` varchar(255) NOT NULL DEFAULT '' COMMENT '短信模板Code',
    `template_detail` text COMMENT '短信模板详情',
    `template_status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '邮箱状态:1-开启 0-关闭',
    `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID',
    `add_time` datetime DEFAULT NULL,
    `app_key` varchar(100) NOT NULL DEFAULT '',
    `created_staff_id` int(11) NOT NULL DEFAULT '0' COMMENT '员工ID',
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '短信模板表';
  DROP TABLE IF EXISTS `pp_customer_group`;
  CREATE TABLE `pp_customer_group` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `group_name` varchar(100) NOT NULL DEFAULT '' COMMENT '分组名称',
    `customer_num` int(10) NOT NULL DEFAULT 0 COMMENT '分组下的客户人数(冗余)',
    `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID',
    `add_time` datetime DEFAULT NULL COMMENT '创建时间',
    `app_key` varchar(100) NOT NULL DEFAULT '公司标识',
    `created_staff_id` int(11) NOT NULL DEFAULT '0' COMMENT '员工ID',
    PRIMARY KEY (`id`)
  )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '客户分组表';
  DROP TABLE IF EXISTS `pp_customer`;
  CREATE TABLE `pp_customer` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `customer_name` varchar(255) NOT NULL DEFAULT '' COMMENT '客户名称',
    `customer_level` varchar(20) NOT NULL DEFAULT 'A' COMMENT '客户等级,A-E',
    `group_id` int(10) NOT NULL DEFAULT 0 COMMENT '分组ID',
    `feedback_num` int(10) NOT NULL DEFAULT 0 COMMENT '反馈次数(冗余)',
    `customer_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '客户状态:1-开启 0-隐藏',
    `customer_remark` text COMMENT '客户备注',
    `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID',
    `add_time` datetime DEFAULT NULL COMMENT '创建时间',
    `app_key` varchar(100) NOT NULL DEFAULT '公司标识',
    `created_staff_id` int(11) NOT NULL DEFAULT '0' COMMENT '员工ID',
    PRIMARY KEY (`id`)
  )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '客户表';

注意事项

  1. 新增了./config/sms.php,
第71行 ./config/sms*.php
  1. 新增模块客户反馈,需要在两个表配置权限
INSERT INTO `pp_operation`(`id`, `project`, `path`, `title`, `white_list`) VALUES (440, 'platform', '/customer', '主模块 - 客户管理', NULL);
INSERT INTO `pp_operation`(`id`, `project`, `path`, `title`, `white_list`) VALUES (441, 'platform', '/customer/list', '客户管理模块 - 客户列表', NULL);
INSERT INTO `pp_operation`(`id`, `project`, `path`, `title`, `white_list`) VALUES (442, 'platform', '/customer/detail', '客户管理模块 - 客户详情', NULL);
INSERT INTO `pp_operation`(`id`, `project`, `path`, `title`, `white_list`) VALUES (443, 'platform', '/customer/feedback', '客户管理模块 - 客户反馈记录', NULL);
INSERT INTO `pp_operation`(`id`, `project`, `path`, `title`, `white_list`) VALUES (444, 'platform', '/service-config/sms', '服务配置 - 短信服务配置', NULL);

单元测试(使用PHPUnit)

邮件/短信发送的时序图(使用ProcessOn等工具可在线制作UML)


最终实现的效果截图(在YesDev可免费体验和真实使用)

登录后选择你的研发团队,

在企业管理后台,录入客户信息,

配置短信通道和通知文案,

最后,在前台可以进行邮件通知反馈,

也可以进行短信的通知反馈。

相关文章
|
4月前
|
Java
POETIZE个人博客系统源码 | 最美博客
这是一个 SpringBoot + Vue2 + Vue3 的产物,支持移动端自适应,配有完备的前台和后台管理功能。 网站分两个模块: 博客系统:具有文章,表白墙,图片墙,收藏夹,乐曲,视频播放,留言,友链,时间线,后台管理等功能。 聊天室系统:具有朋友圈(时间线),好友,群等功能。
96 5
POETIZE个人博客系统源码 | 最美博客
一键自动化博客发布工具,用过的人都说好(知乎篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到知乎上。
一键自动化博客发布工具,用过的人都说好(知乎篇)
一键自动化博客发布工具,用过的人都说好(掘金篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到掘金上。
一键自动化博客发布工具,用过的人都说好(掘金篇)
|
弹性计算 关系型数据库 MySQL
「寻找博客建站大师」详细活动流程
阿里云开发者社区联合弹性计算团队和数据库团队举办「寻找博客建站大师」,领取云服务器ECS和云数据库RDS MySQL Serverless两款云产品免费试用资源,搭建属于自己独一无二的博客吧!晒出你的专属博客参与评选,就有机会获得Airpods Pro、戴尔机械键盘 、数据库双肩包、罗马仕充电宝等精美礼品!
文章发布博客平台整理汇总
文章发布博客平台整理汇总
61 0
|
数据采集 IDE 数据可视化
CSDN云IDE小白测评体验
CSDN云IDE初次测评体验,使用下来感受还不错,大家都可以去试试。
173 0
CSDN云IDE小白测评体验
|
弹性计算 前端开发 NoSQL
新手学生上线我的博客
自己参加飞天加速计划活动,阿里云助力学生免费上线项目,我也成功使自己的小项目上线,在学期间学习前端相关知识,逐渐熟练后便开编写了一个小项目,通过老师了解阿里云的飞天加速计划活动,通过新手预备营学习了上线服务器的步骤,再经过学习发现问题解决问题,最后成功上线自己的项目。
131 1
新手学生上线我的博客
|
人工智能 移动开发 大数据
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
193 0
程序人生 - 【官方指南】教你如何快速成为CSDN博客专家!
|
JavaScript Java 应用服务中间件
从 0 开始搭建一个技术博客,私藏干货~
技术博客的选型有很多种,如:博客园、CSDN、开源中国、简书、知乎等……都可以用来写文章,形成自己的技术博客。 上面的博客都是第三方的,有没有方式搭建自己的服务器、自己的域名的博客呢?栈长知道的成熟方案有:WordPress, Hexo 等,栈长的博客就是用 Hexo 搭建的。
964 0
从 0 开始搭建一个技术博客,私藏干货~