最新案例动态,请查阅AssetMgmt固定资产管理系统(二):码道领航,落地生根小伙伴们快来进行实操吧!

一、概述

1.1 案例介绍

在前序案例《AssetMgmt固定资产管理系统(一):码道搭台,设计筑基》中,我们基于华为云码道代码智能体完成了AssetMgmt固定资产管理系统的需求分析、系统设计和SDD文档体系构建,绘制了一张完整的数字化蓝图。在企业数字化转型的关键赛道上,如何将设计蓝图“落地生根”,转化为真正可运行的系统,才是检验价值的试金石。本案例延续前序案例的设计成果,通过SDD规范驱动开发模式,将需求规格说明、系统设计文档转化为可执行的代码,实现从“设计蓝图”到“智慧管家”的华丽转身,让固定资产管理真正从“纸上谈兵”走向“实战落地”。

本案例延续前序案例的设计成果,采用 华为云码道(CodeArts)代码智能体作为核心开发工具,结合SDD(Spec-Driven Development)规范驱动开发模式,快速将设计文档转化为可运行的系统。系统采用FastAPI + Vue 3前后端分离架构,集成Neon MCP Server提供的PostgreSQL数据库服务,实现了资产管理、维保管理、审批管理、盘点管理、统计分析等完整功能,支持资产全生命周期管理、多维度统计分析、批量导入导出等核心业务。

案例技术选型

  • 华为云码道(CodeArts)代码智能体:集代码大模型、AI IDE、Code Agent 为一体的智能编码产品。理解项目需求,懂得编码之道,善用百器的实干派AI研发砖家。本案例中作为核心开发工具,通过 SDD 规范驱动开发模式,快速完成从需求规格说明到代码实现的全流程开发。
  • Neon MCP Server:Neon提供的无服务器PostgreSQL数据库服务,支持自动扩缩容、分支管理、时间旅行查询等创新特性。通过MCP协议与AI智能体无缝集成,实现数据库的智能化管理。本案例中作为主数据库服务,提供PostgreSQL数据库实例,存储用户、资产、维保、消息等8张核心业务表,支持资产全生命周期数据管理,无需手动运维数据库。

1.2 适用对象

  • 个人开发者
  • 高校学生
  • 企业开发者

1.3 案例时间

本案例预计总时长 8 小时。

1.4 案例流程

image-20260430173246294

说明:

  1. 配置华为云码道规则、skills与Neon MCP Server,部署PC本地开发和测试环境;
  2. 对话码道,使用 AssetMgmt SDD 逐项开发固定资产管理系统,并使用sdd-workflowbug-fix-reporter - Bug等skills辅助记录开发进展、需求同步和修复报告生成;
  3. 对话码道,使用 fullstack-testing skill 编写后端、前端、API集成以及E2E等测试用例;
  4. 对话码道,执行测试用例并修复bug;
  5. 对话码道,启动 AssetMgmt 固定资产管理系统。

1.5 资源总览

本案例预计花费0元。

资源名称 规格 单价(元)
华为开发者空间开发平台 - 云开发环境(容器) 鲲鹏通用计算增强型 kc1 | 4vCPUs | 8G | HCE 免费
华为云码道(CodeArts)代码智能体 系统标配 免费

二、环境和资源准备

2.1 开发环境部署

2.1.1 Python和Node.js

参考案例《SKILL快速构建你的Java、Python和Node.js开发环境》使用 dev-env-setup skill 对话码道,完成PC本地Python和Node.js开发环境的搭建。

请使用dev-env-setup skill帮我在本地部署一下python和Nodejs开发环境。

image-20260430144722675

2.1.2 Git 安装与配置
  1. 登录Git官网,点 Git for Windows/x64 Setup下载Git安装助手。

image-20260507160048515

  1. 下载完成后,双击安装助手,参考下图在本地安装配置Git。

git安装步骤

  1. 登录gitCode,参考下图操作,创建gitCode项目。

image-20260509153801042

  1. 获取Git全局配置

完成上一步的项目创建步骤后,在代码页签/界面点Clone,在弹窗中可以获取Git全局配置。

image-20260509152821657

  1. 打开命令提示符,输入如下指令,完成Git本地配置。
git --version    # 查询版本,验证安装成功
git config --global user.name <your-username>    # 设置用户名,<your-username>替换成上一步中获取用户名
git config --global user.email <your-email>    # 设置邮箱,<your-email>替换成上一步中获取的用户邮箱

image-20260509163727705

  1. 在步骤“4. 获取Git全局配置”中我们已经获取Git使用HTTPS协议的用户名,并提示密码使用gitCode个人访问令牌。

在gitCode右上角点用户头像,选择个人设置。左侧选择安全设置 > 访问令牌,在右侧点“+ 新建访问令牌”。在新访问令牌(经典)界面配置令牌名称,有效期及访问权限等。点页面最下侧的新建访问令牌

image-20260509155018778

复制并保存个人访问令牌。

image-20260509154937663

  1. 在首次使用git pull/git clone命令时弹窗,会根据弹窗提示要求输入用户名和密码,根据提示进行填写即可。
2.1.3 Docker Desktop 安装与配置

参考案例《告别繁琐操作,华为云码道 + Docker重塑远程开发体验》中的“4.1安装docker desktop”和“4.2更新WSL”完成Docker Desktop的安装。

image-20260507163020420

更新完之后,左下角会变成Engine running。接下来配置Docker镜像加速(可选):Docker Desktop → Settings → Docker Engine → 添加registry-mirrors。

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.1panel.live",
    "https://docker.kejilion.pro",
    "https://dockerpull.cn",
    "https://hub.rat.dev",
    "https://docker.zhai.cm",
    "https://docker.xuanyuan.me"
  ]
}

image-20260507164428088

2.1.4 Neon PostgreSQL 云端数据库配置

本项目计划使用Neon PostgreSQL(Serverless)数据库,该数据库可以通过Neon MCP服务调用连接。

  1. 注册并登录Neon: https://neon.tech/,参考案例《对话即查询:码道与Neon的集成探索》中的“2.3.3 API Key获取”获取Neon API Key。

注:下述Neon MCP服务安装命令及配置文件中的<YOUR_NEON_API_KEY>需要替换为Neon API Key。

  1. 打开AI IDE终端窗口执行如下命令:
npm install -g @neondatabase/mcp-server-neon
npx @neondatabase/mcp-server-neon init napi_r174tthlqa4v69oa26d9fd3ifznnbsc4vedbq2qwshadack93ad92s8pla7yd1u8
  1. 打开MCP服务配置文件,添加如下内容:
{
  "mcpServers": {
    "neon": {
      "command": "npx",
      "args": ["-y", "@neondatabase/mcp-server-neon", "start", "<YOUR_NEON_API_KEY>"]
    }
  }
} 

image-20260508090813611

2.2 本地测试环境部署

2.2.1 安装Playwright Chromium

在后续执行测试环节的E2E测试中,需要用到Chromium浏览器。而Playwright Chromium浏览器下载会经常因为网络原因导致下载失败,需要提前进行手动下载。

打开AI IDE终端窗口执行以下命令:

npm uninstall @playwright/test playwright  # 若已安装则错误的历史版本请使用此命令进行卸载,若未安装,则跳过此命令。
npm install @playwright/test@1.48.0		# 安装指定的稳定版本
set PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/   # 设置镜像环境变量
npx playwright install chromium 		# 安装浏览器

image-20260430174422394

2.3 华为云码道配置

2.3.1 安装AI IDE插件

后续在执行 AssetMgmt 项目前端开发任务时会用到Vue,此处先手动为其安装插件。打开码道AI IDE插件市场,在OPEN VSX页签搜索并安装Vue(Official)插件。

image-20260428150140746

同理操作,推荐安装Python、Python Debugger、Docker等插件(可选)。

image-20260508095935692

2.3.2 码道技能配置

我们已经通过前序案例《AssetMgmt固定资产管理系统(一):码道搭台,设计筑基》,完成了码道开发生态skills的集中配置。

image-20260506180247480

本案例中,我们将使用sdd-workflowbug-fix-reporter - Bug等skills,在开发过程中辅助完成开发进展跟踪、需求文档同步和自动生成bug修复报告等动作。在测试阶段,会使用fullstack-testing skill辅助完成测试用例的编写任务。

2.3.3 码道规则配置

打开码道设置 > 技能与规则,在项目级 - 规则点“+”,可编辑创建码道规则。

image-20260508101550452

参考下图编辑规则,然后点确定。(规则内容已经上传至gitCode,请根据需要自行下载。)

image-20260508101717058

注:适用范围需要选择自动应用,后续发送指令码道会自动遵守该规则内容执行任务。

三、对话码道:构建 AssetMgmt 项目

3.1 基础环境准备与项目初始化

提示:为避免对话过长,影响AI IDE的历史会话记录加载,建议新建一个码道对话,并对话码道:“请加载激活当前的项目级规则和skills,并读取AssetMgmt SDD设计文档。稍后我们将开始开发任务。”

对话码道:“请执行tasks中的任务 1.1.1: Windows开发环境部署,其中“配置Neon PostgreSQL云端数据库连接”我已经完成了Neon MCP Server的配置,请自行检查验证。”

image-20260507183248288

继续对话码道:“请继续完成tasks中的任务 1.1.2: 后端项目初始化(FastAPI工程目录+API骨架+数据模型骨架) ”。

image-20260507183355786

继续对话码道:“请继续完成tasks中的任务 1.1.3: 前端项目初始化(Vue3工程目录+API封装骨架+基础组件)”。

image-20260508110408168

任务执行总结:

任务ID 任务描述 状态 Sprint报告
1.1.1 Windows开发环境部署 完成 基硎环境准备.md
1.1.2 后端项目初始化(FastAPI + SQLAlchemy) 完成 后端项目初始化.md
1.1.3 前端项目初始化(Vue3 + Vite) 完成 前端项目初始化.md

关键成果:

  • Python 3.11 + Node.js 20 开发环境配置完成;
  • 后端项目结构建立,Alembic迁移配置完成;
  • 前端项目结构建立,Vite + Element Plus + Pinia配置完成;
  • Neon PostgreSQL数据库连接配置完成。

3.2 核心业务模块开发

3.2.1 用户认证与权限管理模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.1 用户认证与权限管理模块”。

image-20260508110516479

任务执行总结:

任务ID 任务描述 状态 优先级
2.1.1 JWT认证实现(双Token机制) 完成 P0
2.1.2 RBAC权限模型实现 完成 P0
2.1.3 登录锁定机制(5次锁定30分钟) 完成 P0
2.1.4 认证前端页面实现 完成 P0
2.1.5 权限指令(v-permission) 完成 P0
2.1.6 路由守卫实现 完成 P0

关键成果:

  • JWT双Token机制(Access Token 8h + Refresh Token 7天);
  • 3角色32权限体系(admin / asset_manager / employee);
  • 登录失败5次锁定30分钟;
  • 前端权限指令和路由守卫。

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\001用户认证与权限管理.md - 模块2.1+2.2总结。

3.2.2 组织架构与系统管理模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.2 组织架构与系统管理模块”。

image-20260508110600221

任务执行总结:

任务ID 任务描述 状态 优先级
2.2.1 部门树形管理CRUD 完成 P1
2.2.2 用户管理CRUD 完成 P0
2.2.3 角色权限配置 完成 P0
2.2.4 用户状态管理(启用/禁用/重置密码) 完成 P0
2.2.5 部门删除保护(有子部门/员工时拒绝) 完成 P0

关键成果:

  • 部门树形结构管理,支持删除保护;
  • 用户完整CRUD + 角色关联 + 部门关联;
  • 系统角色保护(is_system=true不可修改权限)。
3.2.3 资产基础管理模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.3 资产基础管理模块”。

image-20260508110728442

任务执行总结:

任务ID 任务描述 状态 优先级
2.3.1 资产分类管理CRUD 完成 P1
2.3.2 资产入库(自动编码生成) 完成 P0
2.3.3 资产列表查询(筛选+分页) 完成 P0
2.3.4 资产详情查看 完成 P0
2.3.5 资产编辑 完成 P1
2.3.6 资产删除(仅在库状态) 完成 P0
2.3.7 数据权限隔离(员工仅本部门) 完成 P0

关键成果:

  • 资产编码自动生成: {分类代码}-{年份}-{4位序号}
  • 数据权限: 管理员全量,员工仅本部门资产;
  • 分类删除保护(有关联资产时拒绝)。

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\002资产基础管理模块.md - 模块2.3总结。

3.2.4 资产业务流程模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.4 资产业务流程模块”

image-20260508110956129

任务执行总结:

任务ID 任务描述 状态 优先级
2.4.1 状态流转引擎实现 完成 P0
2.4.2 资产领用(需审批) 完成 P0
2.4.3 资产借用(需审批+预计归还日期) 完成 P0
2.4.4 资产退库(直接) 完成 P0
2.4.5 资产归还(借用中→在库) 完成 P0
2.4.6 资产报废(需审批) 完成 P0
2.4.7 资产转移(需审批) 完成 P0
2.4.8 审批流程实现(通过/驳回/撤销) 完成 P0
2.4.9 审批联动资产状态变更 完成 P0
2.4.10 前端交互实现 完成 P0

关键成果:

  • 状态流转矩阵 VALID_TRANSITIONS + 校验函数 validate_transition()
  • 审批通过自动变更资产状态(并发保护重读状态);
  • 审批驳回/通过异步触发通知;
  • 退库同时清除 user_id + department_id

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\003资产业务流程与审批模块.md - 模块2.4总结

3.2.5 批量导入导出模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.5 批量导入导出模块”

image-20260508111140113

任务执行总结:

任务ID 任务描述 状态 优先级
2.5.1 导入模板下载 完成 P1
2.5.2 批量导入实现(全部校验→批量插入) 完成 P0
2.5.3 导入校验(格式/必填/唯一性) 完成 P0
2.5.4 导出资产清单 完成 P1
2.5.5 导入上限(500行) 完成 P0

关键成果:

  • 导入策略: 全部校验优先 → 校验通过批量插入 → 失败返回全部错误;
  • 导入上限500行,超出拒绝处理;
  • 导出支持按状态筛选。

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\004批量导入导出模块.md - 模块2.5总结

3.2.6 站内通知模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.6 站内通知模块”

image-20260508111223209

任务执行总结:

任务ID 任务描述 状态 优先级
2.6.1 通知列表查询 完成 P1
2.6.2 未读数量查询 完成 P1
2.6.3 标记已读(单条/全部) 完成 P1
2.6.4 审批通过/驳回自动通知 完成 P0
2.6.5 借用超期定时提醒(每日09:00) 完成 P1
2.6.6 前端通知Popover(最近5条+30s轮询) 完成 P1

关键成果:

  • 审批结果自动触发通知(异步);
  • APScheduler定时任务检查借用超期(去重避免重复通知);
  • 前端通知面板 + 未读角标 + 30秒轮询。

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\005站内通知模块.md - 模块2.6总结。

3.2.7 统计分析模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.7 统计分析模块”

image-20260508111313919

任务执行总结:

任务ID 任务描述 状态 优先级
2.7.1 首页概览统计 完成 P1
2.7.2 按分类统计 完成 P1
2.7.3 按部门统计 完成 P1
2.7.4 按状态统计 完成 P1
2.7.5 趋势统计(30天) 完成 P2
2.7.6 ECharts图表展示(饼图+柱状图+折线图) 完成 P1
2.7.7 统计数据导出 完成 P1

关键成果:

  • 5个统计API: overview / by-category / by-department / by-status / trend;
  • ECharts三图表: 饼图(状态分布) + 柱状图(部门统计) + 折线图(30天趋势);
  • 支持部门/分类统计导出Excel。

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\006统计分析模块.md - 模块2.7总结。

3.2.8 操作日志与收尾模块

对话码道:“请继续完成tasks中的 第二部分:项目开发 - 2.8 操作日志与收尾模块”

image-20260508111356978

任务执行总结:

任务ID 任务描述 状态 优先级
2.8.1 操作日志HTTP中间件 完成 P1
2.8.2 日志查询(筛选+分页) 完成 P1
2.8.3 日志导出 完成 P2
2.8.4 日志只读保护 完成 P1
2.8.5 分页计数效率优化 完成 P0
2.8.6 预置数据初始化脚本 完成 P0

关键成果:

  • HTTP中间件自动拦截POST/PUT/PATCH/DELETE写操作记录日志;
  • 分页计数优化: select(func.count()).select_from(query.subquery())
  • 预置账号: admin / Admin123(系统管理员);

sprint 报告:ProjectDocs\sprint\第2部分:项目开发\007操作日志与收尾模块.md - 模块2.8总结。

3.2.9 项目开发检验与补充

对话码道:“请深度检索项目,检验SDD tasks中的 第二部分:项目开发 是否都已完成,若未完成请自行补充。”

image-20260508111438235

注:本案中该指令执行了三次,以避免问题遗漏。

3.2.10 开发阶段成果总结
3.2.10.1 后端架构

核心框架:

  • FastAPI应用入口 + APScheduler + 操作日志HTTP中间件
  • SQLAlchemy 2.x 异步ORM + Alembic数据库迁移
  • Pydantic 2.x 数据验证 + Settings配置管理

数据模型 (19个表):

  • Role, Permission, User, RefreshToken
  • Department, AssetCategory, Asset, AssetStatusLog
  • Approval, Notification, OperationLog

服务层:

  • auth_service.py - 认证服务 (5次锁定+双Token)
  • asset_service.py - 核心: VALID_TRANSITIONS + validate_transition() + 数据权限
  • approval_service.py - 核心: create_approval + approve_approval(联动+通知) + reject_approval
  • stats_service.py - 统计服务 (5个方法)
  • import_export_service.py - 导入模板+批量导入+导出
  • scheduler_service.py - 借用超期定时检查
  • log_service.py - 操作日志服务

API路由 (46个端点):

  • /api/v1/auth/* - 5个端点 (login/refresh/logout/me/password)
  • /api/v1/users/* - 6个端点
  • /api/v1/departments/* - 6个端点
  • /api/v1/categories/* - 7个端点
  • /api/v1/assets/* - 16个端点 (含导入导出)
  • /api/v1/approvals/* - 8个端点
  • /api/v1/notifications/* - 5个端点
  • /api/v1/stats/* - 7个端点
  • /api/v1/logs/* - 2个端点
  • /api/v1/roles/* - 4个端点
3.2.10.2 前端架构

核心框架:

  • Vue 3 Composition API + TypeScript
  • Vite构建 + Element Plus UI库
  • Pinia状态管理 + Vue Router路由

状态管理 (4个Store):

  • auth.ts - 用户认证状态
  • user.ts - 用户信息状态
  • notification.ts - 通知状态 (30s轮询)
  • app.ts - 应用全局状态

路由 (19个页面路由):

  • 认证: Login
  • 仪表盘: Dashboard
  • 系统管理: DepartmentManage, UserManage, RoleManage, CategoryManage, OperationLog, Profile, ChangePassword
  • 资产管理: AssetList, AssetCreate, AssetDetail, AssetEdit, AssetImport
  • 审批管理: ApprovalList, PendingList, MyApply
  • 通知管理: NotificationList

API封装:

  • Axios封装 (Token注入 + 刷新 + 错误拦截 + patch方法)
  • 模块化API: auth / user / asset / approval / stats / notification / log
3.2.10.3 数据库

Neon PostgreSQL:

  • 项目ID: wandering-math-22100628
  • 数据库名: neondb
  • PostgreSQL版本: 17
  • 表数量: 19个表
  • 迁移状态: 已完成

关键约束:

  • 用户名唯一约束
  • 资产编码唯一约束
  • 部门外键约束 (删除保护)
  • 分类外键约束 (删除保护)

至此我们已经完成 AssetMgmt 项目开发阶段的任务,下一节我们将进入测试阶段。

3.3 测试与优化

提示:为避免对话过长,影响AI IDE的历史会话记录加载,建议新建一个码道对话,并对话码道:“请加载激活当前的项目级规则和skills,读取AssetMgmt SDD设计文档并深度检索项目,查看任务完成情况。稍后我们将开始执行测试任务。”

本案例中我们将在本地Windows环境进行测试,测试环境分为三个环节:本地测试环境搭建(在 2.2 本地测试环境部署 中已经手动完成了部分任务)、测试用例编写和执行。

3.3.1 测试设计优化

在前序案例《AssetMgmt固定资产管理系统(一):码道搭台,设计筑基》中我们已经基于系统整体设计进行了项目的测试设计,经过本案例前面章节的操作,项目功能和代码结构的具体实现发生了较多变化。因此我们需要先进行测试设计的优化。

对话码道:“请深度检索项目,并使用fullstack-testing根据当前项目状态,优化和完善SDD中的测试设计以及tasks中的测试任务”。

image-20260508143223419

注:本案中该指令执行了三次,以避免问题遗漏。

完成如下测试设计优化:

  1. 新增104个遗漏用例
类别 新增用例 P0 P1 P2 关键场景
认证服务边界 5 3 2 0 inactive登录/密码修改后Token撤销/refresh拒绝inactive
资产服务边界 5 3 2 0 NotFoundException/force_change无效状态/退库字段清除
审批服务边界 4 4 0 0 并发状态变更/transfer审批/borrow日期写入
导入导出边界 5 3 2 0 部门不存在/名称超长/批量回滚/行数上限/多错误合并
用户/部门/通知/统计/调度 9 6 3 0 reset解锁locked/间接环/用户隔离/零资产/通知去重
前端边界与联动 7 5 2 0 Login Store联动/lockMessage/hasPermission/request并发刷新
前端Store/组件补充 19 5 11 3 auth store localStorage/user store admin/notification polling/AssetList v-if/AssetCreate日期
集成层补充 6 1 5 0 asset_manager is_admin/文件扩展名/UUID 422/Schema校验
其他边界(P1+P2) 44 0 27 17 各模块P1/P2级边界条件
  1. 修正5个冲突用例
用例ID 冲突原因 修正
UT-VAL-005 UserCreate.email为纯str,无EmailStr 预期从"验证失败"改为"验证通过"
UT-VAL-006 UserCreate.phone为纯str,无pattern 预期从"验证失败"改为"验证通过"
UT-VAL-007 UserCreate.password仅min_length=8 预期从"验证失败(需含字母和数字)“改为"验证通过”
UT-VAL-010 BorrowRequest.expected_return_date无future校验 预期从"验证失败"改为"验证通过"
ForceChangeRequest new_status无枚举校验 补充说明由service层拒绝
3.3.2 测试环境搭建

继续对话码道:“请继续完成tasks中的任务 3.1.1: 本地Windows测试环境准备”。

image-20260508143909093

3.3.3 编写测试用例
3.3.3.1 编写后端测试用例

继续对话码道:“请使用 fullstack-testing skill 继续完成tasks中的任务 3.2.1:后端单元测试编写(认证+状态引擎+审批+验证)”。

image-20260508143753850

任务执行总结:

  • 框架:pytest + SQLite内存库;
  • 执行命令:pytest tests/unit/backend -v
  • 通过率:100% (274/274) 。
序号 测试文件 用例数 模块 状态
1 test_security.py 17 安全基础层(密码哈希/JWT生成验证/Token解析) 完成
2 test_deps.py 17 权限守卫(get_current_user/require_permission/admin_required) 完成
3 test_codegen.py 7 编码生成(格式/序号/年份/并发) 完成
4 test_exceptions.py 7 异常类(继承/消息/HTTP映射) 完成
5 test_config.py 9 配置管理(Settings/env加载/默认值) 完成
6 test_auth_service.py 18 认证服务(login/锁定/双Token/密码修改) 完成
7 test_asset_status.py 17 状态引擎(流转矩阵/校验/并发保护) 完成
8 test_approval_service.py 10 审批服务(创建/通过/驳回/撤销/联动) 完成
9 test_user_service.py 14 用户服务(CRUD/角色/部门/密码重置) 完成
10 test_department_service.py 14 部门服务(树/CRUD/删除保护/员工) 完成
11 test_category_service.py 12 分类服务(树/CRUD/删除保护/统计) 完成
12 test_notification_service.py 8 通知服务(创建/已读/未读数) 完成
13 test_stats_service.py 6 统计服务(概览/分类/部门/状态/趋势) 完成
14 test_log_service.py 3 日志服务(创建/查询) 完成
15 test_schemas.py 12 Schema验证(必填/类型/嵌套) 完成
16 test_excel_utils.py 14 Excel工具(导入/导出/编码/日期) 完成
17 test_import_export_service.py 12 导入导出服务(模板/校验/批量/导出) 完成
18 test_middleware.py 6 操作日志中间件(拦截/跳过/记录) 完成
19 test_init_service.py 5 预置数据初始化(角色/权限/用户) 完成
20 test_scheduler_service.py 5 调度服务(借用超期/通知触发) 完成
21 test_edge_cases.py 58 边界异常路径(空值/越界/并发/类型) 完成
22 合计 274 21文件

关键成果:

  • 覆盖全部核心服务层(auth/asset/approval/user/department/category/notification/stats/log);
  • 覆盖安全基础层(security/deps)和工具层(codegen/excel/config);
  • 边界异常测试58用例,覆盖空值/越界/并发/类型转换。

sprint 报告:ProjectDocs\sprint\第3部分:测试与优化\002后端单元测试编写.md - 任务3.2.1总结。

3.3.3.2 编写前端测试用例

继续对话码道:“请使用 fullstack-testing skill 继续完成tasks中的任务 3.2.2: 前端单元测试编写(组件+Store+工具函数)”。

image-20260508164603163

任务执行总结:

  • 框架: Vitest 4.1.5 + @vue/test-utils + happy-dom;
  • 执行命令:npm run test
  • 通过率:100% (162/162) 。
序号 测试文件 用例数 模块 状态
1 auth.test.ts 7 auth store (login/logout/setUser/isAuthenticated/localStorage) 完成
2 user.test.ts 11 user store (permissions/role/isAdmin/hasPermission/fetchUserInfo) 完成
3 notification.test.ts 6 notification store (fetchUnreadCount/startPolling/stopPolling) 完成
4 app.test.ts 4 app store (sidebar/breadcrumb/toggle) 完成
5 format.test.ts 41 格式化工具 (formatMoney/formatDate/formatDateTime/getStatusType) 完成
6 validate.test.ts 18 验证工具 (validateUsername/validatePassword/validateEmail/validatePhone) 完成
7 request.test.ts 14 请求封装 (Token管理/并发刷新/错误处理/401/403/500) 完成
8 guards.test.ts 5 路由守卫 (未认证重定向/已认证login重定向/无权限403) 完成
9 usePermission.test.ts 6 权限composable (hasPermission/hasAnyPermission/hasAllPermissions) 完成
10 usePagination.test.ts 6 分页composable (fetch/pageChange/sizeChange/reset) 完成
11 permission.test.ts 4 权限指令 (v-permission/空权限/admin) 完成
12 Login.test.ts 6 登录组件 (渲染/表单/lockMessage/loading) 完成
13 AssetList.test.ts 10 资产列表 (状态标签/格式化/操作按钮/筛选/权限) 完成
合计 162 14文件

关键成果:

  • 覆盖全部4个Store(auth/user/notification/app);
  • 覆盖全部工具函数(format/validate/request);
  • 覆盖路由守卫、Composable、指令、组件。

sprint 报告:ProjectDocs\sprint\第3部分:测试与优化\003前端单元测试编写.md - 任务3.2.2总结。

3.3.3.3 编写API集成测试用例

继续对话码道:“请使用 fullstack-testing skill 继续完成tasks中的任务 3.2.3: API集成测试编写”。

image-20260508164932382

任务执行总结:

  • 框架:pytest + FastAPI TestClient + SQLite内存库;
  • 执行命令:pytest tests/integration/api -v
  • 通过率:100% (93/93) 。
序号 测试文件 用例数 模块 状态
1 test_auth_api.py 12 认证API (login/refresh/logout/me/password/锁定) 完成
2 test_crud_api.py 22 用户/部门/分类CRUD (创建/重复/列表/详情/更新/删除) 完成
3 test_assets_api.py 22 资产CRUD+业务操作+状态日志+导入导出 完成
4 test_other_api.py 27 审批/通知/统计/日志/角色/健康检查 完成
5 test_security_api.py 10 安全防护+数据库约束+审批通知联动 完成
合计 93 5文件

关键成果:

  • 覆盖全部46个API端点;
  • 测试认证流程、CRUD操作、业务流程、安全防护;
  • 审批-通知联动集成测试。

sprint 报告:ProjectDocs\sprint\第3部分:测试与优化\004API集成测试编写.md - 任务3.2.3总结。

3.3.3.4 编写E2E测试用例

继续对话码道:“请使用 fullstack-testing skill 继续完成tasks中的任务 3.2.4: E2E测试用例编写”。

image-20260508170953796

任务执行总结:

  • 框架:Playwright 1.59 + Chromium;
  • 执行命令:npx playwright test
  • 状态:已编写,待执行(规则R8)。
序号 测试文件 用例数 模块 状态
1 test_auth_flow.spec.ts 5 用户认证流程 (登录/密码错误/锁定/登出/Token过期) 完成
2 test_claim_flow.spec.ts 3 资产领用流程 (申请→审批通过/申请→驳回/借用中不可报废) 完成
3 test_borrow_flow.spec.ts 3 资产借用归还流程 (借用→归还/列表显示/归还弹窗) 完成
4 test_return_flow.spec.ts 2 资产退库流程 (退库/退库后可再领用) 完成
5 test_scrap_flow.spec.ts 2 资产报废流程 (报废→审批/已报废不可操作) 完成
6 test_transfer_flow.spec.ts 2 资产转移流程 (转移→审批/需审批) 完成
7 test_permission_flow.spec.ts 3 权限隔离 (菜单限制/数据隔离/操作限制) 完成
8 test_reject_flow.spec.ts 2 审批驳回流程 (申请撤销/已审批不可撤销) 完成
9 test_import_flow.spec.ts 2 资产批量导入 (下载模板导入/校验失败) 完成
10 test_create_flow.spec.ts 2 资产入库流程 (新增入库/保存并继续) 完成
11 test_password_flow.spec.ts 2 修改密码流程 (修改成功/旧密码错误) 完成
12 test_dashboard_flow.spec.ts 2 首页概览 (管理员待办/员工待办) 完成
13 test_notification_flow.spec.ts 3 通知流程 (收到通知/查看跳转/全部已读) 完成
合计 33 12文件

关键成果:

  • 覆盖12个核心业务流程;
  • E2E用例ID与测试设计文档完全对应;
  • 统一选择器常量 helpers/selectors.ts ;
  • 统一认证辅助函数 helpers/auth.ts 。

sprint 报告:ProjectDocs\sprint\第3部分:测试与优化\005E2E测试编写.md - 任务3.2.4总结。

3.3.4 执行测试用例与修复bug
3.3.4.1 执行测试用例

继续对话码道:“请继续完成tasks中的任务 3.3.1: 本地Windows环境测试执行与Bug修复”。

image-20260508180105926

在执行到E2E测试时由于Neon数据库延迟问题,导致测试进展缓慢。为了避免直接使用Neon数据库导致测试时间超长或失败,我们先记录并跳过该问题,让测试继续执行。

image-20260509091050630

第一次执行测试用例,修复了全部后端、前端、API集成和部分E2E问题。

再次执行:“请继续完成tasks中的任务 3.3.1: 本地Windows环境测试执行与Bug修复”。

image-20260509092513964

由于第一次执行记录了Neon数据库延迟问题,第二次执行时直接使用SQLite进行测试。使用本地SQLite数据库后执行速度大幅度提升。所有的测试用例执行结束,修复全部E2E问题。

再次对话码道执行 3.3.1: 本地Windows环境测试执行与Bug修复:

请识别Neon MCP服务修改数据库配置,将数据库切换为Neon PostgreSQL,创建Neon项目asset_mgmt并迁移数据库,填充测试数据后再次执行tasks中的任务 3.3.1: 本地Windows环境测试执行与Bug修复,执行中若再次出现数据库延迟问题,则延长用例执行时间,并在sprint中记录延迟时间。

image-20260509113119825

3.3.4.2 Bug修复总结
  1. Bug统计
测试类型 用例数 通过率 耗时 延迟倍率
后端单元测试 274 100% 100.5s 1.0x
前端单元测试 162 100% 3.7s 1.0x
API集成测试 93 100% 113.0s 1.0x
E2E测试 35 100% 9.1min 5.7x
合计 564 100% ~12min 2.0x

注:E2E测试延迟较大,因Neon Serverless冷启动(每次API请求约5-8秒)。已通过延长超时配置解决。

  1. E2E测试明细
  • 框架:Playwright 1.59 + Chromium ;
  • 执行命令:npx playwright test
  • 状态:已完成。
序号 测试文件 用例数 状态
1 test_auth_flow.spec.ts 5 通过
2 test_claim_flow.spec.ts 3 通过
3 test_borrow_flow.spec.ts 3 通过
4 test_return_flow.spec.ts 2 通过
5 test_scrap_flow.spec.ts 2 通过
6 test_transfer_flow.spec.ts 2 通过
7 test_permission_flow.spec.ts 3 通过
8 test_reject_flow.spec.ts 2 通过
9 test_import_flow.spec.ts 2 通过
10 test_create_flow.spec.ts 2 通过
11 test_password_flow.spec.ts 2 通过
12 test_dashboard_flow.spec.ts 2 通过
13 test_notification_flow.spec.ts 3 通过
14 debug-login.spec.ts 1 通过
15 env.spec.ts 1 通过
合计 35

sprint 报告:ProjectDocs\sprint\第3部分:测试与优化\006本地测试执行与Bug修复.md - 任务3.2.5总结。

3.3.5 项目启动与代码提交

继续对话码道:“请帮我向数据库中插入一些数据,我想看一个比较全面的展示效果,然后重新启动AssetMgmt 固定资产管理系统前后端程序。”

image-20260509145002486

数据插入后,启动项目,使用码道提供的系统初始密码登录AssetMgmt 固定资产管理系统,手动检查各项功能均可正常访问。

注:体验过程中可打开浏览器开发者模式,若发现问题,可将问题反馈给码道,让其帮助修复。

image-20260509145530518

注:因Neon Serverless冷启动(每次API请求约5-8秒)问题,数据加载有延迟。

在“2.1.2 Git 安装与配置”中,我们已经在本地安装配置了Git。对话码道,将代码上传至gitCode:

请帮我在gitCode中创建一个名为asset_mgmt的公有代码仓,并将当前目录下的所有代码、文件等提交到该仓库中。

image-20260509160558577

四、案例总结&补充

本案例在本地 Windows 11 PC 上搭建开发测试环境,以华为云 CodeArts 代码智能体为核心开发工具,结合 sdd-workflowbug-fix-reporter 等技能以及规则和 Neon MCP Server,基于 AssetMgmt SDD 成功完成了固定资产管理系统的开发、测试与运行。实现了 AssetMgmt 项目从“设计蓝图”到“智慧管家”的华丽转变,让固定资产管理真正从“纸上谈兵”走向“实战落地”。

后续,我们计划将 AssetMgmt 固定资产管理系统部署至华为云 ECS 环境。由于云上环境与本地 Windows 环境存在较大差异,在下一篇案例中,我们将基于华为开发者空间 - 云开发环境重新部署该系统,并再次执行测试用例与修复 Bug,以确保线上项目与本地开发环境的行为保持一致。

附录

本案例中所涉及的AssetMgmt固定资产管理系统源码、测试用例以及过程文件等已上传至gitCode,请根据需要进行下载

本案例中所使用的规则可点这里进行下载

码道领航AssetMind智能资产系统开发系列案例:

反馈改进建议

如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐