NPC 任务看板(kanban-view)— 产品需求文档
v1.0 · 2026-05-21 · AI Pipeline Factory 生成
一、产品概述与核心价值
产品定位
面向 CNB 多组织多仓库管理者的一站式 NPC 任务看板。聚合 10 个组织的仓库、Issue、积分数据,提供实时可视化的任务进度、积分消耗和仓库健康度监控。
核心价值
- 全局可视:一个页面看全 10 个组织的 NPC 任务状态
- 效率提升:免去逐个仓库翻 Issue 的重复操作
- 成本可控:积分余额实时监控,耗尽预警
- 质量保障:仓库健康度一览,异常即时发现
二、用户画像与使用场景
目标用户
- 技术管理者:管理多个 CNB 组织,使用 NPC 完成开发任务
典型场景
- 晨会巡检:打开仪表盘,5秒掌握所有组织任务状态
- 任务追踪:在看板页筛选特定 NPC 的任务进度
- 积分告警:积分余额低于阈值时收到预警
- 仓库健康巡检:快速发现长期无提交或积压 PR 的仓库
三、信息架构
kanban-view/
├── / → 仪表盘(Dashboard)
├── /tasks → 任务看板(Task Board)
├── /credits → 积分监控(Credits Monitor)
├── /repos → 仓库健康度(Repo Health)
├── /admin → 管理后台入口
│ ├── /admin/dashboard → 管理概览
│ ├── /admin/dispatch → 任务派发
│ └── /admin/credits → 积分管理四、核心页面清单
用户端(client/)— 4 页,免登录
| # | 页面 | 路由 | 功能描述 |
|---|---|---|---|
| 1 | 仪表盘 | / | 10 组织概览卡片,仓库数/活跃Issue/积分趋势 |
| 2 | 任务看板 | /tasks | 按组织/仓库/状态筛选 NPC Issue,看板+列表切换 |
| 3 | 积分监控 | /credits | 各组织 Credits 余额、消耗速度、趋势图 |
| 4 | 仓库健康度 | /repos | 仓库列表,最近提交、PR 状态、Issue 数 |
管理后台(admin/)— 3 页
| # | 页面 | 路由 | 功能描述 |
|---|---|---|---|
| 1 | 管理概览 | /admin/dashboard | 任务完成率、NPC响应时间、积分ROI |
| 2 | 任务派发 | /admin/dispatch | 选仓库→写需求→开Issue+派NPC |
| 3 | 积分管理 | /admin/credits | 查看/调配积分,设置告警阈值 |
五、关键交互流程
仪表盘
- 页面加载 → 并行请求 10 组织数据(TanStack Query)
- 每组织一张卡片:名称、仓库数、活跃Issue数、积分余额
- 底部:积分消耗趋势折线图(Recharts)
任务看板
- 左侧筛选器:组织选择、NPC 选择、状态选择
- 主区域:看板视图(待接单 | 进行中 | 已完成)
- 点击 Issue 卡片 → 弹窗显示详情(标题、描述、评论数、创建时间)
- 支持切换为列表视图
积分监控
- 表格:组织名、当前余额、日均消耗、预计耗尽日期
- 趋势图:近 7/30 天积分变化曲线
- 低于阈值的行标红高亮
仓库健康度
- 表格:仓库名、组织、最近提交时间、Open PR数、Open Issue数
- 排序:按最后提交时间(升序)找出僵尸仓库
- 颜色标注:>7天无提交=黄色,>30天=红色
六、数据模型与 API 设计
数据实体
typescript
interface Organization {
slug: string; // cnbdocs, cnbmm, ...
name: string; // 显示名
avatar_url: string;
repo_count: number;
credits_balance: number;
}
interface Repository {
full_name: string; // cnbmm/linghang
org_slug: string;
name: string;
description: string;
visibility: string; // public/private
updated_at: string;
open_issues_count: number;
open_pulls_count: number;
}
interface Issue {
number: number;
title: string;
state: 'open' | 'closed';
body: string;
author: { username: string; is_npc: boolean };
assignees: Array<{ username: string; is_npc: boolean }>;
comment_count: number;
created_at: string;
updated_at: string;
repository: { full_name: string };
}
interface CreditSnapshot {
org_slug: string;
balance: number;
recorded_at: string; // ISO datetime
}后端 API 路由(CloudBase 云函数)
GET /api/orgs → 组织列表(含积分)
GET /api/orgs/:slug/repos → 某组织的仓库列表
GET /api/orgs/:slug/credits → 某组织积分历史
GET /api/issues → 跨组织 Issue 搜索
?org=cnbmm&state=open&npc=true
GET /api/repos/:full_name/issues → 单仓库 Issue 列表
GET /api/repos/:full_name/pulls → 单仓库 PR 列表
GET /api/credits/snapshot → 全组织积分快照
POST /api/issues/create → 创建 Issue + 派 NPC(管理后台)CNB OpenAPI 数据源映射
| 本地 API | CNB API |
|---|---|
GET /api/orgs | GET /user/orgs + 逐组织 GET /{org} |
GET /api/orgs/:slug/repos | GET /{org}/-/repos |
GET /api/issues | 逐组织 GET /{org}/-/issues 聚合 |
GET /api/repos/:name/pulls | GET /{repo}/-/pulls |
七、技术方案
前端(client/)
- React 18 + TypeScript + Vite
- Ant Design 5(组件库)
- Zustand(状态管理)
- TanStack Query(数据获取 + 缓存 + 自动刷新,5min staleTime)
- Recharts(图表)
- React Router v6(路由)
管理后台(admin/)
- 同前端技术栈
- @ant-design/pro-components(ProTable, ProForm)
- base: '/admin/'
后端(server/)
- CloudBase 云函数 Node.js 18
- @cloudbase/node-sdk
- 内存缓存(Map + TTL,5min 过期)
- 定时触发器:每小时记录积分快照
部署
- 前端 + 管理后台:EdgeOne Pages
- 后端:CloudBase 云函数
- 域名:taskboard.yunjinhong.cn
- HTTPS:EdgeOne 自动签发
八、优先级排序
| 优先级 | 功能 | 说明 |
|---|---|---|
| P0 | 仪表盘 | 核心入口,最先看到 |
| P0 | 任务看板 | 核心功能 |
| P0 | 后端 API 代理 | 所有数据的基础 |
| P1 | 积分监控 | 成本控制 |
| P1 | 仓库健康度 | 质量保障 |
| P2 | 管理后台 - 任务派发 | 主动操作 |
| P2 | 管理后台 - 积分管理 | 配置管理 |
| P2 | 管理后台 - 数据看板 | 数据分析 |
| P3 | 积分快照定时任务 | 趋势图数据 |
| P3 | 移动端适配 | 响应式布局 |
九、限制与约束
- 免登录:用户端不要求认证,展示公开数据
- 数据来源单一:全部来自 CNB OpenAPI,无自建数据库
- API 频率限制:需缓存层避免触发 CNB API 限流
- 积分数据:CNB API 可能不直接暴露积分余额,需确认接口可用性
- 跨域:前端直调 CNB API 会遇到 CORS,必须通过后端代理
十、管理后台需求
任务派发页
- 选择目标仓库(下拉,支持搜索)
- 编写需求(Markdown 编辑器)
- 选择 NPC(@codebuddy / @npc/ui-ux-pro-max / @tencent/cloud/cloudbase/community)
- 是否开启 work_mode(切换开关)
- 一键提交 → 调用 CNB API 创建 Issue
积分管理页
- 表格展示各组织当前积分余额
- 设置告警阈值(默认 50 Credits)
- 低于阈值的组织标红
- 手动刷新积分数据
数据看板页
- 任务完成率(近 7/30 天)
- NPC 响应时间统计(平均、P95)
- 积分消耗排行
- 仓库活跃度排行