aodw-skill 0.7.18 → 0.7.22
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/.aodw-next/01-core/ai-project-overview-rules.md +5 -5
- package/.aodw-next/01-core/csf-thinking-framework.md +1 -1
- package/.aodw-next/02-workflow/rt-manager.md +22 -1
- package/.aodw-next/02-workflow/ui-workflow-rules.md +0 -3
- package/.aodw-next/05-tooling/ai-tools-init-rules.md +2 -2
- package/.aodw-next/README.md +0 -1
- package/.aodw-next/SKILL.md +5 -5
- package/.aodw-next/manifest.yaml +0 -5
- package/AODW_Adapters/README.md +24 -31
- package/README.md +10 -15
- package/bin/aodw.js +53 -123
- package/bin/processors/index.js +1 -35
- package/bin/update-adapters-from-template.js +1 -15
- package/package.json +4 -4
- package/.aodw-next/01-core/ai-interaction-rules-summary.md +0 -37
- package/.aodw-next/01-core/ai-knowledge-rules-summary.md +0 -25
- package/.aodw-next/01-core/git-discipline-summary.md +0 -36
- package/.aodw-next/02-workflow/rt-id-generation-rules.md +0 -24
- package/.aodw-next/02-workflow/rt-manager-summary.md +0 -15
- package/.aodw-next/02-workflow/ui-workflow-rules-summary.md +0 -39
- package/.aodw-next/03-standards/stacks/rust-axum/ai-coding-rules-backend.md +0 -134
- package/.aodw-next/06-project/README.md +0 -16
- package/.aodw-next/07-optimization/token-usage-analysis.md +0 -253
- package/.aodw-next/templates/TEMPLATE-APPLICATION-GUIDE.md +0 -110
- package/.aodw-next/templates/audit-report-template.md +0 -232
- package/.aodw-next/templates/changelog-template.md +0 -16
- package/.aodw-next/templates/checklists/coding-standards-template.md +0 -130
- package/.aodw-next/templates/csf-review-template.md +0 -201
- package/.aodw-next/templates/impact-template.md +0 -17
- package/.aodw-next/templates/invariants-template.md +0 -12
- package/.aodw-next/templates/plan-lite-template.md +0 -20
- package/.aodw-next/templates/rt-decision-template.md +0 -13
- package/.aodw-next/templates/rt-intake-template.md +0 -33
- package/.aodw-next/templates/spec-lite-template.md +0 -26
- package/.aodw-next/templates/tests-template.md +0 -13
- package/.aodw-next/templates/tools-config/README.md +0 -112
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-check.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-done.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-full.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-governance.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-impact.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-init.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-invariants.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-lite.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-module.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-new.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-open.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-pause.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-resume.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-tests.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw-upgrade.md +0 -7
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/.agent/rules/aodw.md +0 -35
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-check.md +0 -16
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-done.md +0 -16
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-full.md +0 -14
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-governance.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-impact.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-init.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-invariants.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-lite.md +0 -14
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-module.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-new.md +0 -30
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-open.md +0 -10
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-pause.md +0 -12
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-resume.md +0 -12
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-tests.md +0 -13
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw-upgrade.md +0 -12
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/antigravity/global_workflows/aodw.md +0 -18
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/claude/CLAUDE.md +0 -17
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-check.md +0 -30
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-done.md +0 -52
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-full.md +0 -31
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-governance.md +0 -34
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-impact.md +0 -25
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-init.md +0 -75
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-invariants.md +0 -29
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-lite.md +0 -23
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-module.md +0 -24
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-new.md +0 -70
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-open.md +0 -19
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-pause.md +0 -19
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-resume.md +0 -20
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-tests.md +0 -26
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw-upgrade.md +0 -27
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/aodw.md +0 -69
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/deploypromote.md +0 -20
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/commands/featuretotester.md +0 -32
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/feature_to_master_push_test_local.sh +0 -390
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/promote_only.sh +0 -210
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/deploy/rollback_prod.sh +0 -99
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/cursor/.cursor/rules/aodw.mdc +0 -26
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-check.md +0 -29
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-done.md +0 -52
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-full.md +0 -30
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-governance.md +0 -33
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-impact.md +0 -24
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-init.md +0 -75
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-invariants.md +0 -28
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-lite.md +0 -22
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-module.md +0 -23
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-new.md +0 -92
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-open.md +0 -18
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-pause.md +0 -18
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-resume.md +0 -19
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-tests.md +0 -25
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw-upgrade.md +0 -26
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/.agent/rules/aodw.md +0 -68
- package/AODW_Adapters/_backup/v3.1.0-pre-refactor/gemini/GEMINI.md +0 -17
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-analyze.md +0 -15
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-complete.md +0 -15
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-control.md +0 -14
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-decide.md +0 -16
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-governance.md +0 -7
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-implement.md +0 -16
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-init.md +0 -7
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-intake.md +0 -15
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-open.md +0 -7
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-simplified.md +0 -107
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/.agent/rules/aodw-verify.md +0 -14
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-analyze.md +0 -24
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-complete.md +0 -23
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-control.md +0 -21
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-decide.md +0 -26
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-governance.md +0 -13
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-implement.md +0 -21
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-init.md +0 -13
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-intake.md +0 -28
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-open.md +0 -10
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw-verify.md +0 -20
- package/AODW_Adapters/_backup/v4.0.0-simplified/antigravity/global_workflows/aodw.md +0 -18
- package/AODW_Adapters/gemini/.agent/rules/aodw-next.md +0 -70
- package/AODW_Adapters/gemini/GEMINI.md +0 -18
- package/AODW_Adapters/general/.github/copilot-instructions.md +0 -34
- package/AODW_Adapters/general/AGENTS.md +0 -70
- package/docs/README.md +0 -26
- package/docs/adapter-evaluation.md +0 -55
- package/docs/backend-guidelines.md +0 -335
- package/docs/frontend-guidelines.md +0 -266
- package/docs/installation-variants.md +0 -88
- package/docs/migration-guide-0.2.0.md +0 -250
- package/docs/platform-matrix.md +0 -83
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# AODW GitHub Copilot 指令
|
|
2
|
-
# 版本: 0.3.0
|
|
3
|
-
|
|
4
|
-
你是一个 **AODW (AI 编排开发工作流) 协作 Agent**。
|
|
5
|
-
|
|
6
|
-
## 1. Core Principles & Output Specifications
|
|
7
|
-
> **简洁至上**:恪守KISS(Keep It Simple, Stupid)原则,崇尚简洁与可维护性,避免过度工程化与不必要的防御性设计。
|
|
8
|
-
> **深度分析**:立足于第一性原理(First Principles Thinking)剖析问题,并善用工具以提升效率。
|
|
9
|
-
> **事实为本**:以事实为最高准则。若有任何谬误,恳请坦率斧正,助我精进。
|
|
10
|
-
|
|
11
|
-
> **语言要求**:所有回复、思考过程及任务清单,均须使用中文。
|
|
12
|
-
> **固定指令**:`Implementation Plan, Task List and Thought in Chinese`
|
|
13
|
-
|
|
14
|
-
## 2. 规则引用 (必读)
|
|
15
|
-
为了正确操作,你必须阅读 `.aodw/` 目录下的以下文件:
|
|
16
|
-
|
|
17
|
-
1. `aodw-constitution.md`: 核心法则和模式。
|
|
18
|
-
2. `rt-manager.md`: RT 生命周期和 Profile (Spec-Lite vs Spec-Full)。
|
|
19
|
-
3. `ai-knowledge-rules.md`: 文档和目录结构。
|
|
20
|
-
4. `ai-interaction-rules.md`: 如何提问和确认决策。
|
|
21
|
-
5. `module-doc-rules.md`: 模块文档标准。
|
|
22
|
-
|
|
23
|
-
**兜底机制**: 如果你无法直接读取这些文件,请要求用户提供它们。
|
|
24
|
-
|
|
25
|
-
## 3. 你的工作流
|
|
26
|
-
1. **检测**: 用户是否想要 Feature, Bug 修复或重构? -> 创建 RT。
|
|
27
|
-
2. **询问**: 使用 `ai-interaction-rules.md` 中的 决策型/信息型 问题格式。
|
|
28
|
-
3. **文档**: 创建 `RT/RT-XXX/` 并填充 `meta.yaml`, `spec.md`, `plan.md`。
|
|
29
|
-
4. **代码**: 实现变更。
|
|
30
|
-
5. **更新**: 保持 `RT/index.yaml` 和模块 README 更新。
|
|
31
|
-
|
|
32
|
-
## 4. 控制
|
|
33
|
-
- "暂停 AODW" -> 停止流程。
|
|
34
|
-
- "恢复 AODW" -> 重启流程。
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# AODW-Next Kernel Loader
|
|
2
|
-
# 版本: 4.0.0 (Unified)
|
|
3
|
-
|
|
4
|
-
## 0. 语言要求 (Language Requirement)
|
|
5
|
-
|
|
6
|
-
**中文交流 (Chinese Communication)**:所有回复、思考过程、任务清单、文档内容均须使用中文。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
你是一个 **AODW-Next (AI 编排开发工作流) 协作 Agent**。
|
|
11
|
-
|
|
12
|
-
## 1. 核心指令 (The Prime Directive)
|
|
13
|
-
你 **必须** 在开始任何任务前,优先读取并遵循以下 **Kernel (宪章)** 文件:
|
|
14
|
-
|
|
15
|
-
- .aodw-next/01-core/aodw-constitution.md
|
|
16
|
-
|
|
17
|
-
**注意**:
|
|
18
|
-
- 该文件是你行为的最高准则。
|
|
19
|
-
- 该文件包含了所有阶段的 **Context Loading Directives (上下文加载指令)**。
|
|
20
|
-
- 你必须根据宪章的指示,在不同阶段**按需加载**其他规则文件。
|
|
21
|
-
- ⚠️ **Token 优化原则**:只在需要时加载相关文件,避免一次性加载所有文件。详见 `.aodw-next/01-core/aodw-constitution.md` 第 6 节"文件加载策略"。
|
|
22
|
-
|
|
23
|
-
## 2. 命令索引 (Command Index)
|
|
24
|
-
|
|
25
|
-
当用户表达以下意图时,参考对应的核心规则:
|
|
26
|
-
|
|
27
|
-
| 用户意图 | 核心规则 | 说明 |
|
|
28
|
-
|---------|---------|------|
|
|
29
|
-
| **创建新 RT** | .aodw-next/02-workflow/rt-manager.md (Sec 1-4, 8-9)<br/>.aodw-next/01-core/ai-knowledge-rules.md (Sec 3.1)<br/>.aodw-next/01-core/ai-interaction-rules.md (Sec 1-4) | 生成 RT-ID,创建目录,Intake 流程 |
|
|
30
|
-
| **选择模式** | .aodw-next/02-workflow/rt-manager.md (Sec 5)<br/>.aodw-next/02-workflow/spec-full-profile.md<br/>.aodw-next/02-workflow/spec-lite-profile.md | 决策 Spec-Full/Spec-Lite,创建分支 |
|
|
31
|
-
| **工具初始化** | .aodw-next/05-tooling/ai-tools-init-rules.md | 初始化开发工具(ESLint、Prettier、Ruff、Black 等) |
|
|
32
|
-
| **项目概览初始化** | .aodw-next/01-core/ai-project-overview-rules.md | 初始化或完善项目概览信息(技术栈、架构、模块等) |
|
|
33
|
-
| **分析阶段** | .aodw-next/03-standards/ai-coding-rules.md (Sec 2-3)<br/>.aodw-next/01-core/ai-knowledge-rules.md (Sec 3.4) | 影响分析、不变量检查,更新 impact.md, invariants.md |
|
|
34
|
-
| **实现阶段** | .aodw-next/03-standards/ai-coding-rules.md (Sec 6)<br/>.aodw-next/01-core/ai-knowledge-rules.md (Sec 3.5)<br/>.aodw-next/01-core/module-doc-rules.md | 代码实现、测试编写、模块文档更新 |
|
|
35
|
-
| **验证阶段** | .aodw-next/01-core/ai-knowledge-rules.md (Sec 5) | 验证文档与代码一致,检查 RT 完整性 |
|
|
36
|
-
| **CSF 审查** | .aodw-next/01-core/csf-thinking-framework.md | 执行 CSF 思维框架审查(以终为始、结构化分解、关键要素识别等) |
|
|
37
|
-
| **执行需求审计** | .aodw-next/04-auditors/aodw-requirement-auditor-rules.md | 调用需求阶段审计官,对需求文档进行审计(自动触发或手动触发) |
|
|
38
|
-
| **执行开发审计** | .aodw-next/04-auditors/aodw-development-auditor-rules.md | 调用开发阶段审计官,对代码进行审计(自动触发或手动触发) |
|
|
39
|
-
| **执行综合审计** | .aodw-next/04-auditors/aodw-full-auditor-rules.md | 调用综合审计官,执行全流程审计(需求 + 开发) |
|
|
40
|
-
| **完成 RT** | .aodw-next/01-core/git-discipline.md<br/>.aodw-next/01-core/ai-knowledge-rules.md (Sec 9) | 合并分支,知识蒸馏,更新状态 |
|
|
41
|
-
| **打开 RT** | .aodw-next/02-workflow/rt-manager.md | 打开已有 RT,加载上下文 |
|
|
42
|
-
| **流程控制** | .aodw-next/01-core/ai-interaction-rules.md (Sec 5) | 暂停/恢复流程 |
|
|
43
|
-
|
|
44
|
-
## 3. RT 生命周期
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
创建 → 立项 → 决策 → 分析 → 实现 → 验证 → 完成
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
每个阶段对应的核心规则和操作,详见上述命令索引。
|
|
51
|
-
|
|
52
|
-
## 4. 关键检查点
|
|
53
|
-
|
|
54
|
-
### 4.1 分支管理(必须)
|
|
55
|
-
- 所有代码修改必须在 feature 分支上进行
|
|
56
|
-
- 严禁在 main/master 分支直接修改业务代码
|
|
57
|
-
- 在修改代码前必须验证当前分支
|
|
58
|
-
|
|
59
|
-
### 4.2 Plan 批准节点(必须)
|
|
60
|
-
- Plan 完成后,必须执行 CSF 审查
|
|
61
|
-
- Plan 批准前必须通过 CSF 审查
|
|
62
|
-
- 严禁未获批准前开始修改代码
|
|
63
|
-
|
|
64
|
-
### 4.3 提交前确认(必须)
|
|
65
|
-
- 代码修改完成后,必须展示 git status 和关键 diff
|
|
66
|
-
- 询问用户"修改已完成,是否提交?"
|
|
67
|
-
- 严禁未获用户确认前直接 Commit
|
|
68
|
-
|
|
69
|
-
## 5. 兜底机制
|
|
70
|
-
如果你无法读取 .aodw-next/01-core/aodw-constitution.md,请立即停止并要求用户提供该文件。
|
package/docs/README.md
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# AODW 用户文档
|
|
2
|
-
|
|
3
|
-
本目录包含 **AODW 用户文档**,这些文档会随 CLI 一起发布,安装到用户项目的 `.aodw/docs/` 目录。
|
|
4
|
-
|
|
5
|
-
## 📚 文档列表
|
|
6
|
-
|
|
7
|
-
### 平台评估与选择
|
|
8
|
-
- **adapter-evaluation.md** - 各平台能力评估和对比
|
|
9
|
-
- **platform-matrix.md** - 平台功能矩阵
|
|
10
|
-
|
|
11
|
-
### 迁移与升级
|
|
12
|
-
- **migration-guide-0.2.0.md** - v0.1.x → v0.2.0 迁移指南
|
|
13
|
-
- **installation-variants.md** - legacy 与 next 双版本安装方案
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 🔧 开发者文档
|
|
18
|
-
|
|
19
|
-
如果你是 AODW 维护者或想深入了解架构,请查看 `/dev-docs/` 目录:
|
|
20
|
-
|
|
21
|
-
- 架构分析
|
|
22
|
-
- 实施计划
|
|
23
|
-
- 完成报告
|
|
24
|
-
- 跨平台配置指南
|
|
25
|
-
|
|
26
|
-
这些文档不会被发布到 NPM 包中。
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# AODW 平台适配器能力评估报告
|
|
2
|
-
|
|
3
|
-
## 1. 评估目标
|
|
4
|
-
验证在 RT-010 实施“轻量级引用模式”后,各开发平台(Cursor, Claude, Gemini, General)是否仍能完整执行 AODW 流程(Intake -> Decision -> Spec -> Plan -> Execution -> Verification)。
|
|
5
|
-
|
|
6
|
-
## 2. Cursor (aodw.mdc)
|
|
7
|
-
- **机制**: `.cursor/rules` (Globs: `*`, AlwaysApply: `true`)
|
|
8
|
-
- **引用方式**: 显式列出 `@.aodw/xxx.md`。
|
|
9
|
-
- **执行逻辑**:
|
|
10
|
-
- Cursor 的 Composer/Agent 模式在看到 `@file` 语法时,通常会尝试解析或提示用户引用。
|
|
11
|
-
- 即使不自动展开,`aodw.mdc` 中的指令 "You MUST read..." 会促使具备文件读取工具(如 `grep`, `read_file`)的 Agent 主动获取内容。
|
|
12
|
-
- **覆盖度**: **高**。
|
|
13
|
-
- Cursor 具备强大的工具调用能力,"引用模式"非常适合它。它不需要将所有规则塞入 System Prompt,而是按需读取。
|
|
14
|
-
- **潜在风险**: 如果用户使用的是不支持工具的旧版 Cursor 模型,或者禁用了文件读取,AI 可能无法获取核心规则。
|
|
15
|
-
- **结论**: **完全可行**,且更优(节省上下文)。
|
|
16
|
-
|
|
17
|
-
## 3. Claude (CLAUDE.md)
|
|
18
|
-
- **机制**: Claude Projects (Project Instructions + Project Knowledge)。
|
|
19
|
-
- **引用方式**: `CLAUDE.md` 作为 Instructions,核心规则文件作为 Project Knowledge。
|
|
20
|
-
- **执行逻辑**:
|
|
21
|
-
- 用户必须将 `.aodw/` 目录下的核心文件添加到 "Project Knowledge" 中。
|
|
22
|
-
- 只要文件在 Knowledge 中,Claude 就能通过 RAG 或长上下文完美检索到。
|
|
23
|
-
- `CLAUDE.md` 中的 "Required Reading" 清单起到了索引的作用,引导 Claude 去 Knowledge 中查找。
|
|
24
|
-
- **覆盖度**: **高** (前提是配置正确)。
|
|
25
|
-
- **潜在风险**: 用户忘记将 `.aodw/` 文件添加到 Project Knowledge。
|
|
26
|
-
- **结论**: **可行**,依赖用户配置。
|
|
27
|
-
|
|
28
|
-
## 4. Gemini (GEMINI.md)
|
|
29
|
-
- **机制**: Long Context Window (1M+ tokens)。
|
|
30
|
-
- **引用方式**: `GEMINI.md` 指示 "You MUST load and follow..."。
|
|
31
|
-
- **执行逻辑**:
|
|
32
|
-
- Gemini 通常用于一次性加载整个仓库或大量文件。
|
|
33
|
-
- 只要 `.aodw/` 目录在上传/加载的文件列表中,Gemini 就能理解并执行。
|
|
34
|
-
- 它的超长上下文使得"引用"和"内联"在理解上几乎没有区别,但"引用"能让 Prompt 更清晰。
|
|
35
|
-
- **覆盖度**: **极高**。
|
|
36
|
-
- **结论**: **完全可行**。
|
|
37
|
-
|
|
38
|
-
## 5. General Agents (AGENTS.md)
|
|
39
|
-
- **机制**: System Prompt / User Prompt。
|
|
40
|
-
- **引用方式**: 文本指令 "You must read..."。
|
|
41
|
-
- **执行逻辑**:
|
|
42
|
-
- 这是一个通用回退方案。
|
|
43
|
-
- 如果 Agent 有文件访问权限(如 AutoGPT, LangChain agent),它会去读取。
|
|
44
|
-
- 如果 Agent 是网页版聊天框(无文件权限),用户需要手动粘贴核心规则内容。
|
|
45
|
-
- **覆盖度**: **中** (取决于 Agent 能力)。
|
|
46
|
-
- **结论**: **可行**,作为标准协议存在。
|
|
47
|
-
|
|
48
|
-
## 6. 总体结论
|
|
49
|
-
"轻量级引用模式"将 AODW 的执行压力从 **Prompt 长度** 转移到了 **AI 的上下文获取能力** (工具调用、RAG、长窗口) 上。
|
|
50
|
-
鉴于当前主流 AI 编码工具(Cursor, Claude Projects, Gemini 1.5)都具备极强的文件感知能力,这种转移是符合技术趋势的,能带来更低的 Token 消耗和更高的规则一致性。
|
|
51
|
-
|
|
52
|
-
## 7. 建议改进
|
|
53
|
-
为了降低 Claude 和 General 模式下的配置风险,建议在适配器中增加一行:
|
|
54
|
-
> "If you cannot read these files directly, ask the user to provide them."
|
|
55
|
-
> (如果无法直接读取这些文件,请要求用户提供。)
|
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
# 后端开发规范(FastAPI / Python)
|
|
2
|
-
|
|
3
|
-
> 适用技术栈:
|
|
4
|
-
> - 语言:**Python 3.11+**
|
|
5
|
-
> - Web 框架:**FastAPI**
|
|
6
|
-
> - 运行:**Uvicorn / Gunicorn+Uvicorn worker**
|
|
7
|
-
> - 数据库:MySQL / PostgreSQL / SQLite 等
|
|
8
|
-
> - ORM:可选 SQLAlchemy / Tortoise ORM / 其他
|
|
9
|
-
> - 工具:**Ruff + Black/Blue + pre-commit**
|
|
10
|
-
> - 使用场景:人类开发 + AI 工具(Cursor、Claude Code 等)
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 1. 工具与质量控制
|
|
15
|
-
|
|
16
|
-
### 1.1 静态检查 & 格式化
|
|
17
|
-
|
|
18
|
-
- **Ruff**(推荐)
|
|
19
|
-
- 替代 Flake8 / isort / 部分 pylint 功能
|
|
20
|
-
- 负责:语法错误、未使用变量、import 排序、复杂度检查等
|
|
21
|
-
- **Black** 或 **Blue**
|
|
22
|
-
- 统一代码格式(缩进、引号、换行、最大行长等)
|
|
23
|
-
|
|
24
|
-
> 原则:
|
|
25
|
-
> - Ruff 负责“对/错、好/坏”;
|
|
26
|
-
> - Black/Blue 负责“长什么样”。
|
|
27
|
-
|
|
28
|
-
### 1.2 建议配置(示例)
|
|
29
|
-
|
|
30
|
-
在 `pyproject.toml` 中:
|
|
31
|
-
|
|
32
|
-
```toml
|
|
33
|
-
[tool.black]
|
|
34
|
-
line-length = 100
|
|
35
|
-
target-version = ["py311"]
|
|
36
|
-
|
|
37
|
-
[tool.ruff]
|
|
38
|
-
line-length = 100
|
|
39
|
-
target-version = "py311"
|
|
40
|
-
|
|
41
|
-
[tool.ruff.lint]
|
|
42
|
-
select = ["E", "F", "PLR", "I"]
|
|
43
|
-
ignore = []
|
|
44
|
-
|
|
45
|
-
# E, F: 基本错误/语法问题
|
|
46
|
-
# I: import 排序
|
|
47
|
-
# PLR: 复杂度/过长函数等(可控制“怪物函数”)
|
|
48
|
-
|
|
49
|
-
[tool.ruff.lint.per-file-ignores]
|
|
50
|
-
# 如果有 __init__.py 可以适当放宽
|
|
51
|
-
"__init__.py" = ["F401"]
|
|
52
|
-
|
|
53
|
-
说明:
|
|
54
|
-
• 后续可按需开启更多规则,例如 D(docstring)等。
|
|
55
|
-
• 行长统一 100 字符,便于浏览。
|
|
56
|
-
|
|
57
|
-
1.3 文件大小与复杂度限制
|
|
58
|
-
|
|
59
|
-
统一约束(给人和 AI 都要遵守):
|
|
60
|
-
• 单文件行数(不强制,但作为警戒线):
|
|
61
|
-
• 路由文件:≤ 300 行,推荐 ≤ 250 行
|
|
62
|
-
• service / repository 文件:≤ 300 行
|
|
63
|
-
• schema / model / utils:≤ 200 行
|
|
64
|
-
• 单个函数:
|
|
65
|
-
• 函数主体代码行数:≤ 60 行
|
|
66
|
-
• 分支过多、嵌套过深要拆分为子函数
|
|
67
|
-
• 复杂度:
|
|
68
|
-
• 圈复杂度 complexity(Ruff PLR 规则)建议 ≤ 10
|
|
69
|
-
|
|
70
|
-
⸻
|
|
71
|
-
|
|
72
|
-
2. 项目目录结构规范
|
|
73
|
-
|
|
74
|
-
2.1 顶层结构(backend)
|
|
75
|
-
backend/
|
|
76
|
-
app/
|
|
77
|
-
api/ # 路由 (FastAPI routers)
|
|
78
|
-
core/ # 核心配置 & 启动 & 依赖注入
|
|
79
|
-
models/ # ORM 模型
|
|
80
|
-
schemas/ # Pydantic 模型 (请求/响应)
|
|
81
|
-
services/ # 业务服务层 (领域逻辑)
|
|
82
|
-
repositories/ # 数据访问层 (DAO)
|
|
83
|
-
utils/ # 工具函数、公用模块
|
|
84
|
-
main.py # FastAPI 入口
|
|
85
|
-
tests/ # 单元测试/集成测试
|
|
86
|
-
pyproject.toml or requirements.txt
|
|
87
|
-
Dockerfile
|
|
88
|
-
|
|
89
|
-
原则:
|
|
90
|
-
• api/ 只做 HTTP 协议层:路由定义 + 请求/响应映射。
|
|
91
|
-
• services/ 负责业务逻辑和用例流转。
|
|
92
|
-
• repositories/ 负责数据库读写操作。
|
|
93
|
-
• schemas/ 是 API 契约(Pydantic)。
|
|
94
|
-
• models/ 是数据库层(ORM)。
|
|
95
|
-
|
|
96
|
-
2.2 子目录结构示例
|
|
97
|
-
app/
|
|
98
|
-
api/
|
|
99
|
-
v1/
|
|
100
|
-
project.py # /api/v1/projects 相关路由
|
|
101
|
-
user.py # /api/v1/users 相关路由
|
|
102
|
-
auth.py # 登录/鉴权相关路由
|
|
103
|
-
|
|
104
|
-
core/
|
|
105
|
-
config.py # 配置,读取环境变量
|
|
106
|
-
security.py # 安全相关 (JWT, 密码加密等)
|
|
107
|
-
deps.py # Depends 使用的通用依赖,如 db, current_user
|
|
108
|
-
|
|
109
|
-
models/
|
|
110
|
-
project.py # Project ORM 模型
|
|
111
|
-
user.py # User ORM 模型
|
|
112
|
-
__init__.py # 导出所有 models
|
|
113
|
-
|
|
114
|
-
schemas/
|
|
115
|
-
project.py # Project 相关请求/响应 schema
|
|
116
|
-
user.py # User 相关 schema
|
|
117
|
-
common.py # 通用 schema,如分页等
|
|
118
|
-
|
|
119
|
-
services/
|
|
120
|
-
project_service.py # 项目相关业务逻辑
|
|
121
|
-
user_service.py # 用户相关业务逻辑
|
|
122
|
-
auth_service.py # 鉴权、token 逻辑
|
|
123
|
-
|
|
124
|
-
repositories/
|
|
125
|
-
project_repository.py
|
|
126
|
-
user_repository.py
|
|
127
|
-
|
|
128
|
-
utils/
|
|
129
|
-
datetime.py # 时间处理
|
|
130
|
-
pagination.py # 分页工具
|
|
131
|
-
logging.py # 日志封装
|
|
132
|
-
|
|
133
|
-
main.py # 创建 FastAPI app,挂载路由
|
|
134
|
-
3. 命名与分层规范
|
|
135
|
-
|
|
136
|
-
3.1 命名规则
|
|
137
|
-
• 文件:
|
|
138
|
-
• 模块/领域:project.py, user.py, auth.py
|
|
139
|
-
• service:project_service.py
|
|
140
|
-
• repository:project_repository.py
|
|
141
|
-
• schema:project.py(内部类型名区分:ProjectCreate, ProjectUpdate, ProjectOut)
|
|
142
|
-
• 类:
|
|
143
|
-
• ORM 模型:Project, User, UserRole
|
|
144
|
-
• Pydantic 模型:ProjectCreate, ProjectUpdate, ProjectDetail
|
|
145
|
-
• 函数:
|
|
146
|
-
• 使用动词开头的 snake_case:create_project, get_user_by_id
|
|
147
|
-
|
|
148
|
-
3.2 分层职责
|
|
149
|
-
|
|
150
|
-
api 层(路由层):
|
|
151
|
-
• 职责:
|
|
152
|
-
• 定义 URL 路径及 HTTP 方法
|
|
153
|
-
• 参数绑定 & schema 校验
|
|
154
|
-
• 调用对应 service 层
|
|
155
|
-
• 处理与 HTTP 协议相关的细节(状态码、响应模型)
|
|
156
|
-
• 禁止:
|
|
157
|
-
• 写复杂业务逻辑
|
|
158
|
-
• 直接操作数据库
|
|
159
|
-
|
|
160
|
-
service 层:
|
|
161
|
-
• 职责:
|
|
162
|
-
• 聚合业务用例逻辑(如创建项目时检查权限、写多表等)
|
|
163
|
-
• 事务控制(必要时)
|
|
164
|
-
• 调用 repository 完成数据读写
|
|
165
|
-
• 禁止:
|
|
166
|
-
• 直接处理 HTTP 请求/响应对象(Request, Response)
|
|
167
|
-
|
|
168
|
-
repository 层:
|
|
169
|
-
• 职责:
|
|
170
|
-
• 封装具体的数据访问逻辑(ORM 操作)
|
|
171
|
-
• 提供清晰的接口,如 get_project_by_id, list_projects
|
|
172
|
-
• 禁止:
|
|
173
|
-
• 引入业务逻辑,避免与 service 互相污染
|
|
174
|
-
|
|
175
|
-
schemas 层:
|
|
176
|
-
• 职责:
|
|
177
|
-
• 定义请求与响应的数据结构(Pydantic)
|
|
178
|
-
• 提供类型安全、可读性好的数据契约
|
|
179
|
-
• 命名建议:
|
|
180
|
-
• 输入:XxxCreate, XxxUpdate
|
|
181
|
-
• 输出:XxxOut, XxxDetail, XxxListItem
|
|
182
|
-
|
|
183
|
-
models 层:
|
|
184
|
-
• 职责:
|
|
185
|
-
• 定义数据库表结构、关系、索引等
|
|
186
|
-
• 与 schemas 区分开,避免直接把 ORM 暴露给外部。
|
|
187
|
-
|
|
188
|
-
⸻
|
|
189
|
-
|
|
190
|
-
4. Type Hints & 异步规范
|
|
191
|
-
|
|
192
|
-
4.1 强制使用类型注解
|
|
193
|
-
• 所有对外函数(api/service/repository)必须有明确类型注解:
|
|
194
|
-
• 参数类型
|
|
195
|
-
• 返回值类型
|
|
196
|
-
• 示例:
|
|
197
|
-
async def get_project(project_id: int, db: Session) -> Project | None:
|
|
198
|
-
...
|
|
199
|
-
|
|
200
|
-
4.2 异步规范
|
|
201
|
-
• FastAPI 路由 handler 默认使用 async def
|
|
202
|
-
• 如果 service / repository 中使用了 I/O(数据库、网络),建议全链路 async
|
|
203
|
-
• 不要在 async 函数中直接调用阻塞 I/O(如同步数据库驱动),必要时使用线程池/异步驱动
|
|
204
|
-
|
|
205
|
-
⸻
|
|
206
|
-
|
|
207
|
-
5. 代码结构与文件粒度
|
|
208
|
-
|
|
209
|
-
5.1 路由文件(api)
|
|
210
|
-
• 单个文件建议最多包含:
|
|
211
|
-
• 1~2 个相关资源的路由
|
|
212
|
-
• 路由函数数量不宜超过 10~15 个
|
|
213
|
-
• 每个路由 handler:
|
|
214
|
-
• 主要处理参数解析、调用 service、返回结果
|
|
215
|
-
• 函数主体 ≤ 40 行,复杂逻辑下沉 service
|
|
216
|
-
|
|
217
|
-
5.2 service 文件
|
|
218
|
-
• 按领域拆分,如 project_service.py, user_service.py
|
|
219
|
-
• 单个 service 文件:
|
|
220
|
-
• 建议处理一个领域的核心用例
|
|
221
|
-
• 多到一定程度时,可以拆文件或拆类
|
|
222
|
-
• 常见用例:
|
|
223
|
-
• create_project
|
|
224
|
-
• update_project
|
|
225
|
-
• delete_project
|
|
226
|
-
• list_projects
|
|
227
|
-
• get_project_detail
|
|
228
|
-
|
|
229
|
-
5.3 repository 文件
|
|
230
|
-
• 每个 repository 文件对应一个主领域模型
|
|
231
|
-
• 函数名力求语义清晰,如:
|
|
232
|
-
• get_project_by_id
|
|
233
|
-
• get_projects_by_owner
|
|
234
|
-
• create_project
|
|
235
|
-
• update_project
|
|
236
|
-
• delete_project
|
|
237
|
-
|
|
238
|
-
⸻
|
|
239
|
-
|
|
240
|
-
6. 配置与环境变量
|
|
241
|
-
• 使用 core/config.py 集中管理配置:
|
|
242
|
-
|
|
243
|
-
from pydantic_settings import BaseSettings
|
|
244
|
-
|
|
245
|
-
class Settings(BaseSettings):
|
|
246
|
-
env: str = "dev"
|
|
247
|
-
database_url: str
|
|
248
|
-
secret_key: str
|
|
249
|
-
access_token_expire_minutes: int = 60
|
|
250
|
-
|
|
251
|
-
class Config:
|
|
252
|
-
env_file = ".env"
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
settings = Settings()
|
|
256
|
-
|
|
257
|
-
• 业务代码通过 from app.core.config import settings 获取配置
|
|
258
|
-
• 不在业务代码中直接使用 os.getenv
|
|
259
|
-
|
|
260
|
-
⸻
|
|
261
|
-
|
|
262
|
-
7. 日志与错误处理
|
|
263
|
-
• 提供统一日志封装 utils/logging.py
|
|
264
|
-
• 使用标准库 logging 或 structlog,统一格式
|
|
265
|
-
• 异常处理建议:
|
|
266
|
-
• 自定义业务异常类 BusinessError
|
|
267
|
-
• 在 FastAPI 中注册全局异常处理器,将业务异常转换为友好 HTTP 响应
|
|
268
|
-
|
|
269
|
-
⸻
|
|
270
|
-
|
|
271
|
-
8. 测试规范(可按项目成熟度逐步引入)
|
|
272
|
-
• 所有关键业务逻辑(service)建议有对应测试:
|
|
273
|
-
• 测试文件命名:test_project_service.py
|
|
274
|
-
• 测试目录结构:
|
|
275
|
-
|
|
276
|
-
tests/
|
|
277
|
-
api/
|
|
278
|
-
test_project_api.py
|
|
279
|
-
services/
|
|
280
|
-
test_project_service.py
|
|
281
|
-
repositories/
|
|
282
|
-
test_project_repository.py
|
|
283
|
-
|
|
284
|
-
9. AI(Cursor / Claude 等)使用规则
|
|
285
|
-
|
|
286
|
-
本节是专门给 AI 的“硬约束”,建议原样写入系统提示或规则文件中。
|
|
287
|
-
|
|
288
|
-
当 AI 在本项目中生成后端代码时,必须遵守以下规则:
|
|
289
|
-
1. 目录与分层:
|
|
290
|
-
• 所有新路由文件放在:app/api/v1/ 下;
|
|
291
|
-
• 所有业务逻辑放在:app/services/ 对应文件中;
|
|
292
|
-
• 所有数据访问逻辑放在:app/repositories/;
|
|
293
|
-
• 所有 Pydantic 模型放在:app/schemas/;
|
|
294
|
-
• 所有 ORM 模型放在:app/models/;
|
|
295
|
-
• 工具函数放在:app/utils/;
|
|
296
|
-
• 不允许将路由、业务逻辑、数据库操作全部写进一个文件。
|
|
297
|
-
2. 文件大小与函数复杂度:
|
|
298
|
-
• 路由文件 ≤ 300 行;
|
|
299
|
-
• service / repository 文件 ≤ 300 行;
|
|
300
|
-
• 单个函数 ≤ 60 行;
|
|
301
|
-
• 如果实现完整功能会超过限制:
|
|
302
|
-
• 必须先给出重构后的文件拆分方案(例如新增 service 函数或 repository 函数)
|
|
303
|
-
• 再按文件分别实现,而不是在一个函数或一个文件里堆积。
|
|
304
|
-
3. 实现流程:
|
|
305
|
-
• 第一步:在新增功能时,先输出【目录和分层设计】:
|
|
306
|
-
• 需要新增/修改哪些 api/service/repository/schema 文件;
|
|
307
|
-
• 每个函数的职责是什么。
|
|
308
|
-
• 第二步:按顺序生成每个文件的代码,每次只输出一个文件内容。
|
|
309
|
-
• 第三步:对已有巨型文件进行修改时,优先提出“拆分方案”,再实施重构。
|
|
310
|
-
4. 代码风格与类型:
|
|
311
|
-
• 所有新增函数必须使用类型注解,包括参数和返回值;
|
|
312
|
-
• 路由 handler 使用 async def;
|
|
313
|
-
• 业务逻辑优先放到 service,而不是直接写在路由中;
|
|
314
|
-
• 数据库访问优先通过 repository 函数,而不是直接在 service 中写 ORM 查询。
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
10. 示例:新增一个“项目”功能的标准落地方式(AI 指导)
|
|
319
|
-
|
|
320
|
-
当需要新增一个“项目归档(archive)”功能时,AI 应按如下流程设计:
|
|
321
|
-
1. 在 app/api/v1/project.py 中新增路由:
|
|
322
|
-
• POST /projects/{project_id}/archive
|
|
323
|
-
• handler 只负责:
|
|
324
|
-
• 获取 project_id
|
|
325
|
-
• 获取当前用户
|
|
326
|
-
• 调用 project_service.archive_project(...)
|
|
327
|
-
• 返回处理结果
|
|
328
|
-
2. 在 app/services/project_service.py 中新增函数:
|
|
329
|
-
• async def archive_project(project_id: int, current_user: User, db: Session) -> ProjectOut: ...
|
|
330
|
-
3. 在 app/repositories/project_repository.py 中新增或复用函数:
|
|
331
|
-
• async def mark_project_archived(db: Session, project_id: int) -> Project: ...
|
|
332
|
-
4. 在 app/schemas/project.py 中确认是否需要新增响应模型:
|
|
333
|
-
• 如 ProjectStatusUpdate / 在 ProjectOut 中包含 is_archived 字段。
|
|
334
|
-
|
|
335
|
-
|