Files
template/scripts/create-milestone-issues.sh
Claude AIandClaude 98b2d8a53c feat: Add MVP-Sprint-01 milestone documentation and automation scripts
- Create comprehensive milestone documentation with sprint goals and timeline
- Add 10 detailed GitHub Issues covering infrastructure, backend, frontend, and DevOps
- Create automation scripts for milestone and issue creation
- Include risk management, acceptance criteria, and project structure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-10-11 23:24:40 +08:00

247 lines
7.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# MVP-Sprint-01 GitHub Issues 创建脚本
# 请确保已经安装并登录 GitHub CLI: gh auth login
echo "🚀 开始创建 MVP-Sprint-01 里程碑和相关 Issues..."
# 1. 创建里程碑
echo "📅 创建里程碑 MVP-Sprint-01..."
gh milestone create "MVP-Sprint-01" \
--title "MVP-Sprint-01" \
--description "完成需求→匹配→合同业务闭环,实现最小可交付版本(2周冲刺)" \
--due-date "2025-10-28"
# 获取里程碑 ID
MILESTONE_ID=$(gh milestone list --limit 1 --json id,title --jq '.[] | select(.title=="MVP-Sprint-01") | .id')
echo "✅ 里程碑创建成功,ID: $MILESTONE_ID"
# 2. 创建 Issues
declare -a ISSUES=(
"🧱|Monorepo 基础架构初始化|area:infra prio:P0|建立项目主仓库骨架与目录规范,为后续模块提供统一结构。
|/
|## 子任务
- [ ] 初始化 monorepo 目录(platform、web、ops、ci、docs)
- [ ] 添加 .editorconfig、.gitattributes、.gitignore
- [ ] 初始化 pnpm workspace + maven multi-module
- [ ] 添加 CODEOWNERS、CONTRIBUTING.md、README.md
- [ ] 提交 ADR-001~005(架构、事件、租户、幂等、日志)
## 验收标准
- [ ] make up 一键启动本地开发环境成功
- [ ] CI lint + build + unit test 均通过
- [ ] README 描述仓库结构与启动命令清晰
## 模块路径
\`\`\`
/
├── platform/
│ ├── libs/
│ ├── services/
│ └── gateway/
├── web/
│ ├── admin/
│ └── bigscreen/
├── ops/
├── ci/
└── docs/
\`\`\`
|平台组|16h"
"🧩|DM8 数据访问层与 Flyway 初始化|area:backend risk:dm8|完成达梦数据库方言、分页、序列与 Flyway 基线。
|platform/libs/dm8-dal
|## 子任务
- [ ] 定制 MyBatis-Plus 达梦方言与分页插件
- [ ] V1__baseline.sql(所有表)
- [ ] V1_1__index.sql(索引优化)
- [ ] 配置 Flyway 自动迁移与版本校验
- [ ] 添加审计字段与触发器(create/update/delete)
## 验收标准
- [ ] Flyway 能自动初始化 DM8 容器并迁移成功
- [ ] 插入/分页/更新功能正常
- [ ] 审计字段自动填充,DDL 符合规范
## 依赖
- [ ] DM8 数据库实例就绪
|后端组|20h"
"🧵|RabbitMQ 事件基础库 (AsyncAPI 对齐)|area:backend prio:P0|实现统一事件发布/订阅机制,与 asyncapi.yaml 保持一致。
|platform/libs/event-starter
|## 子任务
- [ ] 实现 EventHeaders(ULID、tenantId、correlationId)
- [ ] 实现 Publisher + Subscriber 封装类
- [ ] 定义交换机命名规范(<domain>.events)
- [ ] 建立重试机制与 DLX(死信)队列策略
- [ ] 创建示例:DemandCreated 发布与消费
## 验收标准
- [ ] DemandCreated 事件从发布到消费成功
- [ ] 异常消息进入 DLX 队列
- [ ] AsyncAPI 校验无错误
## 关联文件
- [AsyncAPI 规范](../../docs/asyncapi.yaml)
|后端组|18h"
"🔐|网关 + Keycloak 多租户透传|area:infra risk:security|实现 OIDC 鉴权、角色/租户透传与统一路由授权。
|platform/gateway
|## 子任务
- [ ] 集成 Keycloak (OIDC)
- [ ] JWT 校验与租户 tenantId header 注入
- [ ] 路由权限匹配 Roles
- [ ] 返回标准化错误体 (401/403/500)
## 验收标准
- [ ] 未登录 401、跨租户访问 403
- [ ] Token 中 tenantId 在网关透传正确
- [ ] OpenAPI UI 可访问所有授权 API
## 依赖
- [ ] Keycloak 服务器配置完成
|安全组|24h"
"⚙️|需求/成果/合同核心服务(OpenAPI-first)|area:backend prio:P0|基于 OpenAPI 生成控制器与 DTO,实现核心 CRUD 闭环。
|platform/services/{demand,achievement,contract}-service
|## 子任务
- [ ] 根据 openapi.yaml 自动生成接口
- [ ] POST /demands 幂等键实现
- [ ] PUT /demands/{id} 乐观锁(If-Match)
- [ ] POST /contracts、POST /contracts/{id}/sign
- [ ] 添加 Pact Provider/Consumer 测试
## 验收标准
- [ ] CRUD 流程通过集成测试
- [ ] Pact 测试全部通过
- [ ] k6 冒烟(P95 < 3s)成功
## 关联文件
- [OpenAPI 规范](../../docs/openapi.yaml)
|后端组|32h"
"🧠|AI 匹配服务(FastAPI)|area:ai|基于规则 + 向量相似度的智能匹配服务。
|platform/ai/
|## 子任务
- [ ] 实现 POST /match 端点
- [ ] 构建余弦相似度计算
- [ ] 输出解释项(feature importance)
- [ ] 结果写回数据库并发 MatchingCompleted
## 验收标准
- [ ] 匹配请求响应正确
- [ ] AI 日志可观测
- [ ] Admin 前端能查看匹配结果和解释
|AI组|24h"
"🗂️|文件与签署服务(MinIO + PDF 预览)|area:backend prio:P1|提供断点续传与文件预览能力。
|platform/services/file-service
|## 子任务
- [ ] 集成 MinIO SDK
- [ ] 支持 tus 协议断点续传
- [ ] 文件元数据表 (AttachmentInfo)
- [ ] PDF.js 在线预览接口
## 验收标准
- [ ] 大文件(>100MB)上传成功
- [ ] 可续传、秒传、删除权限校验
- [ ] 签署 PDF 可预览访问
## 依赖
- [ ] MinIO 对象存储服务部署
|后端组|16h"
"🧭|Admin 前端(Vben)— 核心业务模块|area:frontend prio:P0|实现管理端需求/匹配/合同功能页面。
|web/admin
|## 子任务
- [ ] 集成 Keycloak 登录
- [ ] Axios 拦截器(traceId、tenantId、Idempotency-Key)
- [ ] 需求列表/详情/新建/编辑
- [ ] 匹配触发与结果表格(score/reasons)
- [ ] 合同新建/签署查看
## 验收标准
- [ ] 登录后菜单动态加载
- [ ] 全链路 CRUD→匹配→签署 流程跑通
- [ ] E2E 测试(Playwright)通过
|前端组|28h"
"📊|大屏(DataV + ECharts)|area:bigscreen prio:P1|展示科技成果转化运营指标。
|web/bigscreen
|## 子任务
- [ ] KPI 卡片:成果数、需求数、合同额、转化率
- [ ] 趋势折线 + 地域热力图
- [ ] 假数据 API /admin/metrics
## 验收标准
- [ ] 1080p/4K 自适应,帧率 > 60fps
- [ ] 指标卡片动态更新、颜色一致
- [ ] 与后端指标接口对接正确
|前端组|12h"
"🔍|可观测性 + CI/CD 流水线|area:infra prio:P0|建立完整的监控告警与自动部署流程。
|ops/ + ci/
|## 子任务
- [ ] 集成 OpenTelemetry (Java/Python Agent)
- [ ] Prometheus + Grafana + Loki + Jaeger
- [ ] GitHub Actions:构建 → 测试 → ZAP → k6 → 构建镜像 → ArgoCD
- [ ] Grafana 仪表板模板 + PrometheusRule 告警
## 验收标准
- [ ] 任意请求可在 Grafana 中追踪 trace/log
- [ ] 告警策略触发正确
- [ ] CI/CD 全链路成功
## 依赖
- [ ] 开发环境 Kubernetes 集群可用
|DevOps|20h"
)
# 创建 Issues
echo "📝 创建 10 个 Issues..."
ISSUE_NUMBERS=()
for i in "${!ISSUES[@]}"; do
IFS='|' read -r EMOJI TITLE LABELS DESCRIPTION MODULEPath OWNER EFFORT <<< "${ISSUES[$i]}"
ISSUE_BODY="**模块路径**: \`$MODULEPath\`
**负责组**: $OWNER
**预估工时**: $EFFORT
$DESCRIPTION"
echo "创建 Issue $((i+1))/10: $TITLE"
ISSUE_URL=$(gh issue create \
--title "$EMOJI $TITLE" \
--label "$LABELS" \
--body "$ISSUE_BODY" \
--milestone "MVP-Sprint-01" \
--assignee @me)
# 提取 Issue 号
ISSUE_NUMBER=$(echo "$ISSUE_URL" | grep -oE '[0-9]+$')
ISSUE_NUMBERS+=("$ISSUE_NUMBER")
echo "✅ Issue #$ISSUE_NUMBER 创建成功"
done
echo ""
echo "🎉 MVP-Sprint-01 里程碑和 Issues 创建完成!"
echo ""
echo "📊 创建摘要:"
echo "- 里程碑: MVP-Sprint-01 (截止日期: 2025-10-28)"
echo "- Issues 数量: ${#ISSUE_NUMBERS[@]}"
echo "- 总工时: 210小时 (约 1.3 人月)"
echo ""
echo "📋 Issue 列表:"
for i in "${!ISSUE_NUMBERS[@]}"; do
echo " #${ISSUE_NUMBERS[$i]} $(IFS='|' read -r EMOJI TITLE _ _ _ _ _ <<< "${ISSUES[$i]}"; echo "$EMOJI $TITLE")"
done
echo ""
echo "📂 相关文档:"
echo "- 里程碑文档: [docs/milestones/MVP-Sprint-01.md](docs/milestones/MVP-Sprint-01.md)"
echo "- OpenAPI 规范: [docs/openapi.yaml](docs/openapi.yaml)"
echo "- AsyncAPI 规范: [docs/asyncapi.yaml](docs/asyncapi.yaml)"