Skip to content

Cyrus580529/skillflow

Repository files navigation

SkillFlow — 企业内部跨部门技能协作与履约平台

Vue 3 + .NET 9 + SQL Server | 617 xUnit | Playwright E2E | FlowOps AI Agent

项目简介

SkillFlow 解决企业内部跨部门的技能协作与履约管理问题。员工可以发布协作需求、承接同事任务,通过点数(积分)进行内部结算。系统提供需求审核、争议调解、交付验收、点数商城等完整闭环,并集成 FlowOps AI Agent 实现自然语言驱动的任务操作。

核心流程:发布协作需求 → AI 解析 → 管理员审核 → 招募响应 → 承接 → 交付验收 → 点数结算 → 商城兑换

技术栈

技术
前端框架 Vue 3 (Composition API) + TypeScript 6
UI 组件 Element Plus
图表 Chart.js + ECharts 6
富文本 TipTap
状态管理 Pinia 3
路由 Vue Router 4(嵌套路由 + 路由守卫 + 面包屑)
HTTP Axios (拦截器自动刷新 Token + CSRF 保护)
后端框架 .NET 9 Web API (RESTful)
ORM Entity Framework Core 9 (Code-First, Fluent API)
认证 JWT 双 Token (Access Token 15min + Refresh Token 7天) + BCrypt
安全 CSRF 中间件 + 速率限制 + CORS
数据库 SQL Server 2022 (Docker)
AI 规则引擎 + DeepSeek API + LLM Goal Interpreter
Agent FlowOps — 通用页面理解 + 控件执行 + 长程自主任务
测试 xUnit (617 单元测试) + Playwright (16+ E2E)

快速启动

方式零:一键启动脚本(最省事,推荐评审使用)

自动完成:启动数据库 → 等待就绪 → 引导填入 DeepSeek Key(可跳过)→ 启动前后端 → 打开浏览器。

  • Windows:双击根目录 start.bat(或 PowerShell 运行 ./start.ps1
  • macOS / Linuxchmod +x start.sh && ./start.sh

脚本会弹出提示询问 AI Key,直接回车即可跳过(FlowOps 走规则引擎,主流程不受影响)。 脚本前置条件:已安装 Docker Desktop、.NET 9 SDK、Node 18+,且 Docker 已运行。

方式一:手动分步

# 1. 数据库(Docker,一键)
docker compose up -d
#    等待 8-10 秒让 SQL Server 就绪
#    —— 备选:手动 docker run(与上等价)——
#    docker run -d --name skillflow-db -e "ACCEPT_EULA=Y" \
#      -e "SA_PASSWORD=SkillF10w_Sa" -p 1433:1433 \
#      mcr.microsoft.com/mssql/server:2022-latest

# 2. 后端(开发配置已随仓库提供,clone 后零配置即可起;自动迁移 + 种子数据)
#    appsettings.Development.json 已内置可用的 DB 连接与 Jwt,dotnet run 默认走 Development 环境。
#    FlowOps 智能助手如需启用,再补一个 DeepSeek Key(详见下方「配置 FlowOps 的 AI Key」,可选)。
cd backend/SkillFlow.Api && dotnet run            # → http://localhost:5000

# 3. 前端
cd ../frontend && npm install && npm run dev      # → http://localhost:5173

首次启动注意:后端使用 Database.Migrate() 自动创建数据库并填充种子数据(含演示用户、协作任务、商城商品)。确保 Docker 容器启动后等待 5-10 秒再启动后端。

关于数据:演示数据由后端 DemoSeedService 在空库首次启动时确定性生成(固定演示账号、任务、商品、部门),无需导入任何 .bak / 数据卷。已有数据时不会重复播种、不会覆盖你的改动。

环境要求:.NET 9 SDK · Node 18+ · Docker Desktop(含 SQL Server 容器)。

配置 FlowOps 的 AI Key(可选,启用智能助手对话)

不配也能跑:主业务流程(发布 / 审核 / 投标 / 承接 / 交付 / 争议 / 商城)全部正常。 只有 FlowOps(右下角智能助手)需要 DeepSeek API Key 才能真正对话;不配则自动降级为规则引擎,能力受限。

第 1 步:拿一个 Key — 到 https://platform.deepseek.com 注册 → 「API Keys」→ 创建,形如 sk-xxxxxxxx

第 2 步:填进配置(任选一种)

# 方式 A(环境变量,优先级最高,推荐):
#   Windows PowerShell:   $env:OPENAI_API_KEY = "sk-你的key"
#   Linux/macOS:          export OPENAI_API_KEY="sk-你的key"
#   然后在同一终端 dotnet run。

# 方式 B(改文件):编辑 backend/SkillFlow.Api/appsettings.Development.json
#   把 "AI": { "ApiKey": "" } 填成你的 Key。
#   ⚠️ 该文件已随仓库提交,请勿把真实 Key commit 上去——优先用方式 A。

后端 dotnet run 默认就是 Development 环境(见 launchSettings.json),无需手动设环境变量即可读取 appsettings.Development.json

第 3 步:验证 Key 真的生效 — 登录后打开右下角 FlowOps,问一句「总结一下现在有哪些任务」。

  • ✅ 正常:它会具体列出真实任务名、积分、截止时间,每次回答不同。
  • ❌ 未生效:每次都回同一句很笼统的兜底话(如「请到任务大厅查看」),说明 Key 没加载——回到第 2 步检查,并确认是用 Development 环境启动的。

演示账号

以种子数据为准,已确认账号如下:

邮箱 密码 角色 说明
superadmin@company.com Admin123456 超级管理员 全部管理权限,可分配管理员
admin@company.com Admin123456 管理员 任务审核 + 争议调解管理
zhangsan@company.com Admin123456 普通用户 市场部,200 点数
zhaoliu@company.com Admin123456 普通用户 研发部,500 点数

完整用户列表见种子数据 SeedData.cs

文档入口

文档 说明
docs/README.md 完整文档索引
docs/prd/PRD.md 产品需求文档(唯一权威规格)
docs/prd/EPIC-STORY.md Epic/Story 追踪
docs/CHANGELOG.md 变更日志
docs/BUG-FIXES.md Bug 修复记录
docs/UI-DESIGN-GUIDE.md UI 设计指南
docs/demo/v3.4-manual-acceptance-script.md 手工验收脚本
docs/evaluation/teacher-review-alignment.md 评审标准对照表
docs/flowops-architecture-debt-report.md FlowOps 架构债务报告

项目结构

SkillFlow/
├── backend/
│   ├── SkillFlow.sln                   # 解决方案文件
│   ├── SkillFlow.Api/                  # Web API 层(Controllers + Middleware)
│   ├── SkillFlow.Application/          # 业务逻辑层(Services + DTOs + Agents)
│   ├── SkillFlow.Domain/               # 领域层(Entities + Enums + Interfaces)
│   ├── SkillFlow.Infrastructure/       # 基础设施层(DbContext + Migrations + AI)
│   └── SkillFlow.Tests/                # xUnit 单元测试(617 个)
├── frontend/
│   ├── src/
│   │   ├── views/                      # 页面组件(30+)
│   │   ├── components/                 # 复用组件(30+,含 FlowOps Agent Panel)
│   │   ├── agent/                      # FlowOps Agent 运行时(通用层架构)
│   │   ├── api/                        # API 调用模块
│   │   ├── router/                     # 路由配置
│   │   └── stores/                     # Pinia 状态管理
│   ├── e2e/                            # Playwright E2E + FlowOps LLM 探针
│   └── public/                         # 静态资源
├── docs/
│   ├── prd/                            # 产品需求文档
│   ├── concepts/                       # 概念图与 UI 设计
│   ├── design/                         # 设计文档与开发总结
│   ├── screenshots/                    # 验收截图
│   ├── superpowers/                    # 实施计划与规格
│   └── archive/                        # 历史版本归档
└── README.md                           # 本文件

功能模块

用户端

  • 协作需求大厅 — 浏览/筛选/搜索全部协作需求,支持收藏
  • 任务详情 — 完整描述、交付物、附件、消息讨论
  • 投标/承接 — 提交申请、查看竞价列表、选择承接者
  • 交付验收 — 交付物上传、审核、通过/退回
  • 消息系统 — 任务级消息(嵌套回复)+ 私信
  • 个人中心 — 档案编辑、技能管理、统计面板
  • 点数商城 — 商品浏览、兑换、订单管理
  • 争议调解 — 提交仲裁、查看进度、结算比例建议

管理端

  • 仪表盘 — 系统概览(任务、用户、钱包、争议)
  • 任务审核 — AI 辅助风险评分,审核/驳回
  • 用户管理 — 用户列表、详情、锁定/解锁
  • 管理员分配 — 角色分配与管辖范围
  • 争议调解管理 — 分配仲裁员、查看裁决
  • 部门钱包 — 点数调整、操作记录
  • 运营内容 — 公告、轮播图、配置管理
  • 审计日志 — 操作追溯

FlowOps AI Agent

  • 自然语言驱动 — 通过聊天界面用自然语言完成任务操作
  • 通用运行时 — CandidateSet → ReferenceResolver → GoalFrame → PlanRunner → Verifier
  • 页面理解data-agent-* 元数据标注,自动识别页面对象/动作/控件
  • 长程任务 — 多步规划、执行、验证、恢复
  • 安全治理 — DomainPolicy 分级、高危操作确认、只读兜底
  • 跨页面操作 — 导航→读取→决策→执行的全链路

权限模型

角色 路由可见范围 说明
SuperAdmin 全部 系统管理 + 管理员分配
Admin 内容管理 任务审核 + 争议调解,仅操作分配的用户
Auditor 任务审核 + 审计日志 审核 + 审计查询
Arbitrator 争议调解(仅自己案件) 裁决权限
User 用户端全功能 协作需求发布/响应、交付、点数商城

测试

# 后端编译
dotnet build backend/SkillFlow.sln

# 后端单元测试(617 个)
dotnet test backend/SkillFlow.Tests

# 前端类型检查
cd frontend && npx vue-tsc --noEmit

# 前端构建
cd frontend && npm run build

# E2E 测试(需先启动前后端)
cd frontend && npx playwright test e2e/auth-guard.spec.ts --workers=1
cd frontend && npx playwright test e2e/tasks.spec.ts --workers=1
cd frontend && npx playwright test e2e/shop.spec.ts --workers=1

数据库说明

如果本地数据库已被多次 E2E 测试污染(用户点数耗尽、任务状态混乱),建议重建演示数据库:

docker stop skillflow-db
docker rm skillflow-db
# 然后重新创建容器(见快速启动中的 docker run 命令)

后端首次启动会自动执行 Database.Migrate() 创建表结构并使用种子数据填充,无需手动执行 SQL 脚本。

开发历程

项目采用切片迭代开发模式,完整历程记录在 docs/design/ 中:

阶段 覆盖范围 说明
Ver1 (S1-S13) 核心流程(发布→承接→交付→结算→商城) MVP 功能闭环
Ver2 (S14-S15) UI 全面升级 + 设计系统 多分辨率适配,概念图驱动
Ver2 (S16-S18) 投标面板/工作间/仪表盘 三大核心视图深度重构
Ver2 (S19-S22) FlowOps AI Agent 系统 通用 Agent 运行时架构
Ver2 (S20-S22) 只读底座/叙事/通用层 CandidateSet/GoalFrame/PlanRunner

完整开发总结见 docs/design/2026-05-05-ver2-final-summary.md

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors