init_project.sh 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. #!/bin/bash
  2. # AI驱动的企业级软件开发工作流程 - 项目初始化脚本
  3. # 版本: 1.0
  4. # 描述: 自动创建新项目的目录结构和固定文档
  5. set -e # 遇到错误时退出
  6. # 颜色定义
  7. RED='\033[0;31m'
  8. GREEN='\033[0;32m'
  9. YELLOW='\033[1;33m'
  10. BLUE='\033[0;34m'
  11. NC='\033[0m' # No Color
  12. # 打印带颜色的消息
  13. print_message() {
  14. local color=$1
  15. local message=$2
  16. echo -e "${color}${message}${NC}"
  17. }
  18. print_success() {
  19. print_message $GREEN "✓ $1"
  20. }
  21. print_info() {
  22. print_message $BLUE "ℹ $1"
  23. }
  24. print_warning() {
  25. print_message $YELLOW "⚠ $1"
  26. }
  27. print_error() {
  28. print_message $RED "✗ $1"
  29. }
  30. # 获取脚本所在目录
  31. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" # 回到项目根目录
  32. # 检查是否提供了项目名称
  33. if [ $# -eq 0 ]; then
  34. print_error "请提供项目名称作为参数"
  35. echo "用法: $0 <项目名称>"
  36. echo "示例: $0 my-ai-project"
  37. exit 1
  38. fi
  39. PROJECT_NAME=$1
  40. PROJECT_DIR="${PWD}/${PROJECT_NAME}"
  41. print_info "开始初始化项目: ${PROJECT_NAME}"
  42. print_info "项目目录: ${PROJECT_DIR}"
  43. # 检查目录是否已存在
  44. if [ -d "$PROJECT_DIR" ]; then
  45. print_warning "目录 ${PROJECT_DIR} 已存在"
  46. read -p "是否继续并覆盖现有内容? (y/N): " -n 1 -r
  47. echo
  48. if [[ ! $REPLY =~ ^[Yy]$ ]]; then
  49. print_info "操作已取消"
  50. exit 1
  51. fi
  52. rm -rf "$PROJECT_DIR"
  53. fi
  54. # 创建项目根目录
  55. mkdir -p "$PROJECT_DIR"
  56. cd "$PROJECT_DIR"
  57. print_info "创建目录结构..."
  58. # 创建主要目录结构
  59. mkdir -p specs_docs/ui_design_specs
  60. mkdir -p specs_docs/tech_stack_specs
  61. mkdir -p system_prompts
  62. mkdir -p requires_docs
  63. mkdir -p process_docs
  64. mkdir -p output_docs
  65. mkdir -p output_sourcecode/front
  66. mkdir -p output_sourcecode/backend
  67. mkdir -p output_sourcecode/db
  68. mkdir -p scripts/generators
  69. mkdir -p scripts/validators
  70. print_success "目录结构创建完成"
  71. # 检查源文件是否存在
  72. SPECS_SOURCE="${SCRIPT_DIR}/specs_docs"
  73. if [ ! -d "$SPECS_SOURCE" ]; then
  74. print_error "源文件目录不存在: ${SPECS_SOURCE}"
  75. print_info "请确保脚本在包含 specs_docs 目录的项目根目录中运行"
  76. exit 1
  77. fi
  78. print_info "复制固定文档和系统提示词..."
  79. # 复制选择的UI设计规范文档
  80. print_info "复制UI设计规范: ${UI_FILE}"
  81. cp "${SPECS_SOURCE}/ui_design_specs/${UI_FILE}" specs_docs/ui_design_specs/
  82. # 如果不是企业风格,也复制默认企业风格作为参考
  83. if [ "$UI_DESIGN_STYLE" != "corporate" ]; then
  84. cp "${SPECS_SOURCE}/ui_design_specs/01-UI设计规范_默认_Corporate.md" specs_docs/ui_design_specs/
  85. fi
  86. # 复制技术栈规范文档
  87. cp "${SPECS_SOURCE}/tech_stack_specs/技术栈说明文档_默认.md" specs_docs/tech_stack_specs/
  88. # 复制系统提示词
  89. cp -r "${SCRIPT_DIR}/system_prompts/"* system_prompts/
  90. # 复制scripts目录(生成和验证脚本)
  91. if [ -d "${SCRIPT_DIR}/scripts/generators" ]; then
  92. print_info "复制生成脚本..."
  93. cp "${SCRIPT_DIR}/scripts/generators/"* scripts/generators/
  94. fi
  95. if [ -d "${SCRIPT_DIR}/scripts/validators" ]; then
  96. print_info "复制验证脚本..."
  97. cp "${SCRIPT_DIR}/scripts/validators/"* scripts/validators/
  98. fi
  99. # 复制工作流程文档和执行计划文档
  100. if [ -f "${SCRIPT_DIR}/工作流程.md" ]; then
  101. cp "${SCRIPT_DIR}/工作流程.md" ./
  102. else
  103. print_warning "工作流程文档不存在: ${SCRIPT_DIR}/工作流程.md"
  104. fi
  105. if [ -f "${SCRIPT_DIR}/执行计划.md" ]; then
  106. cp "${SCRIPT_DIR}/执行计划.md" ./
  107. else
  108. print_warning "执行计划文档不存在: ${SCRIPT_DIR}/执行计划.md"
  109. fi
  110. print_success "固定文档复制完成"
  111. print_info "创建配置文件..."
  112. # 获取用户输入的项目配置
  113. echo
  114. print_info "请输入项目配置信息:"
  115. read -p "系统完整名称: " SYSTEM_TITLE
  116. read -p "系统简称 (可选,回车跳过): " SYSTEM_SHORT_TITLE
  117. read -p "前端技术 (默认: JavaScript): " FRONT_TECH
  118. read -p "后端技术 (默认: Java): " BACKEND_TECH
  119. # 设置默认值
  120. FRONT_TECH=${FRONT_TECH:-"JavaScript"}
  121. BACKEND_TECH=${BACKEND_TECH:-"Java"}
  122. SYSTEM_SHORT_TITLE=${SYSTEM_SHORT_TITLE:-"${SYSTEM_TITLE}"}
  123. # 询问是否使用自定义技术栈文档
  124. echo
  125. read -p "是否使用自定义技术栈文档? (y/N): " -n 1 -r
  126. echo
  127. if [[ $REPLY =~ ^[Yy]$ ]]; then
  128. TECH_STACK_PATH="requires_docs/技术栈说明文档.md"
  129. print_info "请将您的技术栈说明文档放在: ${TECH_STACK_PATH}"
  130. else
  131. TECH_STACK_PATH="specs_docs/tech_stack_specs/技术栈说明文档_默认.md"
  132. fi
  133. # 选择UI设计风格
  134. echo
  135. print_info "请选择UI设计风格:"
  136. echo " 1. corporate - 企业商务风格(默认)"
  137. echo " 2. cyberpunk - 暗黑科技风格"
  138. echo " 3. minimal - 极简主义风格"
  139. echo " 4. bauhaus - 包豪斯风格"
  140. echo " 5. japanese - 日式极简风格"
  141. echo " 6. scandinavian - 斯堪的纳维亚风格"
  142. echo " 7. futuristic - 未来科技风格"
  143. echo " 8. elegant - 优雅复古风格"
  144. echo " 9. bold - 大胆现代风格"
  145. echo "10. artdeco - 艺术装饰风格"
  146. echo "11. memphis - 孟菲斯风格"
  147. echo "12. popart - 波普艺术风格"
  148. echo
  149. while true; do
  150. read -p "请输入选择 (1-12,默认为1): " UI_CHOICE
  151. UI_CHOICE=${UI_CHOICE:-"1"}
  152. case $UI_CHOICE in
  153. 1) UI_DESIGN_STYLE="corporate"; UI_FILE="01-UI设计规范_默认_Corporate.md"; break;;
  154. 2) UI_DESIGN_STYLE="cyberpunk"; UI_FILE="02-UI设计规范_暗黑科技风格_Cyberpunk.md"; break;;
  155. 3) UI_DESIGN_STYLE="minimal"; UI_FILE="03-UI设计规范_极简主义风格_Minimal.md"; break;;
  156. 4) UI_DESIGN_STYLE="bauhaus"; UI_FILE="04-UI设计规范_包豪斯风格_Bauhaus.md"; break;;
  157. 5) UI_DESIGN_STYLE="japanese"; UI_FILE="05-UI设计规范_日式极简风格_Japanese.md"; break;;
  158. 6) UI_DESIGN_STYLE="scandinavian"; UI_FILE="06-UI设计规范_斯堪的纳维亚风格_Scandinavian.md"; break;;
  159. 7) UI_DESIGN_STYLE="futuristic"; UI_FILE="07-UI设计规范_未来科技风格_Futuristic.md"; break;;
  160. 8) UI_DESIGN_STYLE="elegant"; UI_FILE="08-UI设计规范_优雅复古风格_Elegant.md"; break;;
  161. 9) UI_DESIGN_STYLE="bold"; UI_FILE="09-UI设计规范_大胆现代风格_Bold.md"; break;;
  162. 10) UI_DESIGN_STYLE="artdeco"; UI_FILE="10-UI设计规范_艺术装饰风格_ArtDeco.md"; break;;
  163. 11) UI_DESIGN_STYLE="memphis"; UI_FILE="11-UI设计规范_孟菲斯风格_Memphis.md"; break;;
  164. 12) UI_DESIGN_STYLE="popart"; UI_FILE="12-UI设计规范_波普艺术风格_PopArt.md"; break;;
  165. *) print_warning "无效选择,请输入 1 到 12 之间的数字";;
  166. esac
  167. done
  168. print_success "已选择UI设计风格: ${UI_DESIGN_STYLE}"
  169. # 选择生成模式配置
  170. echo
  171. print_info "请选择生成模式:"
  172. echo "1. fast - 快速验证模式(5页面,8-15个API,适合快速原型和测试)"
  173. echo "2. full - 完整生产模式(10页面,15-35个API,适合正式申请和完整系统)"
  174. echo
  175. while true; do
  176. read -p "请输入选择 (1-2,默认为1): " GEN_CHOICE
  177. GEN_CHOICE=${GEN_CHOICE:-"1"}
  178. case $GEN_CHOICE in
  179. 1) GENERATION_MODE="fast"; PAGE_COUNT=5; API_MIN=8; API_MAX=15; break;;
  180. 2) GENERATION_MODE="full"; PAGE_COUNT=10; API_MIN=15; API_MAX=35; break;;
  181. *) print_warning "无效选择,请输入 1 或 2";;
  182. esac
  183. done
  184. print_success "已选择生成模式: ${GENERATION_MODE} (${PAGE_COUNT}页面,${API_MIN}-${API_MAX}个API)"
  185. # 生成 ai-copyright-config.json
  186. cat > ai-copyright-config.json << EOF
  187. {
  188. "_comment_init": "=== 项目初始化配置(用户设置) ===",
  189. "front": "${FRONT_TECH}",
  190. "backend": "${BACKEND_TECH}",
  191. "title": "${SYSTEM_TITLE}",
  192. "short_title": "${SYSTEM_SHORT_TITLE}",
  193. "system_profile": "requires_docs/需求文档.md",
  194. "dev_tech_stack": "${TECH_STACK_PATH}",
  195. "ui_design_spec": "specs_docs/ui_design_specs/${UI_FILE}",
  196. "ui_design_style": "${UI_DESIGN_STYLE}",
  197. "_comment_generation": "=== 生成配置(可调整) ===",
  198. "page_count_fast": 5,
  199. "page_count_full": 10,
  200. "api_count_min": ${API_MIN},
  201. "api_count_max": ${API_MAX},
  202. "generation_mode": "${GENERATION_MODE}",
  203. "_comment_usage": "=== 使用说明 ===",
  204. "_usage_note_1": "1. 请务必修改上方的 title 和 short_title 为您的实际项目名称",
  205. "_usage_note_2": "2. front 和 backend 可根据实际技术栈修改(如 React, Vue, Python, Node.js 等)",
  206. "_usage_note_3": "3. UI设计风格已设置为 ${UI_DESIGN_STYLE},可修改为 corporate、cyberpunk、minimal、bauhaus、japanese、scandinavian、futuristic、elegant、bold、artdeco、memphis、popart",
  207. "_usage_note_4": "4. 生成配置已设置为 ${GENERATION_MODE} 模式,可调整:generation_mode(fast快速验证/full完整生产),page_count_fast/full(各模式页面数量),api_count_min/max(API数量范围)",
  208. "_usage_note_5": "5. 详细填写 requires_docs/需求文档.md 文件(必需)",
  209. "_usage_note_6": "6. 可选填写 requires_docs/技术栈说明文档.md 和 requires_docs/UI设计规范.md(如提供自定义UI规范,需手动修改ui_design_spec路径)",
  210. "_usage_note_7": "7. 最后按照 工作流程.md 或 01-快速开始.md 执行六阶段生成流程",
  211. "_comment_fixed": "=== 固定配置(请勿修改) ===",
  212. "system_prompt_dir": "system_prompts",
  213. "ui_design_spec_default": "specs_docs/ui_design_specs/01-UI设计规范_默认_Corporate.md",
  214. "_comment_generated": "=== 流程生成配置(自动生成) ===",
  215. "framework_design": "process_docs/${SYSTEM_TITLE}_框架设计文档.md",
  216. "page_list": "process_docs/页面清单.md",
  217. "database_schema": "output_sourcecode/db/database_schema.sql",
  218. "deploy_requirements": "output_docs/${SYSTEM_TITLE}_软件著作权登记信息表.md"
  219. }
  220. EOF
  221. print_success "配置文件创建完成"
  222. print_info "创建说明文件..."
  223. # 创建项目说明文件
  224. cat > README.md << EOF
  225. # ${SYSTEM_TITLE}
  226. 这是一个使用AI驱动的企业级软件开发工作流程创建的项目。
  227. ## 项目信息
  228. - **系统名称**: ${SYSTEM_TITLE}
  229. - **系统简称**: ${SYSTEM_SHORT_TITLE}
  230. - **前端技术**: ${FRONT_TECH}
  231. - **后端技术**: ${BACKEND_TECH}
  232. - **创建时间**: $(date +"%Y-%m-%d %H:%M:%S")
  233. ## 目录结构
  234. \`\`\`
  235. ${PROJECT_NAME}/
  236. ├── ai-copyright-config.json # 项目全局配置文件
  237. ├── 工作流程.md # 工作流程文档
  238. ├── 执行计划.md # 执行计划文档
  239. ├── specs_docs/ # 固定规范文档目录
  240. │ ├── ui_design_specs/ # UI设计规范子目录
  241. │ │ └── [选择的UI设计风格文档] # 根据用户选择的UI风格复制相应文档
  242. │ └── tech_stack_specs/ # 技术栈规范子目录
  243. │ └── 技术栈说明文档_默认.md # 默认技术栈说明模板
  244. ├── system_prompts/ # 系统提示词目录(固定不变)
  245. ├── scripts/ # 生成和验证脚本目录
  246. │ ├── generators/ # 代码生成和合并脚本
  247. │ └── validators/ # 项目验证脚本
  248. ├── requires_docs/ # 输入文档目录
  249. │ └── 需求文档.md # 核心业务需求规格说明(待创建)
  250. ├── process_docs/ # 流程中间文档目录
  251. ├── output_docs/ # 最终交付文档目录
  252. └── output_sourcecode/ # 生成代码目录
  253. ├── front/ # 前端页面代码
  254. ├── backend/ # 后端项目代码
  255. └── db/ # 数据库相关文件
  256. \`\`\`
  257. ## 下一步操作
  258. 1. **创建需求文档**: 在 \`requires_docs/\` 目录下创建您的需求文档
  259. 2. **技术栈配置**: 如果需要自定义技术栈,请创建 \`requires_docs/技术栈说明文档.md\`
  260. 3. **开始开发**: 按照 \`工作流程.md\` 中的六阶段开发流程执行
  261. ## 工作流程
  262. 详细的开发流程请参考 \`工作流程.md\` 文档,包含以下阶段:
  263. 1. 项目初始化和框架设计
  264. 2. 系统提示词体系建设
  265. 3. 前端页面设计和开发
  266. 4. 数据库和后端开发
  267. 5. 文档生成
  268. 6. 项目整理和交付
  269. ## 支持
  270. 如有问题,请参考 \`工作流程.md\` 中的详细说明。
  271. EOF
  272. # 创建需求文档模板
  273. cat > requires_docs/需求文档.md << EOF
  274. # ${SYSTEM_TITLE} 需求文档
  275. ## 项目背景
  276. 请在此描述项目的背景和目标。
  277. ## 功能需求
  278. ### 核心功能
  279. 1. 功能一
  280. - 详细描述
  281. - 业务规则
  282. - 用户角色
  283. 2. 功能二
  284. - 详细描述
  285. - 业务规则
  286. - 用户角色
  287. ### 非功能需求
  288. - 性能要求
  289. - 安全要求
  290. - 可用性要求
  291. ## 技术要求
  292. - 前端技术: ${FRONT_TECH}
  293. - 后端技术: ${BACKEND_TECH}
  294. - 其他技术要求
  295. ## 用户角色
  296. - 角色一: 描述
  297. - 角色二: 描述
  298. ## 业务流程
  299. 请描述主要的业务流程。
  300. ---
  301. *请根据实际项目需求完善此文档内容*
  302. EOF
  303. # 创建UI设计规范模板
  304. cat > requires_docs/UI设计规范.md << EOF
  305. # UI设计规范 - ${SYSTEM_TITLE}
  306. > 📝 **使用说明**:本文档为可选输入文档。如不提供,系统将使用默认的UI设计规范。
  307. >
  308. > 🎯 **目的**:定义本软件项目的专属UI设计理念、风格和规范,体现软件的独特性和创新性。
  309. ## 项目设计定位
  310. ### 设计理念
  311. <!-- 请描述本软件的设计理念,例如:现代简约、科技感、专业商务、友好亲民等 -->
  312. ### 目标用户群体
  313. <!-- 请描述主要用户群体,设计风格应该符合用户群体的审美和使用习惯 -->
  314. ### 设计创新点
  315. <!-- 请描述本软件在UI设计方面的创新点和特色功能 -->
  316. ## 色彩系统
  317. ### 主色调
  318. <!-- 请定义软件的主品牌色彩,建议提供具体的色值 -->
  319. - 主色:#[请填写]
  320. - 辅助色:#[请填写]
  321. ### 功能色彩
  322. <!-- 定义成功、警告、错误等状态的色彩 -->
  323. - 成功色:#[请填写]
  324. - 警告色:#[请填写]
  325. - 错误色:#[请填写]
  326. ### 中性色
  327. <!-- 定义文字、背景、边框等中性色彩 -->
  328. - 背景色:#[请填写]
  329. - 文字色:#[请填写]
  330. - 边框色:#[请填写]
  331. ## 设计风格
  332. ### 整体风格
  333. <!-- 选择设计风格:扁平化、拟物化、毛玻璃、渐变、极简等 -->
  334. ### 圆角规范
  335. <!-- 定义按钮、卡片等元素的圆角大小 -->
  336. ### 阴影效果
  337. <!-- 定义卡片、弹窗等元素的阴影样式 -->
  338. ### 字体规范
  339. <!-- 定义标题、正文、说明文字的字体大小和样式 -->
  340. ## 组件设计规范
  341. ### 按钮设计
  342. <!-- 描述主按钮、次要按钮、文字按钮的设计规范 -->
  343. ### 表单设计
  344. <!-- 描述输入框、下拉框、复选框等表单元素的设计 -->
  345. ### 导航设计
  346. <!-- 描述顶部导航、侧边栏、面包屑等导航元素的设计 -->
  347. ### 数据展示
  348. <!-- 描述表格、图表、卡片等数据展示组件的设计 -->
  349. ## 页面布局规范
  350. ### 栅格系统
  351. <!-- 定义页面的栅格布局规则 -->
  352. ### 间距规范
  353. <!-- 定义元素间的间距标准 -->
  354. ### 响应式设计
  355. <!-- 描述在不同屏幕尺寸下的适配方案 -->
  356. ## 交互设计
  357. ### 动效设计
  358. <!-- 描述页面切换、元素交互的动效规范 -->
  359. ### 反馈机制
  360. <!-- 描述加载状态、操作反馈的设计规范 -->
  361. ### 错误处理
  362. <!-- 描述错误提示、空状态页面的设计 -->
  363. ## 特色功能设计
  364. ### 创新交互
  365. <!-- 描述本软件独有的交互方式或界面元素 -->
  366. ### 用户体验优化
  367. <!-- 描述针对特定业务场景的UX优化设计 -->
  368. ## 设计资源
  369. ### 图标风格
  370. <!-- 描述使用的图标库或自定义图标风格 -->
  371. ### 插图风格
  372. <!-- 如使用插图,描述插图的风格和应用场景 -->
  373. ---
  374. **注意**:
  375. 1. 请根据您的软件项目特点填写具体内容
  376. 2. 这些设计规范将影响前端页面的生成效果
  377. 3. 建议体现软件的独特性和创新性,有助于软著申请
  378. 4. 如不提供此文档,系统将使用通用的默认设计规范
  379. EOF
  380. print_success "项目文档创建完成"
  381. # 创建 .gitignore 文件
  382. cat > .gitignore << EOF
  383. # OS generated files
  384. .DS_Store
  385. .DS_Store?
  386. ._*
  387. .Spotlight-V100
  388. .Trashes
  389. ehthumbs.db
  390. Thumbs.db
  391. # IDE files
  392. .vscode/
  393. .idea/
  394. *.swp
  395. *.swo
  396. # Temporary files
  397. *.tmp
  398. *.temp
  399. .temp/
  400. # Logs
  401. *.log
  402. logs/
  403. # Node modules (if applicable)
  404. node_modules/
  405. # Java compiled files
  406. *.class
  407. target/
  408. # Backup files
  409. *.backup
  410. *.bak
  411. EOF
  412. print_success "Git忽略文件创建完成"
  413. echo
  414. print_success "项目初始化完成!"
  415. echo
  416. print_info "项目位置: ${PROJECT_DIR}"
  417. print_info "配置文件: ${PROJECT_DIR}/ai-copyright-config.json"
  418. echo
  419. print_info "下一步操作:"
  420. echo " 1. cd ${PROJECT_NAME}"
  421. echo " 2. 编辑 requires_docs/需求文档.md 添加您的项目需求"
  422. echo " 3. 如需自定义技术栈,创建 requires_docs/技术栈说明文档.md"
  423. echo " 4. 参考 工作流程.md 开始开发流程"
  424. echo
  425. # 执行完整性验证
  426. echo
  427. print_info "开始项目完整性验证..."
  428. # 验证关键目录
  429. VALIDATION_ERRORS=0
  430. REQUIRED_DIRS=(
  431. "specs_docs/ui_design_specs"
  432. "specs_docs/tech_stack_specs"
  433. "system_prompts"
  434. "requires_docs"
  435. "process_docs"
  436. "output_docs"
  437. "output_sourcecode/front"
  438. "output_sourcecode/backend"
  439. "output_sourcecode/db"
  440. "scripts/generators"
  441. "scripts/validators"
  442. )
  443. for dir in "${REQUIRED_DIRS[@]}"; do
  444. if [ -d "$dir" ]; then
  445. print_success "目录存在: $dir"
  446. else
  447. print_error "目录缺失: $dir"
  448. ((VALIDATION_ERRORS++))
  449. fi
  450. done
  451. # 验证配置文件
  452. if [ -f "ai-copyright-config.json" ]; then
  453. print_success "配置文件存在"
  454. # 简单JSON格式验证
  455. if python3 -m json.tool ai-copyright-config.json >/dev/null 2>&1; then
  456. print_success "配置文件JSON格式正确"
  457. else
  458. print_error "配置文件JSON格式错误"
  459. ((VALIDATION_ERRORS++))
  460. fi
  461. else
  462. print_error "配置文件不存在"
  463. ((VALIDATION_ERRORS++))
  464. fi
  465. # 验证脚本权限
  466. if [ -d "scripts/generators" ]; then
  467. SCRIPT_COUNT=$(find scripts/generators -name "*.sh" | wc -l)
  468. if [ $SCRIPT_COUNT -gt 0 ]; then
  469. print_success "发现 $SCRIPT_COUNT 个生成脚本"
  470. # 自动修复脚本权限
  471. chmod +x scripts/generators/*.sh scripts/validators/*.sh 2>/dev/null
  472. print_success "已设置脚本执行权限"
  473. else
  474. print_error "未发现生成脚本"
  475. ((VALIDATION_ERRORS++))
  476. fi
  477. fi
  478. # 验证报告
  479. echo
  480. print_info "=== 项目完整性验证报告 ==="
  481. if [ $VALIDATION_ERRORS -eq 0 ]; then
  482. print_success "项目初始化验证通过!"
  483. print_info "建议下一步: 详细填写 requires_docs/需求文档.md"
  484. else
  485. print_error "发现 $VALIDATION_ERRORS 个问题,请检查修复"
  486. fi
  487. # 显示项目结构
  488. echo
  489. print_info "项目目录结构:"
  490. if command -v tree >/dev/null 2>&1; then
  491. tree "$PROJECT_DIR" -I '__pycache__|*.pyc|.git'
  492. else
  493. find "$PROJECT_DIR" -type d | sed 's|[^/]*/| |g'
  494. fi
  495. print_success "初始化脚本执行完成!"