yr.al

[长文手敲] 擦桥的产品——AI文旅(其一) — cloudwide @ linux.do

2026-08-09 · 原文 ↗ · 本页为存档备份
人工智能智慧文旅数据治理需求分析项目管理
文章以AI文旅项目为例,系统梳理需求调研、技术选型、一期范围、数据与接口设计、成本风险、验收交付及需求台账,并详述讨论、设计、开发、测试、缺陷和交付任务的拆解规范。

情景再现

领导:小白啊,最近有x州有一个文旅项目,你去和客户对接一下,顺便维持一下客户的关系。这个客户是一个新客户,而且要做AI的产品,你去收集一下需求,然后给个内部评估的成本价,最后最好是驻场开发一下。

我:

表情包-我吗

x总你看要不先把上次差旅报销和补贴发了。

领导:小白,你要懂得奉献,你还年轻,要知道做事业是要牺牲一下小我来成就大我······

我:

表情包-我得控制你了

那么经过嘚啵嘚,脚打屁股头颠倒的长途二等座之后,也是到了x州。

客户A:诶呀,欢迎欢迎,我们x州钟灵毓秀,山川大好,以后得多来多看。

我:x主任您客气了,我这次主要就是收集一下咱们AI文旅的一些需求。

客户A:

image

(你小汁)

来,小白,你看我们这里其实需求挺多的,总得需要慢慢来,你来吃饭没有,咱先去吃个饭。

我:~~走!~~

我一心热爱工作,x主任您找个人来和我对接就行了。

客户A:彳亍,那你在这里等会儿。

···

快速的等待ing——

此时一阵不明意义的鼓点响起,可惜这里没有大排档椅子

image

欧呦,原来是~~关中王来了~~B工来了。

客户B:你就是小白吧,你好你好。

我:B工你好:handshake:,咱们今天下午从哪里开始呢?

image

客户B:今天下午要开个会,你也来一起参加,听一下领导对这个事情说明。

我:好好好。

···

拿起小本本参加会议。

不知名的领导A:在x州地方大力推行文旅兴业的政策下,我们要深入贯彻落实有关决策部署,紧紧围绕文旅产业高质量发展这一主线,立足本地资源禀赋和产业基础,进一步整合区域文化资源、旅游资源和特色产业资源,持续完善基础设施建设,优化公共服务供给,丰富文旅产品业态,提升品牌传播效能,切实把资源优势转化为产业优势、发展优势和竞争优势。

要坚持规划引领、项目带动、业态融合和市场运作相结合,深入挖掘地方历史文化、民俗文化、生态文化和特色文化内涵,积极推动文化、旅游、商业、农业、体育等产业协同发展,着力打造一批具有地方辨识度、市场吸引力和持续运营能力的文旅项目。

同时,我们要强化部门协同,健全工作机制,优化营商环境,加大招商引资和项目服务力度,推动重点任务落地落实,不断提升文旅产业对经济增长、就业带动和乡村振兴的支撑作用,为X州经济社会高质量发展注入新的动力。

(~~没错我就是恶意水字数~~)

···

来,小B(客户B),给大家讲讲你对我们这个项目的看法。

客户B:在我看来,AI文旅这件事,核心仍然是资源、内容、服务和运营,人工智能真正能够发挥作用的地方,是把过去散落在各部门、各景区、各平台的数据连接起来,让管理更精细,让服务更主动,让文旅资源更容易被游客看见、理解和消费。

当前不少地方的文旅信息化已经具备一定基础。景区有票务系统,交通部门有客流数据,公安和应急部门有安全监测数据,市场监管部门有商户信息,各类网络平台上还有游客评价、搜索热度和消费反馈。但这些数据往往各在各的系统里,像是几个部门分别守着几口井,井里都有水,却没有形成一张能够统一调度的水网。AI文旅要做的第一步,就是把这些基础数据治理好、标准统一好、权限划分好。

···

我:(叽里咕噜的在讲什么东西)

客户B:所以我们需要做一个既能统筹协调各个地方的数据,又能管理本地的文旅资源,并且以AI驱动的文旅系统。

我:(听君一席话,浪费两小时)

···

会议结束,我拉住B工。

image

我:B工,我觉得咱们还有些小细节需要再讨论讨论。

客户B:你有哪些不太懂的地方?

我:咱们的数据是从公安和市监那边拿吗,还是怎么搞?

客户B:从Excel导入,到时候会同步给你。

我:那我先设计一版效果图,然后再商量具体的内容。

客户B:那辛苦你了小白。

抽象的开头

开始动手了,既然我们的GPT这么强大,那我肯定不要自己动手。

图来!

驾驶舱首页展示

总览页面

哇咔咔,效果看起来还是不错的嘛。

那么我们接下来就是来确定一下技术栈,想快速一点的开发肯定得是上Python了,要用什么框架吗?

NONONO

image

直接用下面这一套

类别技术选型用途
运行环境Node.js 24 LTS前端开发、构建和依赖管理
包管理器pnpm 10.xMonorepo和依赖管理
前端框架React 19.2页面和组件开发
开发构建Vite 8.x开发服务器和生产构建
开发语言TypeScript 5.x类型约束和接口类型生成
后台组件库Ant Design 6.x表格、表单、弹窗、菜单和后台组件
路由React Router路由、嵌套路由和权限守卫
服务端状态TanStack Query 5请求缓存、分页、刷新和失效管理
客户端状态Zustand用户界面和临时全局状态
表单React Hook Form复杂表单状态管理
数据校验Zod表单与接口数据校验
图表Apache ECharts 6大屏和后台统计图表
地图MapLibre GL JS景区地图、路线、热力和区域图层
空间计算Turf.js缓冲区、距离、范围等前端空间运算
日期处理dayjs时间格式化和日期计算
HTTP请求Axios或统一Fetch封装REST接口请求
实时通信WebSocket、SSE实时指标和AI流式回答
测试Vitest、Testing Library、Playwright单元、组件和端到端测试
代码质量ESLint、Prettier、Stylelint代码检查和格式统一

别问为什么,问就是之前写文档的时候用过的技术栈,能复制的东西就不要自己写 :hugs:

接下来我们看看架构,首先可以肯定的是一定要接入AI,至于到时候是做成客服还是做成Agent效果另说,那么就是传统的架构拼上AI、GIS相关的东西就行,什么网关、rabbit就往里面造就完事了。

架构图

非常好的架构图,~~使我的滨州发光旋转~~。

好了,这个做项目呢就有点像是命题作文,不同的命题其实都有相似的套路和解法。

基本工作准备完毕,来,我们继续去battle,拿一个不同业务流程的完整技术方案出来。

你过来呀!

客户B:哎呦,小白你怎么还在工作,我都要下班了

我:哦哦哦,没什么事情,我来问一点事情,你看这是我给你设计的原型图,B工你看怎么样

客户B:设计的不错,但是我还想增加一点东西···

我:今天不聊~~腿的事~~这些细节问题,咱们先确定核心的几块业务,然后我回去给你出几套技术方案

客户B:那我简单给你说一下,主要就是几个点,首先是平台中所有景区、景点、酒店、民宿、餐饮、非遗、文物、旅游线路、活动和公共服务设施啥的,都需要在这一业务线中形成统一档案和唯一编码,并且还得和现在的管理编码兼容。这个到时候通过数据包导入,得兼容一下。

然后是将静态资源档案转化为可持续管理的对象,比如嘞,我们上传的一些附件、图片等等都要做管理滴~并且我们的运营状态也能实时同步显示,主要面向文旅主管部门、县区管理人员和景区运营单位看的,这一部分呢先做一版,后面我们再给你修改。

我们这次还加了一个平台应将客流、交通和停车作为一条协同业务线的需求,这就是会上提到的统一协作(有有吗?可能是听睡着了),数据暂时从Excel导入来测试,这个后面都发给你。

还需要增加一条风险预警,差不多就是客流、交通这些全部都做进去。

还得要一个统一的服务平台给游客使用,这个就用微信小程序吧(嘶——)

还有····

1784095145708_d

1784094955373_d

我:好的好的好的(不要再有了),耽误你时间了B工。(说的这都是啥这是,这么多东西就给这么一点钱,还是先做再签,~~抓紧跑路吧~~)

1784094650314_d

(还得挣窝囊费,还是再忍忍吧)

短暂整理一下

主要的核心业务线大概就是管理景区的一些数据、运营状态、管理交通,后面还会有微信小程序啥的。

不过这个项目还好,现在已经是对接到可以说话的领导了,其他人可能插手的情况比较少

那么先来决定一下我们的一期工程大概都要做点什么,首先是基本的框架要搭起来,然后就是做一个登录系统、权限控制、部门管理等基本的内容,然后就是主要的最重要的还是管理景区的资产和运营状态、驾驶舱的内容以及gis显示啥的,这个肯定是一期要做的事情。

然后就是一些大概率实现不了的东西就是交通管理啥的,暂时只放一个占位符,不进行任何开发。

那么最后做的就是风险预警、工单处理、小程序,小程序可以放在一期,风险预警做一个基础的框架,工单处理也是只做基础的框架,可以完成基本的功能即可,剩下的和AI相关的就放在二期里面。Agent开发通常都是需要基于一个比较成熟完善的系统来说的,现在这个还是处于搭框架的阶段。

中间边迭代边演示。

需求确认和范围管理

简单整理成为表格如下所示

需求模块客户需求一期处理方式优先级备注
用户与权限用户、角色、部门和数据权限完整实现P0系统基础能力
文旅资源管理景区、景点、酒店、非遗等统一档案完整实现核心资源P0支持Excel导入
景区运营状态、开放时间、附件和图片完整实现P0驾驶舱依赖
GIS地图景区点位、边界和地图展示实现基础版本P0暂不做复杂编辑
驾驶舱综合指标和地图态势实现一期指标P0使用模拟和导入数据
交通停车实时交通、停车协同页面占位P2缺少真实数据源
风险预警客流和运营状态预警实现规则框架P1首期人工数据触发
工单处理投诉受理和处理实现基础流转P1不引入复杂流程引擎
微信小程序游客查询和基础服务实现基础版本P1不做复杂会员体系
AI服务问答、导游和Agent二期建设P2依赖知识库和业务数据

第一个完整的业务,文旅资源建档与发布

管理员登录
→ 创建或导入文旅资源
→ 系统校验统一编码
→ 补充图片、附件和地图位置
→ 提交审核
→ 审核人员通过
→ 正式发布
→ 驾驶舱和地图同步展示

第二个业务,景区运营状态维护与驾驶舱联动

景区运营人员更新开放状态
→ 填写变更原因和生效时间
→ 提交状态
→ 系统记录操作日志
→ 驾驶舱更新景区状态
→ 地图图层改变状态颜色
→ 游客端读取最新开放信息

第三个业务,基础风险预警与处置

导入景区客流数据
→ 系统计算景区承载率
→ 达到规则阈值
→ 自动生成预警
→ 推送至待办中心
→ 管理人员签收
→ 填写处置结果
→ 关闭预警
→ 驾驶舱更新预警数量

然后我们根据业务的内容,将一期系统拆成七个模块:

1. 系统管理

2. 文旅资源中心

首期重点实现景区、景点和公共服务设施,其他资源暂时先沿用统一模型或提供基础页面。

3. 景区运营中心

4. GIS地图中心

5. 驾驶舱

6. 风险预警

7. 工单和游客服务

然后简单说明一下模块之间的关系:

系统管理提供权限
文旅资源提供基础档案
景区运营维护动态状态
GIS负责空间展示
预警读取运营和客流数据
驾驶舱汇总全部业务
游客端读取已发布内容

数据来源

一期项目的数据来源

客户提供Excel数据包
后台人工录入
系统内模拟数据
地图边界和点位文件

Excel导入流程

下载模板
→ 填写数据
→ 上传文件
→ 字段校验
→ 数据预览
→ 错误提示
→ 重复数据处理
→ 确认导入
→ 生成导入报告

必须有的能力:

客户发过来的数据是不能直接使用的,得挑选出来合适的字段使用,或者是我们进行预处理之后再导入系统,比如下面这个需要存入系统的字段,其他的字段都是不太必要的,后面需要的再加,或者是客户需要了再加。

字段是否必填示例
管理编码WL-JQ-00001
管理编码(原)XX-0101-09
资源名称X州古城景区
资源类型景区
所属区域X州X县
经度116.12345
纬度39.12345
运营状态正常开放
最大承载量30000

数据库与原型

必须要做的原型

  1. 登录页
  2. 后台总览
  3. 文旅资源列表
  4. 资源编辑页
  5. Excel导入弹窗
  6. 景区运营状态页面
  7. 地图资源页面
  8. 预警列表
  9. 预警详情
  10. 工单列表
  11. 驾驶舱

核心的数据实体主要包含

用户
部门
角色
权限

文旅资源
景区
景点
资源附件
资源图片
资源分类

景区运营状态
运营状态记录
客流数据
停车数据

预警规则
预警事件
预警处置记录

工单
工单处理记录

地图图层
地图要素
数据导入任务
操作审计

一些关键的关系设计

一个景区属于一个行政区域
一个景区包含多个景点
一个景区包含多个附件和图片
一个景区拥有多条运营状态记录
一个景区对应多条客流数据
一条预警规则可以生成多个预警事件
一个预警事件包含多条处置记录
一个工单可以经历多次流转

核心接口设计

POST /auth/login
GET  /users/me

GET  /tourism-resources
POST /tourism-resources
POST /tourism-resources/import
POST /tourism-resources/{id}/submit
POST /tourism-resources/{id}/approve

GET  /scenic-areas
PATCH /scenic-areas/{id}/operation-status

GET  /dashboard/overview
GET  /dashboard/map-status

GET  /alerts
POST /alerts/{id}/accept
POST /alerts/{id}/handle
POST /alerts/{id}/close

GET  /tickets
POST /tickets
POST /tickets/{id}/process

一期迭代

迭代一,基础工程

迭代二,资源管理

迭代三,运营与GIS

迭代四,驾驶舱

迭代五,预警和工单

成本估算

内部成本 = 人员人天成本 + 差旅成本 + 服务器与模型成本(一般2g只考虑部署的时间成本) + 第三方服务成本 + 风险预留

按照一人月22天计算,然后可以大致估算出来开发时间和开发成本,我这里的计算数据就不展示出来了,大家可以自己估算一下。

风险预留也是一个大头,重点风险包括不限于:

等等

关于需求变更

需求变更分为:

缺陷修复
原需求没有正确实现

需求优化
不改变主要工作量

新增需求
增加页面、流程、数据或接口

范围变更
影响排期、成本或架构

最重要的是范围变更,也是我们开发过程中经常遇见的,比如“小白你先把这个页面功能做了看看”“我觉得这个流程得改一改”等等,其实新增功能还是比较好预测的,主要是原有的业务变更。

交付范围

用户权限

文旅资源

景区运营

GIS地图

驾驶舱

风险预警

工单

最后还要列出交付物:

源代码
数据库脚本
部署文件
接口文档
操作手册
管理员手册
测试报告
验收报告
培训材料
第三方依赖清单
账号权限清单
备份恢复说明
···

拆解需求到任务

那么一条合格的项目任务,需要同时满足以下条件:

  1. 只有一个主要目标。
  2. 只有一个直接责任人。
  3. 能够独立判断完成或未完成。
  4. 预计工作量原则上不超过两个工作日。
  5. 明确前置依赖。
  6. 明确交付物。
  7. 明确验收标准。
  8. 能够关联原始需求、页面、接口和测试用例。

例如,下面这条任务不合格。

完成景区管理模块

因为它并没有说明是做列表、表单、接口、数据库,还是导入、审核和权限这些内容。

所以拆解后应该变成:

创建景区资源数据库表
实现景区列表查询接口
实现景区分页查询页面
实现景区新增表单
实现景区新增接口
实现景区编辑接口
实现景区详情页面
实现景区删除权限校验
实现景区图片上传
实现景区附件关联
实现景区Excel导入模板
实现导入数据校验
实现导入错误报告下载

任务名称统一采用“动词+业务对象+明确结果”的格式。

推荐使用:

设计景区资源数据模型
实现景区列表查询接口
编写景区导入字段校验规则
配置景区编辑按钮权限
验证景区状态同步结果

不建议使用:

景区功能
处理地图
完善权限
优化接口
弄一下导入
其他相关工作

~~当然,你写日志可以这么搞~~

建立需求台账

拆解前,先建立需求台账。每一条客户需求都必须获得唯一编号,后续的原型、任务、接口、测试用例和验收项都与该编号关联。当然如果你使用禅道、jira、飞书、Teambition或者是其他的什么项目管理工具,就只需要专注于任务的拆解即可。

建议字段如下:

字段说明
需求编号例如 REQ-RES-001
需求名称景区资源统一建档
需求来源客户B、会议纪要、补充文件
原始描述保留客户原话
标准描述产品人员整理后的正式描述
所属业务线文旅资源、景区运营、预警等
用户角色州级管理员、县区管理员、景区人员
优先级P0、P1、P2
建设阶段一期、二期、预留
数据来源Excel、人工录入、第三方接口
验收方式页面操作、接口验证、数据比对
负责人产品或项目负责人
当前状态待分析、已确认、已冻结、已变更

需求状态采用统一流程。

待收集
→ 待分析
→ 待确认
→ 已确认
→ 已拆解
→ 已冻结
→ 开发中
→ 已验收

未经确认的需求不能直接进入开发。开发如果听到说“这个应该很简单吧”,也不能顺手加进迭代里面去。

任务应该怎么写

项目任务建议划分为六类:

讨论
设计
开发
测试
缺陷
交付

其中,讨论和设计属于开发前置工作;开发负责产出功能;测试负责验证功能;缺陷(bug)负责修复已经确认的问题;交付负责部署、文档和验收。

一、讨论任务

讨论任务用于解决尚未明确的问题,目标是形成决定,不直接产出程序功能。

适用场景包括:

任务名称采用:

讨论 + 业务对象 + 待确定事项

例如:

讨论景区统一编码兼容方案
讨论景区运营状态流转规则
讨论客流预警阈值计算口径
讨论县区管理员数据权限范围
讨论Excel导入重复数据处理方式

讨论任务必须包含:

背景
待解决问题
参与人员
候选方案
需要作出的决定
计划完成时间

完成标准不能写成“已经开会”等,应该写成:

已经形成明确结论
已经记录未决事项
已经明确责任人
已经更新需求或设计文档
参与方已经确认会议结论

讨论任务的交付物通常是:

没有形成结论的会议不算完成。

二、设计任务

设计任务用于将已经确认的需求转化为可以开发的方案。

设计任务可以继续划分为:

产品设计
交互设计
视觉设计
技术设计
数据设计
接口设计
测试设计
部署设计

任务名称采用:

设计 + 业务对象 + 具体成果

例如:

设计景区资源新增流程
设计景区资源列表页面
设计景区运营状态数据模型
设计Excel导入校验规则
设计客流预警规则接口
设计驾驶舱指标数据口径
设计生产环境部署拓扑

设计任务必须明确最终产物。

设计类型主要交付物
产品设计业务流程、功能说明、状态规则
交互设计页面原型、操作流程、异常提示
视觉设计UI效果图、组件规范、设计标注
技术设计模块结构、时序图、技术方案
数据设计ER图、表结构、字段字典
接口设计OpenAPI、请求响应结构、错误码
测试设计测试范围、测试用例、测试数据
部署设计网络拓扑、资源配置、部署流程

设计任务的完成标准包括:

设计成果已经输出
边界和异常场景已经说明
关联需求已经标记
相关开发人员已经评审
评审问题已经处理
设计结果已经进入版本管理

设计任务未完成前,不建议直接进入正式开发。

三、开发任务

开发任务用于实现一个可以验证的功能结果。

开发任务应按照前端、后端、数据、GIS、AI、运维等技术方向拆分,不能只写“开发景区管理模块”。

任务名称采用:

实现 + 业务对象 + 具体能力

例如:

实现景区资源分页查询接口
实现景区资源新增表单
实现景区图片上传功能
实现景区状态变更记录
实现Excel导入数据预览
实现驾驶舱地图点位图层
实现预警事件WebSocket推送

一个标准开发任务必须包含:

关联需求
关联设计
输入条件
实现范围
不包含范围
前置依赖
接口或数据结构
异常处理要求
权限要求
测试要求
完成标准

开发任务原则上控制在半天到两个人日以内(测试普遍稍微多一点时间,不过也是最多16h,bug和小任务可以控制在0.5~6h以内)。超过两个人日时,应继续拆分。

例如“实现景区Excel导入”应拆为:

实现Excel文件上传接口
实现模板版本校验
实现表头校验
实现必填字段校验
实现管理编码校验
实现重复数据检测
实现导入数据预览
实现错误报告下载
实现确认导入功能
实现导入批次记录

开发任务完成标准建议采用统一定义:

代码已经实现
代码已经自测
异常情况已经处理
权限校验已经实现
数据库迁移脚本已经提交
接口文档已经更新
单元测试已经通过
代码已经提交评审
评审问题已经修复
代码已经合并到目标分支

仅仅“代码写完了”不能算完成,需要进行测试,不过一般情况下覆盖不了所有的测试,而且团队人数少的情况下也没有人力进行测试。

四、测试任务

测试任务用于验证某一项需求、功能或业务流程是否符合设计和验收要求。

任务名称采用:

验证 + 业务对象 + 具体场景

例如:

验证景区资源新增流程
验证景区资源导入异常数据处理
验证县区管理员数据隔离
验证景区状态与驾驶舱联动
验证客流达到阈值后生成预警
验证WebSocket断线重连

测试任务可以分为:

单元测试
接口测试
功能测试
集成测试
权限测试
兼容性测试
性能测试
安全测试
回归测试
验收测试

每条测试任务必须包含:

测试对象
测试环境
前置条件
测试数据
执行步骤
预期结果
实际结果
关联需求
关联缺陷

测试任务的完成标准包括:

计划用例已经执行
测试结果已经记录
发现的问题已经创建缺陷
阻塞性问题已经处理
回归测试已经通过
测试报告已经更新

测试发现问题后,不直接修改原开发任务,而应创建独立缺陷任务。

五、缺陷任务

缺陷任务用于记录实际结果与已确认需求、设计或验收标准之间的偏差。

任务名称采用:

修复 + 发生位置 + 问题表现

例如:

修复景区列表区域筛选无效问题
修复Excel导入重复编码未提示问题
修复县区用户能够查看全州数据问题
修复驾驶舱断线后数据不更新问题
修复预警关闭后统计数量未刷新问题

缺陷任务必须包含:

问题描述
发现环境
复现步骤
预期结果
实际结果
影响范围
严重等级
优先级
截图或日志
初步原因
关联版本
关联需求

严重等级建议统一为:

等级说明
致命系统不可用、数据丢失、严重安全问题
严重核心流程无法完成,没有替代方式
一般部分功能异常,但存在替代方式
轻微文案、样式、提示或低影响问题
建议不属于缺陷,属于体验优化

缺陷处理流程:

新建
→ 已确认
→ 修复中
→ 待验证
→ 已关闭

特殊状态包括:

无法复现
重复缺陷
设计如此
延期处理
拒绝修复
重新打开

缺陷关闭标准:

根因已经明确
修复代码已经合并
原问题已经验证通过
关联场景已经回归
没有引入新的问题
缺陷原因和处理结果已经记录

六、交付任务

交付任务用于将开发完成的功能部署到目标环境,并形成客户能够接收和使用的成果。

任务名称采用:

部署、编写、整理、执行 + 交付对象

例如:

部署一期系统至验收环境
执行生产数据库初始化
编写后台管理员操作手册
整理一期接口文档
执行客户系统培训
整理一期验收材料
执行数据库备份恢复演练

交付任务主要包括:

环境部署
配置初始化
数据迁移
发布验证
操作文档
部署文档
测试报告
培训
验收
备份恢复
源代码移交

交付完成标准包括:

目标环境部署成功
系统健康检查通过
数据库迁移执行成功
核心业务冒烟测试通过
配置和账号完成移交
操作文档已经提供
客户培训已经完成
遗留问题已经登记
交付记录已经签字确认

任务之间的标准关系

一个功能从提出到交付,通常按照以下链路推进:

讨论任务
→ 设计任务
→ 开发任务
→ 测试任务
→ 缺陷任务
→ 回归测试
→ 交付任务

例如“景区运营状态管理”可以拆成:

讨论景区运营状态范围
讨论运营状态转换规则

设计景区状态业务流程
设计景区状态数据库结构
设计景区状态变更页面
设计景区状态接口

实现景区状态查询接口
实现景区状态变更接口
实现状态变更记录
实现后台状态变更表单
实现驾驶舱状态同步

验证景区状态正常变更
验证非法状态转换被拦截
验证县区用户数据权限
验证驾驶舱状态实时更新

修复定时状态未按时生效问题
修复状态更新后地图颜色未变化问题

部署景区状态功能至验收环境
整理景区状态操作说明

不要把任务类型和任务状态混在一起

“开发”“测试”“缺陷”是任务类型。

“待处理”“进行中”“已完成”是任务状态。

推荐任务类型:

讨论
设计
开发
测试
缺陷
交付
文档
运维

推荐任务状态:

待澄清
待处理
进行中
待评审
待联调
待测试
待验收
已完成
已阻塞
已取消

例如:

任务类型:设计
任务状态:待评审

任务类型:开发
任务状态:进行中

任务类型:缺陷
任务状态:待验证

这样才能统计:

统一任务模板

每条任务至少包含以下字段:

任务编号
任务类型
任务名称
所属项目
所属迭代
关联需求
任务描述
输入条件
输出结果
不包含范围
前置依赖
负责人
协作人
预计人天
计划开始时间
计划结束时间
完成标准
验收人
当前状态
风险说明
相关文档
相关接口
相关页面
相关测试用例

任务描述模板可以统一为:

背景
为什么需要执行该任务。

目标
完成后要解决什么问题。

范围
本任务需要完成哪些内容。

非范围
本任务明确不处理哪些内容。

输入
执行任务所需的需求、设计、数据或接口。

输出
完成后必须提交哪些代码、页面、文档或结果。

依赖
开始前需要完成哪些任务。

完成标准
满足哪些可验证条件后可以关闭任务。

核心写法示例

一条任务必须回答六个问题:

为什么做
具体做什么
明确不做什么
依赖什么
产出什么
如何证明已经完成

例如:

任务名称
实现景区资源Excel表头校验

为什么做
防止客户上传错误模板后进入后续导入流程。

具体做什么
读取上传文件第一行表头,对照当前模板版本校验必填列、
列名和重复列。

明确不做什么
本任务不校验具体数据行,也不写入正式业务数据。

依赖什么
标准导入模板和字段字典已经确认。

产出什么
表头校验服务、错误码、接口响应和单元测试。

如何证明完成
正确模板校验通过;缺列、错列和重复列能够返回明确错误;
相关自动化测试全部通过。

基础平台与工程底座任务拆解

阶段目标

本阶段目标是建立后续业务开发所依赖的公共底座,使系统达到以下状态:

  1. 前后端工程能够在本地、测试环境独立启动。
  2. 管理后台能够完成登录、退出和身份恢复。
  3. 用户、部门、角色、权限具备基础数据结构。
  4. 前端具备路由守卫、按钮权限和统一请求能力。
  5. 后端具备认证鉴权、异常处理、日志记录和数据库迁移能力。
  6. PostgreSQL、Redis、RabbitMQ和对象存储可以通过容器启动。
  7. OpenAPI可以生成前端接口类型。
  8. 核心流程具备自动化测试。
  9. 项目可以通过CI完成检查、测试和构建。
  10. 测试环境可以重复部署,并具备基本回滚能力。

本阶段完成后,后续业务模块只需要按照既定规范增加领域模块,不需要重复建设登录、权限、异常处理、日志、部署和测试框架等。

阶段范围

本阶段包含

项目仓库和目录结构
前端基础工程
后端基础工程
数据库和缓存连接
登录认证
用户、部门、角色和权限基础模型
路由权限和按钮权限
统一请求和响应
统一异常处理
结构化日志
操作审计基础能力
OpenAPI接口生成
Docker开发环境
CI基础流水线
自动化测试基础框架
部署和开发文档

本阶段明确不包含

景区资源管理
景点、酒店、民宿和非遗管理
Excel业务数据导入
GIS地图业务
驾驶舱真实指标
风险预警业务
工单业务
游客端小程序
AI知识库
智能问答
数字导游
交通停车业务

这些内容进入后续迭代。本阶段可以预留目录和接口空间,但不能把业务开发混入基础底座。

任务分类

本阶段任务分为六类:

讨论任务
设计任务
开发任务
测试任务
缺陷任务
交付任务

讨论任务

讨论任务的目标是形成明确决定。只开会、不形成结论不能关闭任务。

编号任务名称主要输出验收标准
DISC-001讨论一期基础阶段范围阶段范围说明明确包含项和不包含项
DISC-002讨论项目决策和确认机制干系人清单明确需求提出人、确认人和验收人
DISC-003讨论前后端仓库组织方式仓库决策记录确认Monorepo或多仓库方案
DISC-004讨论开发分支管理方式Git分支规范明确主分支、开发分支和发布分支
DISC-005讨论身份认证方案认证决策记录明确本地认证、OIDC或统一认证边界
DISC-006讨论Token和会话策略会话规范明确有效期、刷新、注销和失效方式
DISC-007讨论用户和组织来源用户来源说明明确本地维护或第三方同步
DISC-008讨论权限控制层级权限范围说明明确菜单、路由、按钮和数据权限
DISC-009讨论行政区数据权限预留数据权限草案明确全州、县区和景区级范围
DISC-010讨论开发环境依赖环境依赖清单确认PostgreSQL、Redis等组件
DISC-011讨论测试环境部署方式部署决策记录明确服务器、域名、端口和网络限制
DISC-012讨论浏览器和分辨率要求兼容性范围明确后台支持浏览器和目标分辨率
DISC-013讨论接口响应和错误码规范接口规范结论统一响应格式和错误码命名
DISC-014讨论日志和审计范围日志范围说明明确登录、操作、错误和接口日志
DISC-015讨论敏感信息处理规则脱敏规则明确密码、Token、手机号等处理方式
DISC-016讨论代码评审规则评审规范明确合并条件和评审责任人
DISC-017讨论任务和缺陷流转方式项目工作流确认任务状态、缺陷等级和关闭条件
DISC-018讨论阶段退出标准阶段验收表形成可执行的阶段完成标准

讨论任务统一完成条件

已经形成书面结论
未决问题已经单独登记
结论已经明确责任人
相关文档已经更新
关键参与方已经确认
···

设计任务

  1. 总体工程设计
编号任务名称交付物
DES-001设计项目总体目录结构项目目录设计
DES-002设计前端Monorepo结构前端工作区设计
DES-003设计后端模块化目录结构后端分层设计
DES-004设计公共包划分公共模块清单
DES-005设计环境配置体系环境变量规范
DES-006设计本地、测试和生产环境差异环境矩阵
DES-007设计版本管理规则版本发布规范
DES-008设计依赖锁定规则依赖管理规范
  1. 前端基础设计
编号任务名称交付物
DES-FE-001设计后台整体布局布局原型
DES-FE-002设计登录页面登录页原型
DES-FE-003设计前端路由结构路由树
DES-FE-004设计前端权限守卫权限流程图
DES-FE-005设计按钮权限组件接口权限组件设计
DES-FE-006设计统一请求客户端请求层设计
DES-FE-007设计接口错误处理方式错误处理流程
DES-FE-008设计服务端状态管理边界Query使用规范
DES-FE-009设计客户端状态管理边界Zustand使用规范
DES-FE-010设计前端主题变量设计Token清单
DES-FE-011设计403、404和500页面异常页原型
DES-FE-012设计前端代码分层规范模块目录规范
  1. 后端基础设计
编号任务名称交付物
DES-BE-001设计FastAPI应用启动结构应用初始化设计
DES-BE-002设计接口版本规则API版本规范
DES-BE-003设计统一响应结构响应Schema
DES-BE-004设计业务错误码体系错误码规范
DES-BE-005设计异常处理流程异常映射表
DES-BE-006设计请求追踪机制request_id和trace_id规范
DES-BE-007设计数据库会话管理Session生命周期说明
DES-BE-008设计数据库迁移规范Alembic迁移规范
DES-BE-009设计Redis Key规范Redis Key命名规则
DES-BE-010设计健康检查接口健康检查规范
DES-BE-011设计操作审计结构审计字段清单
DES-BE-012设计服务启动配置检查启动校验规则
  1. 身份与权限设计
编号任务名称交付物
DES-IAM-001设计用户数据模型用户表设计
DES-IAM-002设计部门数据模型部门表设计
DES-IAM-003设计角色数据模型角色表设计
DES-IAM-004设计权限数据模型权限表设计
DES-IAM-005设计用户角色关联关系关联表设计
DES-IAM-006设计角色权限关联关系关联表设计
DES-IAM-007设计登录流程登录时序图
DES-IAM-008设计Token刷新流程刷新时序图
DES-IAM-009设计退出和Token失效流程注销时序图
DES-IAM-010设计密码存储方式密码安全规范
DES-IAM-011设计登录失败锁定规则账号锁定规范
DES-IAM-012设计数据权限上下文数据范围对象设计
DES-IAM-013设计超级管理员初始化方式初始化方案
DES-IAM-014设计权限缓存和失效方式权限缓存方案
  1. 测试与部署设计
编号任务名称交付物
DES-TST-001设计前端测试目录前端测试规范
DES-TST-002设计后端测试目录后端测试规范
DES-TST-003设计测试数据生成方式Fixture规范
DES-TST-004设计登录E2E测试流程E2E测试方案
DES-TST-005设计权限测试矩阵权限用例清单
DES-OPS-001设计Docker Compose拓扑容器拓扑图
DES-OPS-002设计Nginx路由结构代理配置方案
DES-OPS-003设计CI执行流程CI流程图
DES-OPS-004设计发布和回滚流程发布规范
DES-OPS-005设计数据库备份方案备份恢复方案
DES-OPS-006设计密钥和配置管理方式配置安全规范

设计任务和退出条件

设计文档已经完成
关键边界已经明确
异常场景已经覆盖
开发和测试人员已经评审
评审问题已经处理
最终版本已经进入版本管理

开发任务

  1. 仓库和工程初始化
编号原子任务依赖完成标准
DEV-BASE-001创建项目根仓库DES-001仓库可以正常克隆
DEV-BASE-002创建frontend目录DEV-BASE-001前端目录已提交
DEV-BASE-003创建backend目录DEV-BASE-001后端目录已提交
DEV-BASE-004创建infrastructure目录DEV-BASE-001基础设施目录已提交
DEV-BASE-005创建deploy目录DEV-BASE-001部署目录已提交
DEV-BASE-006创建docs目录DEV-BASE-001文档目录已提交
DEV-BASE-007创建根目录READMEDEV-BASE-001包含项目启动入口
DEV-BASE-008创建统一.gitignoreDEV-BASE-001构建产物和密钥不会提交
DEV-BASE-009创建.editorconfigDEV-BASE-001IDE格式规则统一
DEV-BASE-010创建环境变量示例文件DES-005不包含真实密钥
DEV-BASE-011配置提交信息规范DISC-004非法提交可被检查
DEV-BASE-012配置Git HookDEV-BASE-011提交前自动执行基础检查
  1. 前端基础工程
编号原子任务依赖完成标准
DEV-FE-001初始化pnpm workspaceDEV-BASE-002workspace命令可以执行
DEV-FE-002创建admin React应用DEV-FE-001后台应用可以启动
DEV-FE-003创建cockpit React应用DEV-FE-001驾驶舱空壳可以启动
DEV-FE-004创建共享ui包DEV-FE-001应用可以引用公共组件
DEV-FE-005创建共享types包DEV-FE-001公共类型可以导入
DEV-FE-006创建api-client包DEV-FE-001接口代码有固定目录
DEV-FE-007创建auth公共包DEV-FE-001权限逻辑具备独立目录
DEV-FE-008创建theme公共包DEV-FE-001主题变量可共享
DEV-FE-009配置TypeScript基础规则DEV-FE-002类型检查通过
DEV-FE-010配置ESLintDEV-FE-002lint命令可执行
DEV-FE-011配置PrettierDEV-FE-002格式化命令可执行
DEV-FE-012配置StylelintDEV-FE-002样式检查可执行
DEV-FE-013配置VitestDEV-FE-002示例测试通过
DEV-FE-014配置React Testing LibraryDEV-FE-013示例组件测试通过
DEV-FE-015配置PlaywrightDEV-FE-002浏览器测试可启动
DEV-FE-016配置开发环境代理DEV-FE-002API请求可代理到后端
DEV-FE-017配置前端环境变量读取DEV-FE-002不同环境配置可切换
DEV-FE-018配置生产构建命令DEV-FE-002admin构建成功
DEV-FE-019配置驾驶舱构建命令DEV-FE-003cockpit构建成功
  1. 前端公共能力
编号原子任务依赖完成标准
DEV-FE-020集成Ant DesignDEV-FE-002基础组件正常显示
DEV-FE-021配置全局主题变量DEV-FE-020主题配置统一生效
DEV-FE-022配置React RouterDEV-FE-002基础路由正常跳转
DEV-FE-023实现后台基础布局DEV-FE-020、022顶栏、侧栏和内容区可用
DEV-FE-024实现菜单配置模型DEV-FE-023菜单可由配置生成
DEV-FE-025实现面包屑组件DEV-FE-023路由变化时正确展示
DEV-FE-026实现页面加载状态组件DEV-FE-020页面加载状态统一
DEV-FE-027实现空数据状态组件DEV-FE-020无数据时统一展示
DEV-FE-028实现全局错误边界DEV-FE-002页面错误不会导致整站白屏
DEV-FE-029实现403页面DES-FE-011无权限时可展示
DEV-FE-030实现404页面DES-FE-011未知路由可展示
DEV-FE-031实现500页面DES-FE-011系统错误可展示
DEV-FE-032配置TanStack QueryDEV-FE-002Query Provider可用
DEV-FE-033配置Zustand基础StoreDEV-FE-002全局UI状态可保存
DEV-FE-034实现统一HTTP客户端DES-FE-006统一处理基础地址和超时
DEV-FE-035实现请求认证信息注入DEV-FE-034登录后请求携带凭证
DEV-FE-036实现统一接口错误转换DEV-FE-034错误能转换为统一结构
DEV-FE-037实现全局错误提示DEV-FE-036常见接口错误有用户提示
DEV-FE-038实现请求取消机制DEV-FE-034页面卸载后可取消请求
DEV-FE-039配置OpenAPI代码生成DEV-FE-006可生成接口类型
DEV-FE-040增加接口生成脚本DEV-FE-039pnpm命令可重新生成接口
  1. 后端基础工程
编号原子任务依赖完成标准
DEV-BE-001使用uv初始化Python项目DEV-BASE-003uv同步依赖成功
DEV-BE-002创建FastAPI应用入口DEV-BE-001服务可以启动
DEV-BE-003创建应用工厂DEV-BE-002测试可创建独立应用
DEV-BE-004配置Pydantic SettingsDEV-BE-001环境变量可以加载
DEV-BE-005实现启动配置校验DEV-BE-004缺少必要配置时启动失败
DEV-BE-006配置异步SQLAlchemyDEV-BE-004可以连接PostgreSQL
DEV-BE-007配置数据库连接池DEV-BE-006连接池参数可配置
DEV-BE-008配置AlembicDEV-BE-006可以执行迁移
DEV-BE-009创建初始数据库迁移DEV-BE-008空库可升级到最新版本
DEV-BE-010配置Redis客户端DEV-BE-004可以读写测试Key
DEV-BE-011配置RabbitMQ连接参数DEV-BE-004配置可以被Worker读取
DEV-BE-012配置对象存储客户端骨架DEV-BE-004可以完成连接检查
DEV-BE-013实现请求ID中间件DES-BE-006每次请求具有request_id
DEV-BE-014实现统一响应模型DES-BE-003接口使用统一结构
DEV-BE-015实现统一异常处理器DES-BE-005异常转换为标准错误
DEV-BE-016实现业务异常基类DEV-BE-015模块可以定义业务错误
DEV-BE-017建立错误码注册机制DEV-BE-016错误码不会重复
DEV-BE-018配置结构化日志DEV-BE-013日志包含请求和服务信息
DEV-BE-019实现访问日志中间件DEV-BE-018记录接口、状态和耗时
DEV-BE-020实现敏感字段过滤器DEV-BE-018密码和Token不进入日志
DEV-BE-021实现存活检查接口DES-BE-010/health/live可访问
DEV-BE-022实现就绪检查接口DES-BE-010检查数据库和Redis
DEV-BE-023配置OpenAPI标题和版本DEV-BE-002文档信息正确
DEV-BE-024配置API版本前缀DES-BE-002接口统一使用/api/v1
DEV-BE-025配置CORS安全策略DEV-BE-002仅允许配置域名
DEV-BE-026配置请求体大小限制DEV-BE-002超限请求被拒绝
DEV-BE-027配置基础接口限流骨架DEV-BE-010可为登录接口配置限流
  1. 用户、部门、角色和权限模型
编号原子任务依赖完成标准
DEV-IAM-001创建用户SQLAlchemy模型DES-IAM-001字段和约束符合设计
DEV-IAM-002创建部门SQLAlchemy模型DES-IAM-002支持部门层级
DEV-IAM-003创建角色SQLAlchemy模型DES-IAM-003角色编码唯一
DEV-IAM-004创建权限SQLAlchemy模型DES-IAM-004权限编码唯一
DEV-IAM-005创建用户角色关联模型DES-IAM-005支持多角色
DEV-IAM-006创建角色权限关联模型DES-IAM-006支持多权限
DEV-IAM-007创建IAM数据库迁移DEV-IAM-001至006新库可正确建表
DEV-IAM-008创建用户领域SchemaDEV-IAM-001输入输出模型隔离
DEV-IAM-009创建角色领域SchemaDEV-IAM-003输入输出模型隔离
DEV-IAM-010创建权限领域SchemaDEV-IAM-004输入输出模型隔离
DEV-IAM-011实现用户RepositoryDEV-IAM-001支持按用户名和ID查询
DEV-IAM-012实现角色RepositoryDEV-IAM-003支持查询角色权限
DEV-IAM-013实现部门RepositoryDEV-IAM-002支持查询部门层级
DEV-IAM-014实现权限聚合查询DEV-IAM-012能获取用户全部权限
DEV-IAM-015实现超级管理员初始化脚本DES-IAM-013首次部署可创建管理员
DEV-IAM-016实现基础角色初始化脚本DEV-IAM-015可初始化标准角色
DEV-IAM-017实现基础权限初始化脚本DEV-IAM-016可初始化权限编码
DEV-IAM-018实现初始化脚本幂等控制DEV-IAM-015至017重复执行不会产生重复数据
  1. 登录认证开发
编号原子任务依赖完成标准
DEV-AUTH-001集成密码哈希库DES-IAM-010密码不以明文保存
DEV-AUTH-002实现密码校验服务DEV-AUTH-001正确和错误密码可区分
DEV-AUTH-003实现访问令牌生成DISC-006Token包含必要声明
DEV-AUTH-004实现刷新令牌生成DEV-AUTH-003刷新令牌可独立失效
DEV-AUTH-005实现Token解析和校验DEV-AUTH-003过期和伪造Token被拒绝
DEV-AUTH-006实现登录接口DEV-AUTH-002至005正确账号可登录
DEV-AUTH-007实现登录失败次数记录DEV-BE-010Redis记录失败次数
DEV-AUTH-008实现登录失败锁定DEV-AUTH-007达到阈值后临时锁定
DEV-AUTH-009实现刷新Token接口DEV-AUTH-004、005有效刷新令牌可换取新令牌
DEV-AUTH-010实现退出接口DEV-BE-010退出后Token失效
DEV-AUTH-011实现当前用户接口DEV-IAM-014返回用户、角色和权限
DEV-AUTH-012实现认证依赖DEV-AUTH-005接口可要求登录
DEV-AUTH-013实现权限校验依赖DEV-IAM-014接口可要求指定权限
DEV-AUTH-014实现数据权限上下文骨架DES-IAM-012请求上下文包含数据范围
DEV-AUTH-015实现登录日志记录DEV-AUTH-006成功和失败均有日志
DEV-AUTH-016实现退出日志记录DEV-AUTH-010退出行为可追踪
DEV-AUTH-017实现操作审计装饰器或服务DES-BE-011业务接口可记录审计日志
  1. 前端登录与权限
编号原子任务依赖完成标准
DEV-FEAUTH-001实现登录页面布局DES-FE-002页面符合设计
DEV-FEAUTH-002实现登录表单校验DEV-FEAUTH-001空值和格式错误被拦截
DEV-FEAUTH-003接入登录接口DEV-AUTH-006正确账号可进入后台
DEV-FEAUTH-004实现认证状态StoreDEV-FE-033可保存当前用户状态
DEV-FEAUTH-005实现应用启动身份恢复DEV-AUTH-011刷新页面后身份可恢复
DEV-FEAUTH-006实现访问令牌刷新DEV-AUTH-009令牌到期可自动刷新
DEV-FEAUTH-007实现退出功能DEV-AUTH-010退出后返回登录页
DEV-FEAUTH-008实现路由认证守卫DEV-FE-022未登录用户无法进入后台
DEV-FEAUTH-009实现路由权限守卫DEV-AUTH-013无权限用户进入403页
DEV-FEAUTH-010实现按钮权限组件DES-FE-005无权限按钮不展示或禁用
DEV-FEAUTH-011实现菜单权限过滤DEV-FE-024只展示有权菜单
DEV-FEAUTH-012实现Token失效处理DEV-FE-036失效后清理状态并重新登录
DEV-FEAUTH-013实现登录错误提示DEV-FE-037错误原因有明确提示
DEV-FEAUTH-014实现账号锁定提示DEV-AUTH-008展示锁定状态和恢复提示
DEV-FEAUTH-015实现当前用户展示组件DEV-AUTH-011顶栏显示用户信息
  1. 基础管理页面

本阶段只实现能够验证权限底座的最小页面。

编号原子任务依赖完成标准
DEV-ADM-001实现当前用户个人信息页DEV-AUTH-011可以查看当前账号信息
DEV-ADM-002实现用户基础列表接口DEV-IAM-011支持分页和关键词查询
DEV-ADM-003实现用户基础列表页DEV-ADM-002可以查看用户列表
DEV-ADM-004实现部门树查询接口DEV-IAM-013返回正确层级结构
DEV-ADM-005实现部门树展示页DEV-ADM-004可以查看组织层级
DEV-ADM-006实现角色列表接口DEV-IAM-012可以查询角色
DEV-ADM-007实现角色列表页DEV-ADM-006可以查看角色列表
DEV-ADM-008实现权限列表接口DEV-IAM-014可以查询权限编码
DEV-ADM-009实现权限列表页DEV-ADM-008可以查看权限列表
  1. 基础设施和部署开发
编号原子任务依赖完成标准
DEV-OPS-001编写PostgreSQL容器配置DES-OPS-001数据库可启动
DEV-OPS-002编写Redis容器配置DES-OPS-001Redis可启动
DEV-OPS-003编写RabbitMQ容器配置DES-OPS-001管理端和Broker可启动
DEV-OPS-004编写对象存储容器配置DES-OPS-001Bucket可初始化
DEV-OPS-005编写后端开发DockerfileDEV-BE-002后端镜像可构建
DEV-OPS-006编写后端生产DockerfileDEV-BE-002生产镜像可启动
DEV-OPS-007编写前端生产DockerfileDEV-FE-018前端镜像可构建
DEV-OPS-008编写Docker Compose开发配置DEV-OPS-001至007一条命令启动全部依赖
DEV-OPS-009配置容器健康检查DEV-BE-021、022异常服务可以被识别
DEV-OPS-010编写Nginx后台静态资源配置DEV-FE-018后台可通过Nginx访问
DEV-OPS-011编写Nginx API代理配置DEV-BE-024/api可代理到后端
DEV-OPS-012编写Nginx安全头配置DISC-015基础安全头生效
DEV-OPS-013编写数据库初始化脚本DEV-BE-009空环境可自动初始化
DEV-OPS-014编写管理员初始化命令DEV-IAM-015部署后可创建管理员
DEV-OPS-015编写数据库备份脚本DES-OPS-005能生成可用备份文件
DEV-OPS-016编写数据库恢复脚本DEV-OPS-015能在空库恢复数据
DEV-OPS-017编写本地一键启动脚本DEV-OPS-008新开发人员可以快速启动
DEV-OPS-018编写本地一键停止脚本DEV-OPS-008可清理容器和网络
DEV-OPS-019编写日志目录和轮转配置DEV-BE-018日志不会无限增长
  1. CI基础流水线
编号原子任务依赖完成标准
DEV-CI-001配置前端依赖安装缓存DEV-FE-001CI可复用缓存
DEV-CI-002配置前端格式检查DEV-FE-011格式错误导致失败
DEV-CI-003配置前端Lint检查DEV-FE-010Lint错误导致失败
DEV-CI-004配置前端类型检查DEV-FE-009类型错误导致失败
DEV-CI-005配置前端单元测试DEV-FE-013测试失败阻止合并
DEV-CI-006配置前端构建DEV-FE-018构建失败阻止合并
DEV-CI-007配置后端依赖安装缓存DEV-BE-001CI可复用缓存
DEV-CI-008配置后端格式检查DEV-BE-001格式错误导致失败
DEV-CI-009配置后端静态检查DEV-BE-001静态错误导致失败
DEV-CI-010配置后端单元测试DEV-BE-003测试失败阻止合并
DEV-CI-011配置Alembic迁移检查DEV-BE-008迁移异常导致失败
DEV-CI-012配置OpenAPI导出DEV-BE-023CI可生成接口文档
DEV-CI-013配置前端接口类型一致性检查DEV-FE-039接口变化可被发现
DEV-CI-014配置Docker镜像构建DEV-OPS-005至007镜像可在CI构建
DEV-CI-015配置合并请求检查规则DISC-016未通过流水线不能合并

测试任务

  1. 工程基础测试
编号测试任务预期结果
TST-BASE-001验证新环境安装前端依赖无缺失依赖
TST-BASE-002验证新环境安装后端依赖uv同步成功
TST-BASE-003验证前端开发服务器启动admin和cockpit均可访问
TST-BASE-004验证后端服务启动健康检查正常
TST-BASE-005验证数据库迁移空库可以升级
TST-BASE-006验证迁移重复执行不产生重复结构
TST-BASE-007验证Redis连接读写正常
TST-BASE-008验证RabbitMQ连接Broker可访问
TST-BASE-009验证对象存储连接Bucket操作正常
TST-BASE-010验证Docker Compose一键启动所有服务健康
TST-BASE-011验证生产构建前后端构建成功
TST-BASE-012验证Nginx代理页面和API均可访问
  1. 登录认证测试
编号测试任务预期结果
TST-AUTH-001验证正确账号登录返回有效身份信息
TST-AUTH-002验证错误密码登录返回明确错误
TST-AUTH-003验证不存在账号登录不泄露账号是否存在
TST-AUTH-004验证连续失败锁定达到阈值后账号被锁定
TST-AUTH-005验证锁定到期恢复到期后可以重新登录
TST-AUTH-006验证访问令牌有效期到期Token不可使用
TST-AUTH-007验证刷新令牌可以获得新访问令牌
TST-AUTH-008验证伪造Token请求被拒绝
TST-AUTH-009验证退出登录退出后Token不可继续使用
TST-AUTH-010验证当前用户接口返回正确用户和权限
TST-AUTH-011验证未登录路由访问跳转登录页面
TST-AUTH-012验证无权限路由访问显示403页面
TST-AUTH-013验证按钮权限无权限按钮不可操作
TST-AUTH-014验证菜单权限无权限菜单不显示
TST-AUTH-015验证刷新页面身份恢复用户无需重新登录
TST-AUTH-016验证登录和退出日志审计记录完整
  1. 接口和异常测试
编号测试任务预期结果
TST-API-001验证统一响应结构所有接口格式一致
TST-API-002验证参数校验错误返回统一参数错误
TST-API-003验证业务异常返回稳定业务错误码
TST-API-004验证未知异常不暴露内部堆栈
TST-API-005验证请求ID响应和日志可关联
TST-API-006验证接口限流超过阈值后被限制
TST-API-007验证CORS非允许来源被拒绝
TST-API-008验证请求体限制超限请求被拒绝
TST-API-009验证日志敏感信息不记录密码和Token
TST-API-010验证OpenAPI生成文档可生成前端类型
  1. 自动化和端到端测试
编号测试任务预期结果
TST-AUTO-001编写后端健康检查测试自动测试通过
TST-AUTO-002编写登录成功单元测试自动测试通过
TST-AUTO-003编写登录失败单元测试自动测试通过
TST-AUTO-004编写Token校验测试自动测试通过
TST-AUTO-005编写权限依赖测试自动测试通过
TST-AUTO-006编写前端登录表单测试自动测试通过
TST-AUTO-007编写前端路由守卫测试自动测试通过
TST-AUTO-008编写登录E2E测试浏览器流程通过
TST-AUTO-009编写退出E2E测试浏览器流程通过
TST-AUTO-010编写无权限访问E2E测试正确进入403页面
TST-AUTO-011在CI执行全部自动化测试流水线通过

缺陷任务

  1. 缺陷管理基础任务
编号任务名称完成标准
BUG-MGT-001创建缺陷任务模板包含复现步骤、预期和实际结果
BUG-MGT-002定义缺陷严重等级致命、严重、一般、轻微、建议
BUG-MGT-003定义缺陷优先级P0至P3规则明确
BUG-MGT-004定义缺陷状态流转新建到关闭流程明确
BUG-MGT-005定义缺陷关闭标准修复和回归条件明确
BUG-MGT-006定义缺陷响应时限不同等级有响应要求
BUG-MGT-007建立每日缺陷评审机制阻塞缺陷能够及时处理
  1. 实际缺陷任务命名规则
修复 + 发生位置 + 问题表现

例如:

修复登录页面错误密码无提示问题
修复刷新Token后用户状态丢失问题
修复县区角色可以访问管理员路由问题
修复数据库迁移在空库执行失败问题
修复Docker环境后端健康检查异常问题

3. 缺陷处理任务链

每个缺陷应形成以下子任务或状态:

确认问题
→ 定位根因
→ 实施修复
→ 补充自动化测试
→ 执行原场景验证
→ 执行关联场景回归
→ 记录修复结果
→ 关闭缺陷

交付和文档任务

编号原子任务交付物
DOC-001编写项目总体README项目说明
DOC-002编写本地开发环境搭建文档开发环境手册
DOC-003编写前端开发规范前端规范
DOC-004编写后端开发规范后端规范
DOC-005编写Git分支和提交规范Git规范
DOC-006编写环境变量说明配置字典
DOC-007编写数据库迁移说明迁移手册
DOC-008编写接口响应和错误码规范API规范
DOC-009编写用户角色权限说明权限说明
DOC-010编写测试执行说明测试手册
DOC-011编写Docker启动说明容器部署手册
DOC-012编写测试环境部署文档测试环境部署手册
DOC-013编写数据库备份恢复文档备份恢复手册
DOC-014导出一期基础OpenAPI文档接口文档
DOC-015整理第三方依赖清单依赖清单
DOC-016整理开源许可证清单许可证清单
DOC-017编写阶段测试报告测试报告
DOC-018编写阶段遗留问题清单遗留问题台账
DOC-019创建阶段发布标签Git版本标签
DOC-020形成阶段验收记录内部验收记录

推荐执行顺序

1.范围和方案固定下来

完成任务:

DISC-001至DISC-018
DES-001至DES-OPS-006

输出:

阶段范围
认证方案
权限方案
工程结构
数据库设计
部署设计
测试方案

退出条件:

2.工程骨架可运行

完成任务:

DEV-BASE
DEV-FE-001至019
DEV-BE-001至027
DEV-OPS-001至012

输出:

3.登录和权限闭环

完成任务:

DEV-IAM
DEV-AUTH
DEV-FEAUTH
DEV-ADM

输出:

管理员可以初始化
用户可以登录和退出
身份可以刷新和恢复
菜单和路由受权限控制
基础组织和权限数据可以查询
登录和关键操作可以审计

4.质量和交付基线

完成任务:

DEV-CI
TST全部任务
BUG-MGT
DOC全部任务

输出:

关键路径

本阶段关键路径为:

范围确认
→ 工程架构设计
→ 仓库初始化
→ 后端数据库连接
→ IAM数据模型
→ 登录认证接口
→ 前端登录接入
→ 路由和按钮权限
→ 自动化测试
→ Docker部署
→ 阶段验收

以下任务一旦延期,会直接影响整个阶段:

DISC-005 身份认证方案
DES-IAM-001至014 权限设计
DEV-BE-006 数据库连接
DEV-IAM-007 IAM迁移
DEV-AUTH-006 登录接口
DEV-FEAUTH-003 登录接入
DEV-FEAUTH-008 路由守卫
DEV-OPS-008 Docker Compose
DEV-CI-010 后端自动化测试
TST-AUTO-008 登录E2E测试

阶段工作量参考

以下为基础估算。

工作类型参考人天
讨论与需求确认2~3
产品和技术设计4~6
前端基础工程6~9
后端基础工程8~12
登录与权限7~10
Docker与CI4~6
测试与缺陷修复5~8
文档和内部交付2~4
合计38~58

推荐人员配置:

产品或项目负责人 1人
前端开发 1人
后端开发 1人
测试 0.5至1人
运维支持 0.25至0.5人

任务准入标准

一条开发任务进入“待开发”前,必须满足:

关联需求已经确认
相关设计已经评审
输入和输出已经明确
接口或数据结构已经明确
前置依赖已经完成
权限要求已经说明
异常场景已经说明
完成标准可以验证

任务完成标准

开发任务只有同时满足以下条件才能标记为完成:

代码已经实现
本地自测已经完成
异常场景已经处理
权限校验已经实现
数据库迁移已经提交
接口文档已经更新
自动化测试已经补充
代码评审已经通过
评审问题已经修复
代码已经合并
测试环境验证已经通过

不过一般情况下人比较少都是本地测测没啥大问题就直接过了,只有大厂里面才会弄得非常详细。

阶段退出标准

第一期第一步只有满足以下条件才能结束:

  1. 前后端项目可以在新环境独立启动。
  2. Docker Compose可以启动全部基础依赖。
  3. 数据库可以从空库完成迁移。
  4. 超级管理员可以通过脚本初始化。
  5. 管理员可以正常登录、刷新身份和退出。
  6. 无权限用户无法进入受限路由。
  7. 前端按钮权限和菜单权限正常生效。
  8. 后端接口完成独立权限校验。
  9. 登录日志和基础操作审计能够查询。
  10. OpenAPI可以生成前端接口类型。
  11. CI可以完成格式、类型、测试和构建检查。
  12. 登录主流程E2E测试通过。
  13. 测试环境部署成功。
  14. 数据库备份和恢复至少完成一次演练。
  15. 阻塞级和严重级缺陷已经关闭。
  16. 阶段文档已经完成。
  17. 已创建基础版本标签。
  18. 内部评审确认可以进入景区资源业务开发。

写在最后

已经燃尽了佬友们,写一期要掏空脑子中基本所有的梗,下一期随缘更新,~~要去刷半年小破站、xhh、dy、xhs、贴吧来努力学习烂梗~~,所有的需求我都尽量按时间完成,不会超时(maybe),后面会更新一个开源库来同步代码。

有的佬友问为什么最近水的少了,文章也不更了,主要是调岗了换了房子,之前是在总公司,平薪调到子公司了,远离了某位,换了房子主要是虽然子公司还在本地但是位置离了老远,正好之前的房子也到期了就顺势搬家了。