ai-engineering-init 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/code-reviewer.md +139 -0
- package/.claude/agents/project-manager.md +159 -0
- package/.claude/audio/completed.wav +0 -0
- package/.claude/commands/add-todo.md +255 -0
- package/.claude/commands/check.md +210 -0
- package/.claude/commands/crud.md +454 -0
- package/.claude/commands/dev.md +503 -0
- package/.claude/commands/init-docs.md +681 -0
- package/.claude/commands/next.md +251 -0
- package/.claude/commands/progress.md +242 -0
- package/.claude/commands/start.md +199 -0
- package/.claude/commands/sync.md +307 -0
- package/.claude/commands/update-status.md +428 -0
- package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
- package/.claude/docs/README.md +167 -0
- package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
- package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
- package/.claude/docs//345/267/245/344/275/234/346/265/201/345/274/200/345/217/221/346/214/207/345/215/227.md +714 -0
- package/.claude/docs//345/267/245/345/205/267/347/261/273/344/275/277/347/224/250/346/214/207/345/215/227.md +463 -0
- package/.claude/docs//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/350/247/204/350/214/203.md +390 -0
- package/.claude/docs//346/226/260/345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213/350/247/204/350/214/203.md +688 -0
- package/.claude/docs//346/226/260/351/241/271/347/233/256/345/274/200/345/217/221/346/265/201/347/250/213.md +365 -0
- package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
- package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
- package/.claude/framework-config.json +73 -0
- package/.claude/hooks/pre-tool-use.js +117 -0
- package/.claude/hooks/skill-forced-eval.js +167 -0
- package/.claude/hooks/stop.js +58 -0
- package/.claude/settings.json +41 -0
- package/.claude/skills/add-skill/SKILL.md +352 -0
- package/.claude/skills/api-development/SKILL.md +560 -0
- package/.claude/skills/architecture-design/SKILL.md +756 -0
- package/.claude/skills/backend-annotations/SKILL.md +674 -0
- package/.claude/skills/banana-image/CHANGELOG.md +37 -0
- package/.claude/skills/banana-image/README.md +146 -0
- package/.claude/skills/banana-image/SKILL.md +164 -0
- package/.claude/skills/banana-image/assets/logo.png +0 -0
- package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
- package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
- package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.claude/skills/banana-image/scripts/package.json +18 -0
- package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
- package/.claude/skills/banana-image/templates/poster.json +22 -0
- package/.claude/skills/banana-image/templates/product.json +17 -0
- package/.claude/skills/banana-image/templates/social.json +22 -0
- package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
- package/.claude/skills/brainstorm/SKILL.md +648 -0
- package/.claude/skills/bug-detective/SKILL.md +1206 -0
- package/.claude/skills/code-patterns/SKILL.md +590 -0
- package/.claude/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.claude/skills/crud-development/SKILL.md +649 -0
- package/.claude/skills/data-permission/SKILL.md +599 -0
- package/.claude/skills/database-ops/SKILL.md +407 -0
- package/.claude/skills/error-handler/SKILL.md +371 -0
- package/.claude/skills/file-oss-management/SKILL.md +863 -0
- package/.claude/skills/git-workflow/SKILL.md +375 -0
- package/.claude/skills/json-serialization/SKILL.md +357 -0
- package/.claude/skills/leniu-api-development/SKILL.md +803 -0
- package/.claude/skills/leniu-architecture-design/SKILL.md +598 -0
- package/.claude/skills/leniu-backend-annotations/SKILL.md +664 -0
- package/.claude/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.claude/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.claude/skills/leniu-data-permission/SKILL.md +256 -0
- package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
- package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
- package/.claude/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.claude/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.claude/skills/leniu-java-entity/SKILL.md +751 -0
- package/.claude/skills/leniu-java-export/SKILL.md +560 -0
- package/.claude/skills/leniu-java-logging/SKILL.md +832 -0
- package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
- package/.claude/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.claude/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.claude/skills/leniu-java-task/SKILL.md +367 -0
- package/.claude/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.claude/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.claude/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.claude/skills/leniu-mealtime/SKILL.md +215 -0
- package/.claude/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.claude/skills/leniu-security-guard/SKILL.md +520 -0
- package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
- package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
- package/.claude/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.claude/skills/openspec-continue-change/SKILL.md +118 -0
- package/.claude/skills/openspec-explore/SKILL.md +290 -0
- package/.claude/skills/openspec-ff-change/SKILL.md +101 -0
- package/.claude/skills/openspec-new-change/SKILL.md +74 -0
- package/.claude/skills/openspec-onboard/SKILL.md +529 -0
- package/.claude/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.claude/skills/openspec-verify-change/SKILL.md +168 -0
- package/.claude/skills/performance-doctor/SKILL.md +627 -0
- package/.claude/skills/project-navigator/SKILL.md +305 -0
- package/.claude/skills/redis-cache/SKILL.md +839 -0
- package/.claude/skills/scheduled-jobs/SKILL.md +633 -0
- package/.claude/skills/security-guard/SKILL.md +748 -0
- package/.claude/skills/sms-mail/SKILL.md +766 -0
- package/.claude/skills/social-login/SKILL.md +668 -0
- package/.claude/skills/store-pc/SKILL.md +366 -0
- package/.claude/skills/task-tracker/SKILL.md +307 -0
- package/.claude/skills/tech-decision/SKILL.md +393 -0
- package/.claude/skills/tenant-management/SKILL.md +603 -0
- package/.claude/skills/test-development/SKILL.md +755 -0
- package/.claude/skills/ui-pc/SKILL.md +438 -0
- package/.claude/skills/utils-toolkit/SKILL.md +615 -0
- package/.claude/skills/websocket-sse/SKILL.md +716 -0
- package/.claude/skills/workflow-engine/SKILL.md +676 -0
- package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
- package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
- package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
- package/.codex/skills/add-skill/SKILL.md +352 -0
- package/.codex/skills/add-todo/SKILL.md +269 -0
- package/.codex/skills/api-development/SKILL.md +693 -0
- package/.codex/skills/architecture-design/SKILL.md +628 -0
- package/.codex/skills/backend-annotations/SKILL.md +664 -0
- package/.codex/skills/banana-image/CHANGELOG.md +37 -0
- package/.codex/skills/banana-image/README.md +146 -0
- package/.codex/skills/banana-image/SKILL.md +164 -0
- package/.codex/skills/banana-image/assets/logo.png +0 -0
- package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
- package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
- package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.codex/skills/banana-image/scripts/package.json +18 -0
- package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
- package/.codex/skills/banana-image/templates/poster.json +22 -0
- package/.codex/skills/banana-image/templates/product.json +17 -0
- package/.codex/skills/banana-image/templates/social.json +22 -0
- package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
- package/.codex/skills/brainstorm/SKILL.md +648 -0
- package/.codex/skills/bug-detective/SKILL.md +1206 -0
- package/.codex/skills/check/SKILL.md +367 -0
- package/.codex/skills/code-patterns/SKILL.md +442 -0
- package/.codex/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.codex/skills/crud/SKILL.md +265 -0
- package/.codex/skills/crud-development/SKILL.md +637 -0
- package/.codex/skills/data-permission/SKILL.md +591 -0
- package/.codex/skills/database-ops/SKILL.md +553 -0
- package/.codex/skills/dev/SKILL.md +187 -0
- package/.codex/skills/error-handler/SKILL.md +361 -0
- package/.codex/skills/file-oss-management/SKILL.md +863 -0
- package/.codex/skills/git-workflow/SKILL.md +375 -0
- package/.codex/skills/init-docs/SKILL.md +194 -0
- package/.codex/skills/json-serialization/SKILL.md +357 -0
- package/.codex/skills/leniu-api-development/SKILL.md +803 -0
- package/.codex/skills/leniu-architecture-design/SKILL.md +594 -0
- package/.codex/skills/leniu-backend-annotations/SKILL.md +662 -0
- package/.codex/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.codex/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.codex/skills/leniu-data-permission/SKILL.md +256 -0
- package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
- package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
- package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.codex/skills/leniu-java-entity/SKILL.md +751 -0
- package/.codex/skills/leniu-java-export/SKILL.md +560 -0
- package/.codex/skills/leniu-java-logging/SKILL.md +832 -0
- package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
- package/.codex/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.codex/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.codex/skills/leniu-java-task/SKILL.md +367 -0
- package/.codex/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.codex/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.codex/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.codex/skills/leniu-mealtime/SKILL.md +215 -0
- package/.codex/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.codex/skills/leniu-security-guard/SKILL.md +520 -0
- package/.codex/skills/leniu-utils-toolkit/SKILL.md +378 -0
- package/.codex/skills/next/SKILL.md +137 -0
- package/.codex/skills/openspec-apply-change/SKILL.md +156 -0
- package/.codex/skills/openspec-archive-change/SKILL.md +114 -0
- package/.codex/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.codex/skills/openspec-continue-change/SKILL.md +118 -0
- package/.codex/skills/openspec-explore/SKILL.md +290 -0
- package/.codex/skills/openspec-ff-change/SKILL.md +101 -0
- package/.codex/skills/openspec-new-change/SKILL.md +74 -0
- package/.codex/skills/openspec-onboard/SKILL.md +529 -0
- package/.codex/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.codex/skills/openspec-verify-change/SKILL.md +168 -0
- package/.codex/skills/performance-doctor/SKILL.md +627 -0
- package/.codex/skills/progress/SKILL.md +193 -0
- package/.codex/skills/project-navigator/SKILL.md +286 -0
- package/.codex/skills/redis-cache/SKILL.md +829 -0
- package/.codex/skills/scheduled-jobs/SKILL.md +633 -0
- package/.codex/skills/security-guard/SKILL.md +739 -0
- package/.codex/skills/sms-mail/SKILL.md +766 -0
- package/.codex/skills/social-login/SKILL.md +668 -0
- package/.codex/skills/start/SKILL.md +154 -0
- package/.codex/skills/store-pc/SKILL.md +491 -0
- package/.codex/skills/sync/SKILL.md +149 -0
- package/.codex/skills/task-tracker/SKILL.md +307 -0
- package/.codex/skills/tech-decision/SKILL.md +393 -0
- package/.codex/skills/tenant-management/SKILL.md +603 -0
- package/.codex/skills/test-development/SKILL.md +755 -0
- package/.codex/skills/ui-pc/SKILL.md +475 -0
- package/.codex/skills/update-status/SKILL.md +159 -0
- package/.codex/skills/utils-toolkit/SKILL.md +593 -0
- package/.codex/skills/websocket-sse/SKILL.md +716 -0
- package/.codex/skills/workflow-engine/SKILL.md +676 -0
- package/.cursor/agents/code-reviewer.md +139 -0
- package/.cursor/agents/project-manager.md +159 -0
- package/.cursor/commands/opsx-apply.md +152 -0
- package/.cursor/commands/opsx-archive.md +157 -0
- package/.cursor/commands/opsx-bulk-archive.md +242 -0
- package/.cursor/commands/opsx-continue.md +114 -0
- package/.cursor/commands/opsx-explore.md +174 -0
- package/.cursor/commands/opsx-ff.md +94 -0
- package/.cursor/commands/opsx-new.md +69 -0
- package/.cursor/commands/opsx-onboard.md +525 -0
- package/.cursor/commands/opsx-sync.md +134 -0
- package/.cursor/commands/opsx-verify.md +164 -0
- package/.cursor/mcp.json +22 -0
- package/.cursor/skills/add-skill/SKILL.md +352 -0
- package/.cursor/skills/api-development/SKILL.md +560 -0
- package/.cursor/skills/architecture-design/SKILL.md +756 -0
- package/.cursor/skills/backend-annotations/SKILL.md +674 -0
- package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
- package/.cursor/skills/banana-image/README.md +146 -0
- package/.cursor/skills/banana-image/SKILL.md +164 -0
- package/.cursor/skills/banana-image/assets/logo.png +0 -0
- package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
- package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
- package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.cursor/skills/banana-image/scripts/package.json +18 -0
- package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
- package/.cursor/skills/banana-image/templates/poster.json +22 -0
- package/.cursor/skills/banana-image/templates/product.json +17 -0
- package/.cursor/skills/banana-image/templates/social.json +22 -0
- package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
- package/.cursor/skills/brainstorm/SKILL.md +648 -0
- package/.cursor/skills/bug-detective/SKILL.md +1206 -0
- package/.cursor/skills/code-patterns/SKILL.md +590 -0
- package/.cursor/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.cursor/skills/crud-development/SKILL.md +649 -0
- package/.cursor/skills/data-permission/SKILL.md +599 -0
- package/.cursor/skills/database-ops/SKILL.md +407 -0
- package/.cursor/skills/error-handler/SKILL.md +371 -0
- package/.cursor/skills/file-oss-management/SKILL.md +863 -0
- package/.cursor/skills/git-workflow/SKILL.md +375 -0
- package/.cursor/skills/json-serialization/SKILL.md +357 -0
- package/.cursor/skills/leniu-api-development/SKILL.md +803 -0
- package/.cursor/skills/leniu-architecture-design/SKILL.md +598 -0
- package/.cursor/skills/leniu-backend-annotations/SKILL.md +664 -0
- package/.cursor/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.cursor/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.cursor/skills/leniu-data-permission/SKILL.md +256 -0
- package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
- package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
- package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.cursor/skills/leniu-java-entity/SKILL.md +751 -0
- package/.cursor/skills/leniu-java-export/SKILL.md +560 -0
- package/.cursor/skills/leniu-java-logging/SKILL.md +832 -0
- package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
- package/.cursor/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.cursor/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
- package/.cursor/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.cursor/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.cursor/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.cursor/skills/leniu-mealtime/SKILL.md +215 -0
- package/.cursor/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.cursor/skills/leniu-security-guard/SKILL.md +520 -0
- package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.cursor/skills/openspec-apply-change/SKILL.md +156 -0
- package/.cursor/skills/openspec-archive-change/SKILL.md +114 -0
- package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.cursor/skills/openspec-continue-change/SKILL.md +118 -0
- package/.cursor/skills/openspec-explore/SKILL.md +290 -0
- package/.cursor/skills/openspec-ff-change/SKILL.md +101 -0
- package/.cursor/skills/openspec-new-change/SKILL.md +74 -0
- package/.cursor/skills/openspec-onboard/SKILL.md +529 -0
- package/.cursor/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.cursor/skills/openspec-verify-change/SKILL.md +168 -0
- package/.cursor/skills/performance-doctor/SKILL.md +627 -0
- package/.cursor/skills/project-navigator/SKILL.md +305 -0
- package/.cursor/skills/redis-cache/SKILL.md +839 -0
- package/.cursor/skills/scheduled-jobs/SKILL.md +633 -0
- package/.cursor/skills/security-guard/SKILL.md +748 -0
- package/.cursor/skills/sms-mail/SKILL.md +766 -0
- package/.cursor/skills/social-login/SKILL.md +668 -0
- package/.cursor/skills/store-pc/SKILL.md +366 -0
- package/.cursor/skills/task-tracker/SKILL.md +307 -0
- package/.cursor/skills/tech-decision/SKILL.md +393 -0
- package/.cursor/skills/tenant-management/SKILL.md +603 -0
- package/.cursor/skills/test-development/SKILL.md +755 -0
- package/.cursor/skills/ui-pc/SKILL.md +438 -0
- package/.cursor/skills/utils-toolkit/SKILL.md +615 -0
- package/.cursor/skills/websocket-sse/SKILL.md +716 -0
- package/.cursor/skills/workflow-engine/SKILL.md +676 -0
- package/AGENTS.md +669 -0
- package/CLAUDE.md +205 -0
- package/README.md +205 -0
- package/bin/index.js +179 -0
- package/init.sh +178 -0
- package/package.json +27 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: store-pc
|
|
3
|
+
description: |
|
|
4
|
+
前端状态管理指南。包含 Vuex Store 的创建和使用规范。
|
|
5
|
+
|
|
6
|
+
触发场景:
|
|
7
|
+
- 创建/使用 Vuex Store
|
|
8
|
+
- Vuex 状态管理
|
|
9
|
+
- 跨组件数据共享
|
|
10
|
+
- 全局状态管理
|
|
11
|
+
|
|
12
|
+
触发词:Vuex、store、mapState、mapActions、commit、dispatch、状态管理
|
|
13
|
+
|
|
14
|
+
适用目录:/Users/xujiajun/Developer/frontProj/web/src/store/**
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 前端状态管理指南
|
|
18
|
+
|
|
19
|
+
> **适用于**: 腾云智慧食堂管理系统前端项目(Vue 2.7.16 + Vuex 3.4.0)
|
|
20
|
+
>
|
|
21
|
+
> **Store 目录**: `/Users/xujiajun/Developer/frontProj/web/src/store/`
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 目录结构
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
src/store/
|
|
29
|
+
├── index.js # Store 入口(Vuex 初始化)
|
|
30
|
+
├── getters.js # 全局 getters
|
|
31
|
+
└── modules/ # Store 模块(28个)
|
|
32
|
+
├── user.js # 用户状态(最核心)
|
|
33
|
+
├── app.js # 应用状态(语言/尺寸)
|
|
34
|
+
├── permission.js # 权限路由管理
|
|
35
|
+
├── tagsView.js # 标签页管理
|
|
36
|
+
├── settings.js # 系统设置
|
|
37
|
+
├── marketing.js # 营销状态
|
|
38
|
+
├── order.js # 订单状态
|
|
39
|
+
├── stock.js # 库存状态
|
|
40
|
+
├── reportcenter.js # 报表状态
|
|
41
|
+
├── account.js # 账户状态
|
|
42
|
+
├── purchase.js # 采购状态
|
|
43
|
+
├── chart.js # 图表状态
|
|
44
|
+
├── notice.js # 通知状态
|
|
45
|
+
├── upload.js # 上传状态
|
|
46
|
+
├── menudish.js # 菜品状态
|
|
47
|
+
├── supplyChain.js # 供应链状态
|
|
48
|
+
└── ... # 其他业务模块
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 全局 Getters(getters.js)
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
// 常用全局 getters(可直接用 mapGetters 访问)
|
|
57
|
+
{
|
|
58
|
+
token, // 登录 token
|
|
59
|
+
name, // 用户名
|
|
60
|
+
userInfo, // 完整用户信息对象
|
|
61
|
+
permissions, // 权限列表
|
|
62
|
+
hasRoles, // 是否已加载角色(用于路由守卫)
|
|
63
|
+
permission_routes, // 已生成的权限路由
|
|
64
|
+
adminMerchant, // 是否为超级管理员商户
|
|
65
|
+
url, // API base URL
|
|
66
|
+
language, // 当前语言(zh/en)
|
|
67
|
+
size, // Element UI 组件尺寸
|
|
68
|
+
areaOptions, // 区域选项(来自 supplyChain)
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 创建新 Store
|
|
75
|
+
|
|
76
|
+
### 标准模板
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
// src/store/modules/xxx.js
|
|
80
|
+
import { getList, getDetail } from '@/api/xxx'
|
|
81
|
+
|
|
82
|
+
const state = {
|
|
83
|
+
list: [],
|
|
84
|
+
current: null,
|
|
85
|
+
loading: false,
|
|
86
|
+
total: 0
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const mutations = {
|
|
90
|
+
SET_LIST: (state, list) => {
|
|
91
|
+
state.list = list
|
|
92
|
+
},
|
|
93
|
+
SET_CURRENT: (state, current) => {
|
|
94
|
+
state.current = current
|
|
95
|
+
},
|
|
96
|
+
SET_LOADING: (state, loading) => {
|
|
97
|
+
state.loading = loading
|
|
98
|
+
},
|
|
99
|
+
SET_TOTAL: (state, total) => {
|
|
100
|
+
state.total = total
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const actions = {
|
|
105
|
+
/**
|
|
106
|
+
* 获取列表
|
|
107
|
+
*/
|
|
108
|
+
async fetchList({ commit }, params) {
|
|
109
|
+
commit('SET_LOADING', true)
|
|
110
|
+
try {
|
|
111
|
+
const res = await getList({
|
|
112
|
+
page: { current: params.current || 1, size: params.size || 20 },
|
|
113
|
+
object: params
|
|
114
|
+
})
|
|
115
|
+
commit('SET_LIST', res.records || [])
|
|
116
|
+
commit('SET_TOTAL', res.total || 0)
|
|
117
|
+
return res
|
|
118
|
+
} finally {
|
|
119
|
+
commit('SET_LOADING', false)
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* 获取详情
|
|
125
|
+
*/
|
|
126
|
+
async fetchDetail({ commit }, id) {
|
|
127
|
+
const res = await getDetail({ id })
|
|
128
|
+
commit('SET_CURRENT', res)
|
|
129
|
+
return res
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 重置状态
|
|
134
|
+
*/
|
|
135
|
+
reset({ commit }) {
|
|
136
|
+
commit('SET_LIST', [])
|
|
137
|
+
commit('SET_CURRENT', null)
|
|
138
|
+
commit('SET_TOTAL', 0)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const getters = {
|
|
143
|
+
list: state => state.list,
|
|
144
|
+
current: state => state.current,
|
|
145
|
+
loading: state => state.loading,
|
|
146
|
+
total: state => state.total
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export default {
|
|
150
|
+
namespaced: true,
|
|
151
|
+
state,
|
|
152
|
+
mutations,
|
|
153
|
+
actions,
|
|
154
|
+
getters
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 在 index.js 中注册
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
// src/store/index.js
|
|
162
|
+
import xxx from './modules/xxx'
|
|
163
|
+
|
|
164
|
+
export default new Vuex.Store({
|
|
165
|
+
modules: {
|
|
166
|
+
// ... 其他模块
|
|
167
|
+
xxx
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 使用 Store
|
|
175
|
+
|
|
176
|
+
### 方式 1:直接访问
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
export default {
|
|
180
|
+
computed: {
|
|
181
|
+
list() {
|
|
182
|
+
return this.$store.state.xxx.list
|
|
183
|
+
},
|
|
184
|
+
loading() {
|
|
185
|
+
return this.$store.state.xxx.loading
|
|
186
|
+
},
|
|
187
|
+
// 使用全局 getter
|
|
188
|
+
token() {
|
|
189
|
+
return this.$store.getters.token
|
|
190
|
+
},
|
|
191
|
+
userInfo() {
|
|
192
|
+
return this.$store.getters.userInfo
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
methods: {
|
|
196
|
+
getData() {
|
|
197
|
+
this.$store.dispatch('xxx/fetchList', this.queryParams)
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### 方式 2:mapState / mapGetters / mapActions
|
|
204
|
+
|
|
205
|
+
```javascript
|
|
206
|
+
import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'
|
|
207
|
+
|
|
208
|
+
export default {
|
|
209
|
+
computed: {
|
|
210
|
+
// 模块内 state
|
|
211
|
+
...mapState('xxx', ['list', 'loading', 'total']),
|
|
212
|
+
|
|
213
|
+
// 全局 getters
|
|
214
|
+
...mapGetters(['token', 'userInfo', 'permissions', 'adminMerchant'])
|
|
215
|
+
},
|
|
216
|
+
methods: {
|
|
217
|
+
...mapActions('xxx', ['fetchList', 'fetchDetail', 'reset']),
|
|
218
|
+
|
|
219
|
+
async getData() {
|
|
220
|
+
await this.fetchList({ ...this.queryParams, ...this.page })
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
mounted() {
|
|
224
|
+
this.getData()
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 核心 Store 模块说明
|
|
232
|
+
|
|
233
|
+
### user.js(用户状态)
|
|
234
|
+
|
|
235
|
+
最重要的模块,包含:
|
|
236
|
+
- `state.token` - 登录 token
|
|
237
|
+
- `state.userInfo` - 完整用户信息(userId、roles、roleCode、merchantId 等)
|
|
238
|
+
- `state.hasRoles` - 是否已加载角色信息
|
|
239
|
+
- `state.adminMerchant` - 是否为超级管理员(`roleCode === 'ROLE_ADMIN'`)
|
|
240
|
+
- `state.merchantList` - 商户列表(管理员可切换商户)
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
// 在路由守卫中获取用户信息
|
|
244
|
+
const userInfo = await store.dispatch('user/getInfo')
|
|
245
|
+
|
|
246
|
+
// 登出
|
|
247
|
+
await store.dispatch('user/resetToken')
|
|
248
|
+
localStorage.clear()
|
|
249
|
+
locationHref()
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### permission.js(权限路由)
|
|
253
|
+
|
|
254
|
+
- 根据用户角色动态生成路由
|
|
255
|
+
- `state.routes` - 完整路由表(用于菜单渲染)
|
|
256
|
+
- `state.addRoutes` - 动态添加的路由
|
|
257
|
+
|
|
258
|
+
```javascript
|
|
259
|
+
// 在路由守卫中生成权限路由
|
|
260
|
+
const accessRoutes = await store.dispatch('permission/generateRoutes')
|
|
261
|
+
accessRoutes.forEach(route => {
|
|
262
|
+
router.addRoute(route)
|
|
263
|
+
})
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### app.js(应用状态)
|
|
267
|
+
|
|
268
|
+
- `state.language` - 当前语言(zh/en)
|
|
269
|
+
- `state.size` - Element UI 组件尺寸
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 最佳实践
|
|
274
|
+
|
|
275
|
+
### 1. 何时使用 Store
|
|
276
|
+
|
|
277
|
+
| 场景 | 是否使用 Store |
|
|
278
|
+
|------|---------------|
|
|
279
|
+
| 多个页面/组件共享的数据 | ✅ 使用 |
|
|
280
|
+
| 用户登录状态、权限 | ✅ 使用(user 模块) |
|
|
281
|
+
| 全局配置(语言、尺寸) | ✅ 使用(app 模块) |
|
|
282
|
+
| 页面内部状态(表单数据)| ❌ 用 data |
|
|
283
|
+
| 父子组件传值 | ❌ 用 props/emit |
|
|
284
|
+
| 兄弟组件通信(简单) | ❌ 用 eventBus |
|
|
285
|
+
|
|
286
|
+
### 2. 命名规范
|
|
287
|
+
|
|
288
|
+
```javascript
|
|
289
|
+
// ✅ 正确:Mutation 大写字母+下划线
|
|
290
|
+
const mutations = {
|
|
291
|
+
SET_LIST: (state, list) => { state.list = list },
|
|
292
|
+
SET_LOADING: (state, v) => { state.loading = v }
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// ✅ 正确:Action 小驼峰
|
|
296
|
+
const actions = {
|
|
297
|
+
fetchList: async ({ commit }, params) => { },
|
|
298
|
+
fetchDetail: async ({ commit }, id) => { }
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// ✅ 正确:模块文件名小写,匹配业务名
|
|
302
|
+
// store/modules/marketing.js
|
|
303
|
+
// store/modules/order.js
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### 3. 登出时重置 Store
|
|
307
|
+
|
|
308
|
+
```javascript
|
|
309
|
+
// 在 user store 中
|
|
310
|
+
const actions = {
|
|
311
|
+
async resetToken({ commit }) {
|
|
312
|
+
commit('SET_TOKEN', '')
|
|
313
|
+
commit('SET_HAS_ROLES', false)
|
|
314
|
+
removeToken()
|
|
315
|
+
removeTenant()
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// 登出时(permission.js 路由守卫中)
|
|
320
|
+
await store.dispatch('user/resetToken')
|
|
321
|
+
localStorage.clear()
|
|
322
|
+
locationHref() // 使用全局 locationHref 跳转(不用 router.push)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 4. 分页数据格式
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
// 后端返回的分页数据格式
|
|
329
|
+
{
|
|
330
|
+
records: [], // 数据列表(非 rows)
|
|
331
|
+
total: 100,
|
|
332
|
+
current: 1,
|
|
333
|
+
size: 20
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// 请求分页参数格式
|
|
337
|
+
{
|
|
338
|
+
page: { current: 1, size: 20 },
|
|
339
|
+
object: { ...queryParams } // 查询条件
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 参考文件
|
|
346
|
+
|
|
347
|
+
| Store | 路径 |
|
|
348
|
+
|-------|------|
|
|
349
|
+
| Store 入口 | `/Users/xujiajun/Developer/frontProj/web/src/store/index.js` |
|
|
350
|
+
| 全局 Getters | `/Users/xujiajun/Developer/frontProj/web/src/store/getters.js` |
|
|
351
|
+
| 用户 Store | `/Users/xujiajun/Developer/frontProj/web/src/store/modules/user.js` |
|
|
352
|
+
| 权限 Store | `/Users/xujiajun/Developer/frontProj/web/src/store/modules/permission.js` |
|
|
353
|
+
| 应用 Store | `/Users/xujiajun/Developer/frontProj/web/src/store/modules/app.js` |
|
|
354
|
+
| 设置 Store | `/Users/xujiajun/Developer/frontProj/web/src/store/modules/settings.js` |
|
|
355
|
+
| 标签页 Store | `/Users/xujiajun/Developer/frontProj/web/src/store/modules/tagsView.js` |
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 注意事项
|
|
360
|
+
|
|
361
|
+
1. **本项目使用 Vuex 3.x**(非 Pinia),与 Vue 2 配套
|
|
362
|
+
2. **Store 模块必须设置 `namespaced: true`**
|
|
363
|
+
3. **异步操作放在 Actions 中**,同步操作放在 Mutations 中
|
|
364
|
+
4. **分页数据用 `records`**,不是 `rows`(与 RuoYi 后端框架不同)
|
|
365
|
+
5. **登出使用 `locationHref()`** 而非 `router.push('/login')`,目的是清除内存中的数据
|
|
366
|
+
6. **`adminMerchant` 为 true 时**,用户是超级管理员(`roleCode === 'ROLE_ADMIN'`),可切换商户
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-tracker
|
|
3
|
+
description: |
|
|
4
|
+
开发任务进度跟踪系统。当用户需要记录复杂开发任务的需求、步骤、进度时自动使用此 Skill。
|
|
5
|
+
创建 Markdown 文档实现任务上下文持久化,支持中断后快速恢复。
|
|
6
|
+
|
|
7
|
+
触发场景:
|
|
8
|
+
- 多步骤功能开发(需要跨会话)
|
|
9
|
+
- 复杂需求的步骤分解与跟踪
|
|
10
|
+
- 任务进度记录与更新
|
|
11
|
+
- 中断后的任务恢复
|
|
12
|
+
- 历史任务查询与归档
|
|
13
|
+
|
|
14
|
+
触发词:创建任务、跟踪任务、记录进度、任务跟踪、继续任务、恢复任务、查看任务、归档任务、任务列表
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 任务跟踪技能
|
|
18
|
+
|
|
19
|
+
## 何时使用
|
|
20
|
+
|
|
21
|
+
✅ 用户明确要求跟踪任务("创建任务跟踪"、"记录进度"、"跟踪这个任务")
|
|
22
|
+
✅ 复杂的多步骤开发任务
|
|
23
|
+
✅ 需要跨会话恢复的工作
|
|
24
|
+
|
|
25
|
+
❌ 简单的单步操作
|
|
26
|
+
❌ 纯咨询性对话
|
|
27
|
+
|
|
28
|
+
## 目录结构
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
{项目根目录}/
|
|
32
|
+
└── docs/
|
|
33
|
+
└── tasks/
|
|
34
|
+
├── README.md # 使用说明(首次自动生成)
|
|
35
|
+
├── active/ # 进行中的任务
|
|
36
|
+
│ └── task-20260121-153045-用户反馈.md
|
|
37
|
+
└── archive/ # 已完成的任务
|
|
38
|
+
└── 2026-01/
|
|
39
|
+
└── task-20260120-优惠券系统.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 文档模板
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
# 任务:{任务标题}
|
|
46
|
+
|
|
47
|
+
**状态**: 🟢 进行中 | 🔵 已完成 | 🔴 已暂停
|
|
48
|
+
**创建时间**: {YYYY-MM-DD HH:MM:SS}
|
|
49
|
+
**更新时间**: {YYYY-MM-DD HH:MM:SS}
|
|
50
|
+
**Git 分支**: {branch_name}
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 📋 需求描述
|
|
55
|
+
|
|
56
|
+
{用户原始需求的详细描述,包括背景、目标、约束条件}
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 🎯 实现步骤
|
|
61
|
+
|
|
62
|
+
- [ ] 1. {步骤1简述}
|
|
63
|
+
- **文件**: `path/to/file.ext`
|
|
64
|
+
- **说明**: {详细说明}
|
|
65
|
+
|
|
66
|
+
- [x] 2. {步骤2简述}
|
|
67
|
+
- **文件**: `another/file.ext`
|
|
68
|
+
- **说明**: {详细说明}
|
|
69
|
+
- **完成时间**: {YYYY-MM-DD HH:MM}
|
|
70
|
+
|
|
71
|
+
- [ ] 3. {步骤3简述}
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 📝 关键决策
|
|
76
|
+
|
|
77
|
+
- **模块归属**: {模块名称}
|
|
78
|
+
- **数据库表**: {表名前缀}
|
|
79
|
+
- **主键策略**: {ID生成方式}
|
|
80
|
+
- **技术选型**: {框架/库版本}
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 🔄 当前进度
|
|
85
|
+
|
|
86
|
+
**已完成**: {X} / {总数} 步骤 ({百分比}%)
|
|
87
|
+
|
|
88
|
+
**下一步操作**:
|
|
89
|
+
1. {下一步具体要做的事情}
|
|
90
|
+
2. {再下一步}
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 📁 相关文件
|
|
95
|
+
|
|
96
|
+
- `{文件路径}` - {文件用途}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## ⚠️ 注意事项
|
|
101
|
+
|
|
102
|
+
- {需要特别注意的点}
|
|
103
|
+
- {已知问题或风险}
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 💬 变更记录
|
|
108
|
+
|
|
109
|
+
### {YYYY-MM-DD HH:MM}
|
|
110
|
+
- {本次更新内容}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 核心操作
|
|
114
|
+
|
|
115
|
+
### 1. 创建任务
|
|
116
|
+
|
|
117
|
+
**触发**:用户说"创建任务跟踪"、"记录这个任务"
|
|
118
|
+
|
|
119
|
+
**步骤**:
|
|
120
|
+
```bash
|
|
121
|
+
# 1. 确保目录存在
|
|
122
|
+
mkdir -p docs/tasks/active docs/tasks/archive
|
|
123
|
+
|
|
124
|
+
# 2. 生成文件名
|
|
125
|
+
# 格式: task-{YYYYMMdd-HHMMSS}-{任务简称}.md
|
|
126
|
+
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
|
127
|
+
SLUG="{任务标题简化版,截断30字符}"
|
|
128
|
+
FILENAME="task-${TIMESTAMP}-${SLUG}.md"
|
|
129
|
+
|
|
130
|
+
# 3. 创建文档
|
|
131
|
+
# 填充上述模板内容到 docs/tasks/active/$FILENAME
|
|
132
|
+
|
|
133
|
+
# 4. 首次使用时创建 README.md(如不存在)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**README.md 内容**:
|
|
137
|
+
```markdown
|
|
138
|
+
# 任务跟踪中心
|
|
139
|
+
|
|
140
|
+
## 目录说明
|
|
141
|
+
- `active/` - 进行中的任务
|
|
142
|
+
- `archive/` - 已完成的任务(按月归档)
|
|
143
|
+
|
|
144
|
+
## 使用方法
|
|
145
|
+
1. Claude 自动创建任务跟踪文档
|
|
146
|
+
2. 手动编辑文档更新进度(修改复选框)
|
|
147
|
+
3. 任务完成后移动到 archive/{年-月}/
|
|
148
|
+
|
|
149
|
+
## 快速恢复
|
|
150
|
+
```bash
|
|
151
|
+
# 查看活跃任务
|
|
152
|
+
ls -1 active/
|
|
153
|
+
|
|
154
|
+
# 恢复任务
|
|
155
|
+
cat active/task-20260121-*.md
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 2. 更新进度
|
|
159
|
+
|
|
160
|
+
**触发**:用户说"更新进度"、"标记步骤X完成"
|
|
161
|
+
|
|
162
|
+
**步骤**:
|
|
163
|
+
```bash
|
|
164
|
+
# 1. 找到当前任务文档(最新的那个)
|
|
165
|
+
TASK_FILE=$(ls -t docs/tasks/active/*.md | head -1)
|
|
166
|
+
|
|
167
|
+
# 2. 更新复选框: - [ ] → - [x]
|
|
168
|
+
sed -i "s/^- \[ \] ${STEP_NUMBER}\./- [x] ${STEP_NUMBER}./" "$TASK_FILE"
|
|
169
|
+
|
|
170
|
+
# 3. 更新时间戳
|
|
171
|
+
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
|
|
172
|
+
sed -i "s/^\*\*更新时间\*\*:.*/\*\*更新时间\*\*: $CURRENT_TIME/" "$TASK_FILE"
|
|
173
|
+
|
|
174
|
+
# 4. 添加变更记录
|
|
175
|
+
echo -e "### $CURRENT_TIME\n- 完成步骤 $STEP_NUMBER: $DESCRIPTION" >> "$TASK_FILE"
|
|
176
|
+
|
|
177
|
+
# 5. 重新计算进度百分比
|
|
178
|
+
TOTAL=$(grep -c "^- \[.\]" "$TASK_FILE")
|
|
179
|
+
DONE=$(grep -c "^- \[x\]" "$TASK_FILE")
|
|
180
|
+
PERCENT=$((DONE * 100 / TOTAL))
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### 3. 列出活跃任务
|
|
184
|
+
|
|
185
|
+
**触发**:用户说"有哪些任务"、"列出任务"
|
|
186
|
+
|
|
187
|
+
**步骤**:
|
|
188
|
+
```bash
|
|
189
|
+
for file in docs/tasks/active/*.md; do
|
|
190
|
+
TITLE=$(grep "^# 任务:" "$file" | sed 's/^# 任务://')
|
|
191
|
+
STATUS=$(grep "^\*\*状态\*\*:" "$file" | sed 's/.*: //')
|
|
192
|
+
PROGRESS=$(grep "^\*\*已完成\*\*:" "$file" | sed 's/.*: //')
|
|
193
|
+
|
|
194
|
+
echo "📄 $TITLE"
|
|
195
|
+
echo " 状态: $STATUS | 进度: $PROGRESS"
|
|
196
|
+
echo " 文件: $file"
|
|
197
|
+
echo ""
|
|
198
|
+
done
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 4. 恢复任务
|
|
202
|
+
|
|
203
|
+
**触发**:用户说"继续上次的任务"、"恢复任务"
|
|
204
|
+
|
|
205
|
+
**步骤**:
|
|
206
|
+
```bash
|
|
207
|
+
# 1. 确定要恢复的任务
|
|
208
|
+
if [ 用户指定了任务名 ]; then
|
|
209
|
+
TASK_FILE=$(find docs/tasks/active -name "*{用户指定的关键词}*.md" | head -1)
|
|
210
|
+
else
|
|
211
|
+
TASK_FILE=$(ls -t docs/tasks/active/*.md | head -1) # 最新的
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
# 2. 读取文档内容
|
|
215
|
+
cat "$TASK_FILE"
|
|
216
|
+
|
|
217
|
+
# 3. 提取关键信息并向用户确认
|
|
218
|
+
TITLE=$(grep "^# 任务:" "$TASK_FILE" | sed 's/^# 任务://')
|
|
219
|
+
NEXT_STEPS=$(提取 "下一步操作" 部分)
|
|
220
|
+
|
|
221
|
+
# 4. 输出恢复信息
|
|
222
|
+
echo "正在恢复任务:$TITLE"
|
|
223
|
+
echo "下一步操作:"
|
|
224
|
+
echo "$NEXT_STEPS"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 5. 归档任务
|
|
228
|
+
|
|
229
|
+
**触发**:用户说"任务完成"、"归档任务"
|
|
230
|
+
|
|
231
|
+
**步骤**:
|
|
232
|
+
```bash
|
|
233
|
+
# 1. 更新状态
|
|
234
|
+
sed -i "s/^\*\*状态\*\*:.*/\*\*状态\*\*: 🔵 已完成/" "$TASK_FILE"
|
|
235
|
+
|
|
236
|
+
# 2. 移动到归档目录
|
|
237
|
+
YEAR_MONTH=$(date +%Y-%m)
|
|
238
|
+
mkdir -p "docs/tasks/archive/$YEAR_MONTH"
|
|
239
|
+
mv "$TASK_FILE" "docs/tasks/archive/$YEAR_MONTH/"
|
|
240
|
+
|
|
241
|
+
echo "✅ 已归档到: docs/tasks/archive/$YEAR_MONTH/"
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 使用示例
|
|
245
|
+
|
|
246
|
+
**场景1:创建任务**
|
|
247
|
+
```
|
|
248
|
+
用户: "创建一个用户反馈功能的任务跟踪"
|
|
249
|
+
|
|
250
|
+
Claude:
|
|
251
|
+
✅ 创建文档: docs/tasks/active/task-20260121-153045-用户反馈.md
|
|
252
|
+
📋 已记录需求描述
|
|
253
|
+
🎯 列出5个实现步骤
|
|
254
|
+
💡 开始第一步:设计数据库表结构
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**场景2:更新进度**
|
|
258
|
+
```
|
|
259
|
+
用户: "标记步骤1和2完成"
|
|
260
|
+
|
|
261
|
+
Claude:
|
|
262
|
+
✅ 已更新进度: 2/5 (40%)
|
|
263
|
+
⏰ 更新时间: 2026-01-21 16:45:30
|
|
264
|
+
📌 下一步: 实现 Service 层
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**场景3:恢复任务**
|
|
268
|
+
```
|
|
269
|
+
[用户重新打开窗口]
|
|
270
|
+
用户: "继续上次的用户反馈功能"
|
|
271
|
+
|
|
272
|
+
Claude:
|
|
273
|
+
📄 正在恢复任务:用户反馈管理功能
|
|
274
|
+
✅ 已完成: 数据库设计、实体类创建 (2/5)
|
|
275
|
+
📌 下一步: 实现 Service 层
|
|
276
|
+
🔗 文件: docs/tasks/active/task-20260121-153045-用户反馈.md
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## 最佳实践
|
|
280
|
+
|
|
281
|
+
**应该做**:
|
|
282
|
+
- ✅ 一个任务 = 一个完整功能开发
|
|
283
|
+
- ✅ 及时更新进度(完成一步更新一次)
|
|
284
|
+
- ✅ 详细记录关键决策
|
|
285
|
+
- ✅ 保留原始需求描述
|
|
286
|
+
|
|
287
|
+
**不应该做**:
|
|
288
|
+
- ❌ 为每个小改动创建任务
|
|
289
|
+
- ❌ 删除旧任务(归档即可)
|
|
290
|
+
- ❌ 自动归档(由用户决定)
|
|
291
|
+
|
|
292
|
+
## 错误处理
|
|
293
|
+
|
|
294
|
+
**目录不存在** → 自动创建 `docs/tasks/active` 和 `archive`
|
|
295
|
+
|
|
296
|
+
**没有活跃任务** → 提示用户:创建新任务 | 恢复归档任务 | 查看历史
|
|
297
|
+
|
|
298
|
+
**文档格式错误** → 尽量解析,提示用户保持格式:
|
|
299
|
+
- 保持 `##` 标题层级
|
|
300
|
+
- 复选框格式:`- [ ]` 或 `- [x]`
|
|
301
|
+
- 不删除 `**字段**` 标记
|
|
302
|
+
|
|
303
|
+
## 功能边界
|
|
304
|
+
|
|
305
|
+
**适用于**:单人开发、本地存储、快速恢复上下文
|
|
306
|
+
|
|
307
|
+
**不适用于**:多人协作、实时同步、复杂依赖管理(请使用专业项目管理工具)
|