- 添加 IoT 核心业务表:运营商、IoT 卡、设备、号卡、套餐、订单等 - 添加分佣系统表:分佣规则、分佣记录、运营商结算等 - 添加轮询和流量管理表:轮询配置、流量使用记录等 - 添加财务和系统管理表:佣金提现、换卡申请等 - 实现完整的 GORM 模型和常量定义 - 添加数据库迁移脚本和详细文档 - 集成 OpenSpec 工作流工具(opsx 命令和 skills) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5.2 KiB
Archive a completed change in the experimental workflow.
Input: Optionally specify --change <name> after /opsx:archive. If omitted, MUST prompt for available changes.
Steps
-
If no change name provided, prompt for selection
Run
openspec list --jsonto get available changes. Use the AskUserQuestion tool to let the user select.Show only active changes (not already archived). Include the schema used for each change if available.
IMPORTANT: Do NOT guess or auto-select a change. Always let the user choose.
-
Check artifact completion status
Run
openspec status --change "<name>" --jsonto check artifact completion.Parse the JSON to understand:
schemaName: The workflow being usedartifacts: List of artifacts with their status (doneor other)
If any artifacts are not
done:- Display warning listing incomplete artifacts
- Prompt user for confirmation to continue
- Proceed if user confirms
-
Check task completion status
Read the tasks file (typically
tasks.md) to check for incomplete tasks.Count tasks marked with
- [ ](incomplete) vs- [x](complete).If incomplete tasks found:
- Display warning showing count of incomplete tasks
- Prompt user for confirmation to continue
- Proceed if user confirms
If no tasks file exists: Proceed without task-related warning.
-
Check if delta specs need syncing
Check if
specs/directory exists in the change with spec files.If delta specs exist, perform a quick sync check:
a. For each delta spec at
openspec/changes/<name>/specs/<capability>/spec.md:- Extract requirement names (lines matching
### Requirement: <name>) - Note which sections exist (ADDED, MODIFIED, REMOVED)
b. Check corresponding main spec at
openspec/specs/<capability>/spec.md:- If main spec doesn't exist → needs sync
- If main spec exists, check if ADDED requirement names appear in it
- If any ADDED requirements are missing from main spec → needs sync
c. Report findings:
If sync needed:
⚠️ Delta specs may not be synced: - specs/auth/spec.md → Main spec missing requirement "Token Refresh" - specs/api/spec.md → Main spec doesn't exist yet Would you like to sync now before archiving?- Use AskUserQuestion tool with options: "Sync now", "Archive without syncing"
- If user chooses sync, execute
/opsx:synclogic
If already synced (all requirements found):
- Proceed without prompting (specs appear to be in sync)
If no delta specs exist: Proceed without sync-related checks.
- Extract requirement names (lines matching
-
Perform the archive
Create the archive directory if it doesn't exist:
mkdir -p openspec/changes/archiveGenerate target name using current date:
YYYY-MM-DD-<change-name>Check if target already exists:
- If yes: Fail with error, suggest renaming existing archive or using different date
- If no: Move the change directory to archive
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name> -
Display summary
Show archive completion summary including:
- Change name
- Schema that was used
- Archive location
- Spec sync status (synced / not synced / no delta specs)
- Note about any warnings (incomplete artifacts/tasks)
Output On Success
## Archive Complete
**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** ✓ Synced to main specs
All artifacts complete. All tasks complete.
Output On Success (No Delta Specs)
## Archive Complete
**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** No delta specs
All artifacts complete. All tasks complete.
Output On Success With Warnings
## Archive Complete (with warnings)
**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** ⚠️ Not synced
**Warnings:**
- Archived with 2 incomplete artifacts
- Archived with 3 incomplete tasks
- Delta specs were not synced (user chose to skip)
Review the archive if this was not intentional.
Output On Error (Archive Exists)
## Archive Failed
**Change:** <change-name>
**Target:** openspec/changes/archive/YYYY-MM-DD-<name>/
Target archive directory already exists.
**Options:**
1. Rename the existing archive
2. Delete the existing archive if it's a duplicate
3. Wait until a different date to archive
Guardrails
- Always prompt for change selection if not provided
- Use artifact graph (openspec status --json) for completion checking
- Don't block archive on warnings - just inform and confirm
- Preserve .openspec.yaml when moving to archive (it moves with the directory)
- Quick sync check: look for requirement names in delta specs, verify they exist in main specs
- Show clear summary of what happened
- If sync is requested, use /opsx:sync approach (agent-driven)