feat: sync lijiaoqiao implementation and staging validation artifacts
This commit is contained in:
95
scripts/auto_review/README.md
Normal file
95
scripts/auto_review/README.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# 自动化Review系统使用指南
|
||||
|
||||
## 一、系统概述
|
||||
|
||||
本系统为立交桥项目提供自动化的周期性review功能,每3小时执行一次检查,每天生成一份完整报告。
|
||||
|
||||
## 二、系统架构
|
||||
|
||||
```
|
||||
scripts/auto_review/
|
||||
├── auto_review.sh # 主脚本
|
||||
├── auto_review_config.sh # 配置文件
|
||||
├── review.sh # 快速入口
|
||||
├── crontab_config # Cron配置
|
||||
└── task_queue.json # 任务队列
|
||||
|
||||
review/
|
||||
├── daily_reports/ # 每日报告目录
|
||||
├── knowledge_base/ # 经验知识库
|
||||
└── task_queue.json # 任务队列
|
||||
```
|
||||
|
||||
## 三、使用方法
|
||||
|
||||
### 3.1 手动执行
|
||||
|
||||
```bash
|
||||
# 执行3小时review
|
||||
./scripts/auto_review/review.sh hourly
|
||||
|
||||
# 执行每日全面review
|
||||
./scripts/auto_review/review.sh daily
|
||||
|
||||
# 强制执行完整review
|
||||
./scripts/auto_review/review.sh force
|
||||
```
|
||||
|
||||
### 3.2 定时任务配置
|
||||
|
||||
添加到crontab:
|
||||
|
||||
```bash
|
||||
# 编辑crontab
|
||||
crontab -e
|
||||
|
||||
# 添加以下行:
|
||||
# 每3小时执行一次
|
||||
0 */3 * * * /home/long/project/立交桥/scripts/auto_review/review.sh hourly >> /home/long/project/立交桥/logs/auto_review/cron.log 2>&1
|
||||
|
||||
# 每天凌晨3点执行全面review
|
||||
0 3 * * * /home/long/project/立交桥/scripts/auto_review/review.sh daily >> /home/long/project/立交桥/logs/auto_review/cron_daily.log 2>&1
|
||||
```
|
||||
|
||||
## 四、生成的报告
|
||||
|
||||
### 4.1 每日报告
|
||||
- 位置:`review/daily_reports/daily_review_YYYY-MM-DD.md`
|
||||
- 内容:变更文件、待办任务、新发现问题、专家状态
|
||||
|
||||
### 4.2 Claude Code任务
|
||||
- 位置:`review/claude_tasks_YYYY-MM-DD.md`
|
||||
- 触发条件:发现问题或文档变更
|
||||
|
||||
### 4.3 经验知识库
|
||||
- 位置:`review/knowledge_base/rules_and_experience_YYYY-MM-DD.md`
|
||||
- 更新频率:每天凌晨3点
|
||||
|
||||
## 五、配置说明
|
||||
|
||||
编辑 `auto_review_config.sh` 可修改:
|
||||
|
||||
- 项目根目录
|
||||
- Review频率
|
||||
- 关键文档列表
|
||||
- 专家角色列表
|
||||
|
||||
## 六、任务分发
|
||||
|
||||
当review发现问题或文档变更时,系统会:
|
||||
|
||||
1. 生成Claude任务文件
|
||||
2. 更新任务队列
|
||||
3. 记录到日志
|
||||
|
||||
用户可以查看任务文件并交给Claude Code执行。
|
||||
|
||||
## 七、日志
|
||||
|
||||
- 日志目录:`logs/auto_review/`
|
||||
- 日志文件:`review_YYYYMMDD.log`
|
||||
|
||||
---
|
||||
|
||||
**维护者**:自动化系统
|
||||
**更新时间**:2026-03-30
|
||||
486
scripts/auto_review/auto_review.sh
Executable file
486
scripts/auto_review/auto_review.sh
Executable file
@@ -0,0 +1,486 @@
|
||||
#!/bin/bash
|
||||
#===============================================================================
|
||||
# 自动化周期性Review脚本
|
||||
# 功能:每3小时执行一次项目全面review,生成报告并分发任务
|
||||
# 使用:./auto_review.sh [hourly|daily|force]
|
||||
#===============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
REVIEW_DIR="$PROJECT_ROOT/review"
|
||||
REPORT_DIR="$REVIEW_DIR/daily_reports"
|
||||
KNOWLEDGE_DIR="$REVIEW_DIR/knowledge_base"
|
||||
TASK_QUEUE="$REVIEW_DIR/task_queue.json"
|
||||
LOG_DIR="$PROJECT_ROOT/logs/auto_review"
|
||||
|
||||
# 加载配置
|
||||
source "$SCRIPT_DIR/auto_review_config.sh"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 日志函数
|
||||
#-------------------------------------------------------------------------------
|
||||
log() {
|
||||
local level=$1
|
||||
shift
|
||||
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*"
|
||||
echo "$msg"
|
||||
echo "$msg" >> "$LOG_DIR/review_$(date '+%Y%m%d').log"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 初始化
|
||||
#-------------------------------------------------------------------------------
|
||||
init() {
|
||||
mkdir -p "$LOG_DIR" "$REPORT_DIR" "$KNOWLEDGE_DIR"
|
||||
|
||||
# 初始化任务队列
|
||||
if [ ! -f "$TASK_QUEUE" ]; then
|
||||
echo '{"tasks":[], "last_updated":"", "last_review_date":""}' > "$TASK_QUEUE"
|
||||
fi
|
||||
|
||||
log "INFO" "Auto review system initialized"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 获取文档变更状态
|
||||
#-------------------------------------------------------------------------------
|
||||
get_doc_changes() {
|
||||
local since="${1:-24h}"
|
||||
git -C "$PROJECT_ROOT" diff --name-only --since="$since" -- "docs/" "review/" 2>/dev/null || echo ""
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 读取上一份报告
|
||||
#-------------------------------------------------------------------------------
|
||||
read_last_report() {
|
||||
local last_report=$(ls -t "$REPORT_DIR"/daily_review_*.md 2>/dev/null | head -1)
|
||||
if [ -n "$last_report" ]; then
|
||||
echo "$last_report"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 提取未完成任务
|
||||
#-------------------------------------------------------------------------------
|
||||
extract_pending_tasks() {
|
||||
local report_file="$1"
|
||||
if [ -z "$report_file" ] || [ ! -f "$report_file" ]; then
|
||||
echo "[]"
|
||||
return
|
||||
fi
|
||||
|
||||
# 提取P0/P1任务
|
||||
grep -E "^\s*\|.*P[01].*\|" "$report_file" 2>/dev/null | \
|
||||
grep -v "完成\|已关闭\|CLOSED" | \
|
||||
sed -E 's/\|/,/g' | \
|
||||
awk -F',' '{print "{\"id\":\""$1"\",\"desc\":\""$3"\",\"owner\":\""$4"\"}"}' | \
|
||||
jq -s '.' 2>/dev/null || echo "[]"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 执行Review检查
|
||||
#-------------------------------------------------------------------------------
|
||||
perform_review() {
|
||||
local review_type="$1"
|
||||
log "INFO" "Starting $review_type review..."
|
||||
|
||||
# 收集变更文件
|
||||
local changes=""
|
||||
local change_count=0
|
||||
changes=$(get_doc_changes "3 hours ago" 2>/dev/null || echo "")
|
||||
change_count=$(echo "$changes" | grep -c "." 2>/dev/null || echo "0")
|
||||
|
||||
# 检查是否有新的设计文档
|
||||
local new_docs=0
|
||||
new_docs=$(git -C "$PROJECT_ROOT" status --porcelain "docs/" 2>/dev/null | grep "^??" | wc -l 2>/dev/null || echo "0")
|
||||
new_docs=${new_docs:-0}
|
||||
|
||||
# 检查未完成任务
|
||||
local last_report=$(read_last_report)
|
||||
local pending_tasks="[]"
|
||||
local pending_count=0
|
||||
if [ -n "$last_report" ] && [ -f "$last_report" ]; then
|
||||
pending_tasks=$(extract_pending_tasks "$last_report" 2>/dev/null || echo "[]")
|
||||
pending_count=$(echo "$pending_tasks" | jq 'length' 2>/dev/null || echo "0")
|
||||
fi
|
||||
pending_count=${pending_count:-0}
|
||||
|
||||
# 执行快速检查(模拟专家review)
|
||||
local issues_found=0
|
||||
|
||||
# 检查关键文档是否存在
|
||||
local critical_doc
|
||||
for critical_doc in "$REVIEW_DIR/comprehensive_expert_review_report_v2_2026-03-18.md" "$PROJECT_ROOT/docs/architecture_solution_v1_2026-03-18.md"; do
|
||||
if [ ! -f "$critical_doc" ]; then
|
||||
log "WARN" "Critical document missing: $critical_doc"
|
||||
issues_found=$((issues_found + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
# 构建JSON(确保所有值都是有效的)
|
||||
local change_files_json="[]"
|
||||
if [ -n "$changes" ]; then
|
||||
change_files_json=$(echo "$changes" | jq -R -s 'split("\n") | map(select(length > 0))' 2>/dev/null || echo "[]")
|
||||
fi
|
||||
|
||||
# 确定是否需要处理
|
||||
local action_required="false"
|
||||
if [ "$issues_found" -gt 0 ] || [ "$change_count" -gt 0 ]; then
|
||||
action_required="true"
|
||||
fi
|
||||
|
||||
# 返回Review结果
|
||||
cat << EOF
|
||||
{
|
||||
"review_type": "$review_type",
|
||||
"timestamp": "$(date -Iseconds)",
|
||||
"changes_count": $change_count,
|
||||
"new_docs_count": $new_docs,
|
||||
"pending_tasks_count": $pending_count,
|
||||
"issues_found": $issues_found,
|
||||
"change_files": $change_files_json,
|
||||
"action_required": $action_required
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 生成每日报告
|
||||
#-------------------------------------------------------------------------------
|
||||
generate_daily_report() {
|
||||
local review_data="$1"
|
||||
local date_str=$(date '+%Y-%m-%d')
|
||||
|
||||
log "INFO" "Generating daily review report for $date_str..."
|
||||
|
||||
local report_file="$REPORT_DIR/daily_review_${date_str}.md"
|
||||
local last_report=$(read_last_report)
|
||||
|
||||
# 提取review数据
|
||||
local changes_count new_docs_count pending_tasks_count issues_found
|
||||
changes_count=$(echo "$review_data" | jq -r '.changes_count // 0' 2>/dev/null || echo "0")
|
||||
new_docs_count=$(echo "$review_data" | jq -r '.new_docs_count // 0' 2>/dev/null || echo "0")
|
||||
pending_tasks_count=$(echo "$review_data" | jq -r '.pending_tasks_count // 0' 2>/dev/null || echo "0")
|
||||
issues_found=$(echo "$review_data" | jq -r '.issues_found // 0' 2>/dev/null || echo "0")
|
||||
|
||||
# 提取变更文件列表
|
||||
local change_list
|
||||
change_list=$(echo "$review_data" | jq -r '.change_files[] // empty' 2>/dev/null | sed 's/^/- /' || echo "无变更")
|
||||
|
||||
# 生成报告头部
|
||||
cat > "$report_file" << EOF
|
||||
# 立交桥项目每日Review报告
|
||||
|
||||
> 生成时间:$(date '+%Y-%m-%d %H:%M:%S')
|
||||
> 报告日期:$date_str
|
||||
> Review类型:每日全面检查
|
||||
|
||||
---
|
||||
|
||||
## 一、Review执行摘要
|
||||
|
||||
| 指标 | 数值 | 较昨日 |
|
||||
|------|------|--------|
|
||||
| 文档变更数 | $changes_count | - |
|
||||
| 新增文档数 | $new_docs_count | - |
|
||||
| 待完成任务 | $pending_tasks_count | - |
|
||||
| 发现问题 | $issues_found | - |
|
||||
|
||||
---
|
||||
|
||||
## 二、变更文件清单
|
||||
|
||||
$change_list
|
||||
|
||||
---
|
||||
|
||||
## 三、待完成任务追踪
|
||||
|
||||
### 3.1 P0问题(阻断上线)
|
||||
|
||||
EOF
|
||||
|
||||
# 添加P0任务列表
|
||||
if [ -n "$last_report" ]; then
|
||||
grep -A 50 "### 3.1 P0问题" "$last_report" 2>/dev/null | head -30 >> "$report_file" || echo "| - | - | - | - |" >> "$report_file"
|
||||
else
|
||||
echo "| 编号 | 问题描述 | Owner | 状态 |" >> "$report_file"
|
||||
echo "|-----|----------|-------|------|" >> "$report_file"
|
||||
echo "| - | 暂无 | - | - |" >> "$report_file"
|
||||
fi
|
||||
|
||||
cat >> "$report_file" << EOF
|
||||
|
||||
### 3.2 P1问题(高优先级)
|
||||
|
||||
EOF
|
||||
|
||||
if [ -n "$last_report" ]; then
|
||||
grep -A 30 "### 3.2 P1问题" "$last_report" 2>/dev/null | head -20 >> "$report_file" || echo "| - | - | - |" >> "$report_file"
|
||||
else
|
||||
echo "| 编号 | 问题描述 | Owner |" >> "$report_file"
|
||||
echo "|-----|----------|-------|" >> "$report_file"
|
||||
fi
|
||||
|
||||
# 确定行动项文本
|
||||
local action_text="无"
|
||||
local new_issue_text="| - | - | 无新问题 | - |"
|
||||
if [ "$issues_found" -gt 0 ]; then
|
||||
action_text="存在 $issues_found 个问题需处理"
|
||||
new_issue_text="| NEW-001 | P1 | 新发现的问题(待详细记录) | $(date '+%Y-%m-%d %H:%M') |"
|
||||
fi
|
||||
|
||||
cat >> "$report_file" << EOF
|
||||
|
||||
---
|
||||
|
||||
## 四、新发现问题
|
||||
|
||||
| 编号 | 等级 | 问题描述 | 发现时间 |
|
||||
|------|------|----------|----------|
|
||||
$new_issue_text
|
||||
|
||||
---
|
||||
|
||||
## 五、建议行动项
|
||||
|
||||
1. **立即处理**:$action_text
|
||||
2. **持续跟进**:$pending_tasks_count 个待办任务
|
||||
3. **文档更新**:$new_docs_count 个新文档待审核
|
||||
|
||||
---
|
||||
|
||||
## 六、专家评审状态
|
||||
|
||||
| 轮次 | 主题 | 结论 | 日期 |
|
||||
|------|------|------|------|
|
||||
| Round-1 | 架构与替换路径 | CONDITIONAL GO | 2026-03-19 |
|
||||
| Round-2 | 兼容与计费一致性 | CONDITIONAL GO | 2026-03-22 |
|
||||
| Round-3 | 安全与合规攻防 | CONDITIONAL GO | 2026-03-25 |
|
||||
| Round-4 | 可靠性与回滚演练 | CONDITIONAL GO | 2026-03-29 |
|
||||
|
||||
---
|
||||
|
||||
**报告状态**:自动生成
|
||||
**下次更新**:$(date -d '+3 hours' '+%Y-%m-%d %H:%M')
|
||||
|
||||
EOF
|
||||
|
||||
log "INFO" "Daily report generated: $report_file"
|
||||
echo "$report_file"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 更新任务队列
|
||||
#-------------------------------------------------------------------------------
|
||||
update_task_queue() {
|
||||
local review_data="$1"
|
||||
local date_str=$(date '+%Y-%m-%d')
|
||||
|
||||
# 提取数据
|
||||
local changes_count issues_found action_required
|
||||
changes_count=$(echo "$review_data" | jq -r '.changes_count // 0' 2>/dev/null || echo "0")
|
||||
issues_found=$(echo "$review_data" | jq -r '.issues_found // 0' 2>/dev/null || echo "0")
|
||||
action_required=$(echo "$review_data" | jq -r '.action_required // "false"' 2>/dev/null || echo "false")
|
||||
|
||||
# 读取当前队列
|
||||
local current_queue=$(cat "$TASK_QUEUE" 2>/dev/null || echo '{"tasks":[]}')
|
||||
|
||||
# 更新JSON
|
||||
local updated
|
||||
updated=$(echo "$current_queue" | jq --arg timestamp "$(date -Iseconds)" \
|
||||
--arg date "$date_str" \
|
||||
--argjson changes "$changes_count" \
|
||||
--argjson issues "$issues_found" \
|
||||
'.last_updated = $timestamp | .last_review_date = $date | .review_stats.total_reviews += 1 | .review_stats.issues_found += $issues')
|
||||
|
||||
echo "$updated" > "$TASK_QUEUE"
|
||||
|
||||
# 如果有问题需要处理,生成任务文件
|
||||
if [ "$issues_found" -gt 0 ]; then
|
||||
local task_file="$REVIEW_DIR/pending_tasks_$(date '+%Y%m%d_%H%M%S').json"
|
||||
echo "$review_data" > "$task_file"
|
||||
log "WARN" "Issues found! Task file created: $task_file"
|
||||
fi
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 生成Claude Code任务
|
||||
#-------------------------------------------------------------------------------
|
||||
generate_claude_tasks() {
|
||||
local review_data="$1"
|
||||
local date_str=$(date '+%Y-%m-%d')
|
||||
|
||||
# 提取数据
|
||||
local needs_action issues_found changes_count pending_tasks_count
|
||||
needs_action=$(echo "$review_data" | jq -r '.action_required // "false"' 2>/dev/null || echo "false")
|
||||
issues_found=$(echo "$review_data" | jq -r '.issues_found // 0' 2>/dev/null || echo "0")
|
||||
changes_count=$(echo "$review_data" | jq -r '.changes_count // 0' 2>/dev/null || echo "0")
|
||||
pending_tasks_count=$(echo "$review_data" | jq -r '.pending_tasks_count // 0' 2>/dev/null || echo "0")
|
||||
|
||||
# 提取变更文件列表
|
||||
local change_list
|
||||
change_list=$(echo "$review_data" | jq -r '.change_files[] // empty' 2>/dev/null | sed 's/^/1. 审核文档:/' || echo "1. 检查并处理review发现的问题")
|
||||
|
||||
if [ "$needs_action" = "true" ]; then
|
||||
local task_file="$REVIEW_DIR/claude_tasks_${date_str}.md"
|
||||
|
||||
cat > "$task_file" << EOF
|
||||
# Claude Code 执行任务
|
||||
|
||||
> 生成时间:$(date '+%Y-%m-%d %H:%M:%S')
|
||||
> 触发条件:Review发现需要处理的问题
|
||||
|
||||
## 执行要求
|
||||
|
||||
请Claude Code CLI按照以下规范执行:
|
||||
|
||||
1. **遵循superpowers插件规范**
|
||||
2. **严格按照项目规划设计执行**
|
||||
3. **优先处理P0问题**
|
||||
|
||||
## 待处理问题清单
|
||||
|
||||
- 问题数量:$issues_found
|
||||
- 文档变更:$changes_count 个文件
|
||||
- 待办任务:$pending_tasks_count 个
|
||||
|
||||
## 具体任务
|
||||
|
||||
$change_list
|
||||
|
||||
---
|
||||
|
||||
**状态**:等待执行
|
||||
**优先级**:高
|
||||
EOF
|
||||
|
||||
log "INFO" "Claude tasks generated: $task_file"
|
||||
echo "$task_file"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 更新经验知识库(每日3点执行)
|
||||
#-------------------------------------------------------------------------------
|
||||
update_knowledge_base() {
|
||||
local is_daily=$(date '+%H')
|
||||
|
||||
# 只在每天3点执行
|
||||
if [ "$is_daily" != "03" ]; then
|
||||
log "INFO" "Skipping knowledge base update (not 3am, current: ${is_daily}00)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log "INFO" "Updating knowledge base..."
|
||||
|
||||
local date_str=$(date '+%Y-%m-%d')
|
||||
local kb_file="$KNOWLEDGE_BASE/rules_and_experience_${date_str}.md"
|
||||
|
||||
# 收集当天经验
|
||||
local issues=""
|
||||
local last_report=$(read_last_report)
|
||||
if [ -n "$last_report" ]; then
|
||||
issues=$(grep -E "^\|.*P[01]" "$last_report" 2>/dev/null | wc -l)
|
||||
fi
|
||||
|
||||
cat > "$kb_file" << EOF
|
||||
# 立交桥项目经验与规则
|
||||
|
||||
> 更新时间:$(date '+%Y-%m-%d %H:%M:%S')
|
||||
> 版本:$(date '+%Y%m%d')
|
||||
|
||||
## 一、项目关键规范
|
||||
|
||||
### 1.1 架构原则
|
||||
- Provider Adapter抽象层设计
|
||||
- 三层降级策略(同平台换号/同区域换平台/全局降级)
|
||||
- 分阶段验证(S2-A/B/C1/C2)
|
||||
|
||||
### 1.2 安全红线
|
||||
- 内网隔离 + mTLS双向认证
|
||||
- 契约漂移CI阻断
|
||||
- 密钥90天轮换
|
||||
|
||||
### 1.3 质量门禁
|
||||
- 接管率 >= 99.9% 覆盖率
|
||||
- 自动回滚 <= 10分钟
|
||||
- 服务恢复 <= 30分钟
|
||||
- 用户通知 <= 15分钟
|
||||
|
||||
## 二、待解决P0问题
|
||||
|
||||
- 数量:$issues 个(来自最新报告)
|
||||
|
||||
## 三、专家评审结论
|
||||
|
||||
| 维度 | 结论 | 评分 |
|
||||
|------|------|------|
|
||||
| 架构 | CONDITIONAL GO | 3.5/5 |
|
||||
| API设计 | CONDITIONAL GO | 4.0/5 |
|
||||
| 安全防护 | CONDITIONAL GO | 3.0/5 |
|
||||
| 业务合规 | CONDITIONAL GO | 3.5/5 |
|
||||
| 计费精度 | CONDITIONAL GO | 4.0/5 |
|
||||
| 可靠性 | CONDITIONAL GO | 3.0/5 |
|
||||
|
||||
## 四、行动优先级
|
||||
|
||||
1. **P0**:安全验证、契约测试、降级演练
|
||||
2. **P1**:用户体验、SLA文档、计费准确性
|
||||
3. **P2**:SDK开发、法务确认、DDoS防护
|
||||
|
||||
---
|
||||
|
||||
**状态**:每日自动更新
|
||||
**下次更新**:$(date -d '+1 day' -d '3:00' '+%Y-%m-%d %H:%M')
|
||||
EOF
|
||||
|
||||
log "INFO" "Knowledge base updated: $kb_file"
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 主函数
|
||||
#-------------------------------------------------------------------------------
|
||||
main() {
|
||||
local mode="${1:-hourly}"
|
||||
|
||||
init
|
||||
|
||||
case "$mode" in
|
||||
hourly)
|
||||
log "INFO" "Running hourly review..."
|
||||
local review_result=$(perform_review "hourly")
|
||||
update_task_queue "$review_result"
|
||||
generate_claude_tasks "$review_result"
|
||||
;;
|
||||
daily)
|
||||
log "INFO" "Running daily full review..."
|
||||
local review_result=$(perform_review "daily")
|
||||
local report=$(generate_daily_report "$review_result")
|
||||
update_task_queue "$review_result"
|
||||
generate_claude_tasks "$review_result"
|
||||
update_knowledge_base
|
||||
log "INFO" "Daily review completed. Report: $report"
|
||||
;;
|
||||
force)
|
||||
log "WARN" "Running forced full review..."
|
||||
local review_result=$(perform_review "force")
|
||||
local report=$(generate_daily_report "$review_result")
|
||||
update_task_queue "$review_result"
|
||||
generate_claude_tasks "$review_result"
|
||||
log "INFO" "Forced review completed. Report: $report"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [hourly|daily|force]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
42
scripts/auto_review/auto_review_config.sh
Normal file
42
scripts/auto_review/auto_review_config.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#===============================================================================
|
||||
# 自动化Review配置
|
||||
#===============================================================================
|
||||
|
||||
# 项目根目录
|
||||
export PROJECT_ROOT="/home/long/project/立交桥"
|
||||
|
||||
# Review目录
|
||||
export REVIEW_DIR="$PROJECT_ROOT/review"
|
||||
export REPORT_DIR="$REVIEW_DIR/daily_reports"
|
||||
export KNOWLEDGE_DIR="$REVIEW_DIR/knowledge_base"
|
||||
|
||||
# 任务队列
|
||||
export TASK_QUEUE="$REVIEW_DIR/task_queue.json"
|
||||
|
||||
# 日志目录
|
||||
export LOG_DIR="$PROJECT_ROOT/logs/auto_review"
|
||||
|
||||
# Review频率(小时)
|
||||
export REVIEW_INTERVAL=3
|
||||
|
||||
# 每日更新时间(小时,24小时制)
|
||||
export DAILY_UPDATE_HOUR=3
|
||||
|
||||
# 需要检查的关键文档列表
|
||||
export CRITICAL_DOCS=(
|
||||
"docs/architecture_solution_v1_2026-03-18.md"
|
||||
"docs/api_solution_v1_2026-03-18.md"
|
||||
"docs/security_solution_v1_2026-03-18.md"
|
||||
"docs/business_solution_v1_2026-03-18.md"
|
||||
"docs/llm_gateway_prd_v1_2026-03-25.md"
|
||||
"docs/supply_technical_design_enhanced_v1_2026-03-25.md"
|
||||
)
|
||||
|
||||
# 专家评审角色
|
||||
readonly EXPERT_ROLES="E01:架构负责人,E02:平台工程负责人,E03:SRE负责人,E04:安全负责人,E05:计费/数据负责人,E06:合规/法务接口人,E07:产品负责人,E13:用户代表,E14:测试负责人,E15:网关专家"
|
||||
|
||||
# Claude Code命令(用于分发任务)
|
||||
export CLAUDE_CLI_CMD="claude"
|
||||
|
||||
# 是否启用Claude Code任务分发
|
||||
export ENABLE_TASK_DISPATCH=true
|
||||
10
scripts/auto_review/crontab_config
Normal file
10
scripts/auto_review/crontab_config
Normal file
@@ -0,0 +1,10 @@
|
||||
#===============================================================================
|
||||
# 自动化Review Cron配置
|
||||
#===============================================================================
|
||||
# 使用方法:crontab -e 并添加以下行
|
||||
|
||||
# 每3小时执行一次review(0点、3点、6点、9点、12点、15点、18点、21点)
|
||||
0 */3 * * * /home/long/project/立交桥/scripts/auto_review/review.sh hourly >> /home/long/project/立交桥/logs/auto_review/cron.log 2>&1
|
||||
|
||||
# 每天凌晨3点执行全面review并更新知识库
|
||||
0 3 * * * /home/long/project/立交桥/scripts/auto_review/review.sh daily >> /home/long/project/立交桥/logs/auto_review/cron_daily.log 2>&1
|
||||
12
scripts/auto_review/review.sh
Executable file
12
scripts/auto_review/review.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
#===============================================================================
|
||||
# Review快速执行入口
|
||||
#===============================================================================
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# 加载配置
|
||||
source "$SCRIPT_DIR/auto_review_config.sh"
|
||||
|
||||
# 执行review
|
||||
"$SCRIPT_DIR/auto_review.sh" "$@"
|
||||
10
scripts/auto_review/task_queue.json
Normal file
10
scripts/auto_review/task_queue.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"tasks": [],
|
||||
"last_updated": "",
|
||||
"last_review_date": "",
|
||||
"review_stats": {
|
||||
"total_reviews": 0,
|
||||
"issues_found": 0,
|
||||
"tasks_dispatched": 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user