fujian_water_biz_doc/scripts/manage_separated_docs.sh

331 lines
9.0 KiB
Bash
Executable File

#!/bin/zsh
# 福建水务营收系统 - 分离文档管理工具
# 用于管理和查看分离导出的文档
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 显示文档状态
show_status() {
echo "📊 分离文档状态统计"
echo "===================="
echo ""
# 定义文档列表
local documents=(
"water_biz_system_architecture"
"water_biz_module_design"
"water_biz_database_design"
"water_biz_interface_design"
"water_biz_deployment_design"
"water_biz_security_design"
)
local doc_titles=(
"系统架构设计"
"模块功能设计"
"数据库设计"
"接口设计"
"部署设计"
"安全设计"
)
# 格式化输出表格
printf "%-35s %-8s %-8s %-8s %-10s\n" "文档名称" "Word" "HTML" "PDF" "文件大小"
printf "%-35s %-8s %-8s %-8s %-10s\n" "---" "---" "---" "---" "---"
local total_count=0
local total_size=0
for i in {1..6}; do
local doc="${documents[$i]}"
local title="${doc_titles[$i]}"
# 检查各种格式
local docx_status="❌"
local html_status="❌"
local pdf_status="❌"
local size_total=0
if [[ -f "output/${doc}.docx" ]]; then
docx_status="✅"
local docx_size=$(stat -f%z "output/${doc}.docx" 2>/dev/null || echo 0)
size_total=$((size_total + docx_size))
total_count=$((total_count + 1))
fi
if [[ -f "output/${doc}.html" ]]; then
html_status="✅"
local html_size=$(stat -f%z "output/${doc}.html" 2>/dev/null || echo 0)
size_total=$((size_total + html_size))
total_count=$((total_count + 1))
fi
if [[ -f "output/${doc}.pdf" ]]; then
pdf_status="✅"
local pdf_size=$(stat -f%z "output/${doc}.pdf" 2>/dev/null || echo 0)
size_total=$((size_total + pdf_size))
total_count=$((total_count + 1))
fi
# 格式化文件大小
local size_str=""
if [[ $size_total -gt 1048576 ]]; then
size_str="$(echo "scale=1; $size_total/1048576" | bc)MB"
elif [[ $size_total -gt 1024 ]]; then
size_str="$(echo "scale=1; $size_total/1024" | bc)KB"
else
size_str="${size_total}B"
fi
printf "%-35s %-8s %-8s %-8s %-10s\n" "$title" "$docx_status" "$html_status" "$pdf_status" "$size_str"
total_size=$((total_size + size_total))
done
echo ""
echo "📈 统计信息:"
echo " - 总文档数量: $total_count"
echo " - 总文件大小: $(echo "scale=1; $total_size/1048576" | bc)MB"
echo ""
}
# 清理临时文件
clean_temp() {
log_info "清理临时文件..."
# 清理处理过的markdown文件
rm -f output/*_processed.md
# 清理临时图表目录
rm -rf temp_mermaid_*
# 清理其他临时文件
rm -f output/merged_documents*.md
rm -f output/processed_documents.md
log_success "临时文件清理完成"
}
# 组织文档到分类目录
organize_docs() {
log_info "组织文档到分类目录..."
# 创建分类目录
mkdir -p output/docx
mkdir -p output/html
mkdir -p output/pdf
# 移动文档到对应目录
if ls output/*.docx 1> /dev/null 2>&1; then
mv output/*.docx output/docx/ 2>/dev/null || true
log_success "Word文档已移动到 output/docx/"
fi
if ls output/*.html 1> /dev/null 2>&1; then
mv output/*.html output/html/ 2>/dev/null || true
log_success "HTML文档已移动到 output/html/"
fi
if ls output/*.pdf 1> /dev/null 2>&1; then
mv output/*.pdf output/pdf/ 2>/dev/null || true
log_success "PDF文档已移动到 output/pdf/"
fi
echo ""
echo "📁 文档已组织到以下目录:"
echo " - output/docx/ - Word文档"
echo " - output/html/ - HTML文档"
echo " - output/pdf/ - PDF文档"
}
# 创建索引文件
create_index() {
log_info "创建文档索引..."
local index_file="output/README.md"
cat > "$index_file" << 'EOF'
# 福建水务营收系统分离文档索引
## 文档说明
本目录包含福建水务营收系统概要设计文档的分离版本,每个模块都有独立的文档文件。
## 文档列表
### 系统架构设计
- **描述**: 系统整体架构、技术选型、部署架构设计
- **文件**:
- Word: `water_biz_system_architecture.docx`
- HTML: `water_biz_system_architecture.html`
- PDF: `water_biz_system_architecture.pdf`
### 模块功能设计
- **描述**: 系统功能模块设计、业务流程、接口关系
- **文件**:
- Word: `water_biz_module_design.docx`
- HTML: `water_biz_module_design.html`
- PDF: `water_biz_module_design.pdf`
### 数据库设计
- **描述**: 数据库表结构、索引设计、DDL语句
- **文件**:
- Word: `water_biz_database_design.docx`
- HTML: `water_biz_database_design.html`
- PDF: `water_biz_database_design.pdf`
### 接口设计
- **描述**: RESTful API设计、接口参数、返回值定义
- **文件**:
- Word: `water_biz_interface_design.docx`
- HTML: `water_biz_interface_design.html`
- PDF: `water_biz_interface_design.pdf`
### 部署设计
- **描述**: 容器化部署、环境配置、运维方案
- **文件**:
- Word: `water_biz_deployment_design.docx`
- HTML: `water_biz_deployment_design.html`
- PDF: `water_biz_deployment_design.pdf`
### 安全设计
- **描述**: 等保三级安全设计、认证授权、数据安全
- **文件**:
- Word: `water_biz_security_design.docx`
- HTML: `water_biz_security_design.html`
- PDF: `water_biz_security_design.pdf`
## 使用说明
1. **Word格式**: 适合编辑和进一步修改
2. **HTML格式**: 适合在线查看和分享
3. **PDF格式**: 适合打印和正式分发
## 技术特点
- ✅ 每个文档都包含完整的Mermaid图表
- ✅ 独立的目录结构和导航
- ✅ 统一的文档样式和格式
- ✅ 支持中文字体和排版优化
## 生成时间
本文档集合生成于: $(date '+%Y-%m-%d %H:%M:%S')
EOF
log_success "文档索引已创建: $index_file"
}
# 打开文档
open_doc() {
local doc_name="$1"
local format="${2:-docx}"
local file_path="output/${doc_name}.${format}"
if [[ -f "$file_path" ]]; then
log_info "打开文档: $file_path"
open "$file_path"
else
log_error "文档不存在: $file_path"
echo ""
echo "可用的文档:"
ls output/*.${format} 2>/dev/null | sed 's/output\///g' | sed 's/\..*$//g' | sort | uniq
fi
}
# 显示使用说明
show_usage() {
echo "福建水务营收系统 - 分离文档管理工具"
echo ""
echo "用法: $0 [命令] [参数]"
echo ""
echo "命令:"
echo " status 显示文档状态统计"
echo " clean 清理临时文件"
echo " organize 组织文档到分类目录"
echo " index 创建文档索引"
echo " open <doc> [fmt] 打开指定文档"
echo ""
echo "示例:"
echo " $0 status # 显示状态"
echo " $0 clean # 清理临时文件"
echo " $0 organize # 组织文档"
echo " $0 open water_biz_system_architecture # 打开系统架构文档(Word)"
echo " $0 open water_biz_module_design html # 打开模块设计文档(HTML)"
echo ""
echo "可用文档名称:"
echo " - water_biz_system_architecture (系统架构设计)"
echo " - water_biz_module_design (模块功能设计)"
echo " - water_biz_database_design (数据库设计)"
echo " - water_biz_interface_design (接口设计)"
echo " - water_biz_deployment_design (部署设计)"
echo " - water_biz_security_design (安全设计)"
echo ""
echo "可用格式: docx, html, pdf"
}
# 主函数
main() {
local command="${1:-status}"
case "$command" in
status)
show_status
;;
clean)
clean_temp
;;
organize)
organize_docs
;;
index)
create_index
;;
open)
if [[ -z "$2" ]]; then
log_error "请指定要打开的文档名称"
echo ""
show_usage
exit 1
fi
open_doc "$2" "$3"
;;
-h|--help|help)
show_usage
;;
*)
log_error "未知命令: $command"
echo ""
show_usage
exit 1
;;
esac
}
# 执行主函数
main "$@"