Phase 03: Project CRUD - 3 plans created - 6 total tasks defined - Covers M2 milestone (full project management) Plan breakdown: - 03-01: Project service + /projects, /project new - 03-02: /project select, /project info - 03-03: /project models, /project delete Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.2 KiB
| phase | plan | type |
|---|---|---|
| 03-project-crud | 03 | execute |
Purpose: Enable users to configure which AI models a project uses and delete unwanted projects. Output: Working /project models and /project delete commands, completing full Project CRUD.
<execution_context> ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.mdPrior plan context
@.planning/phases/03-project-crud/03-02-SUMMARY.md
Relevant source files
@src/moai/core/services/project.py @src/moai/bot/handlers/projects.py
Established patterns:
- Service layer handles database operations
- Handlers are thin, delegate to services
- user_data["selected_project_id"] for current project
-
update_project_models(project_id: str, models: list[str]) -> Project | None: Update project's models list, return updated project or None if not found.
-
delete_project(project_id: str) -> bool: Delete project by ID, return True if deleted, False if not found. Cascade delete will handle discussions/rounds/messages via SQLAlchemy relationship config. python -c "from moai.core.services.project import update_project_models, delete_project" Both functions exist and are importable
/project models claude,gpt,gemini:
- Require project to be selected first
- Parse comma-separated model names from args
- Update via service, confirm: "Models updated: claude, gpt, gemini"
- If no args: show current models list
/project delete :
- Require explicit project ID (not name) for safety
- Delete via service, confirm: "Deleted project: {name}"
- If deleted project was selected, clear user_data["selected_project_id"]
- If not found: "Project not found."
Update /status handler (if exists) to show selected project info now that project CRUD is complete. ruff check src/moai/bot/handlers/projects.py /project models updates models, /project delete removes project, M2 milestone complete
Before declaring plan complete: - [ ] `ruff check src/moai/core/services/ src/moai/bot/handlers/` passes - [ ] All service functions importable - [ ] Full CRUD cycle works: new → select → info → models → delete<success_criteria>
- All tasks completed
- All verification checks pass
- /project models configures AI models for project
- /project delete removes project with confirmation
- M2 milestone complete (full project CRUD via Telegram) </success_criteria>
Summary should note M2 milestone completion and readiness for Phase 4 (Single Model Q&A).