This page describes four sub-modules of src/cluster_erp/modules/projects/. actions/ holds the actions of a project, from meetings or ad hoc. activities/ holds the activities of a project schedule, their dependency relations, and their links to materials. kickoffs/ holds the single kick-off meeting of a project, and meetings/ the weekly follow-up meetings. The schedule itself is on schedules.
Scope and source¶
- Defined in:
models.py,schemas.py,services.py,routes.py, andmetadata.pyofactions,activities,kickoffs, andmeetings. - Count: 6 tables; 8 action routes, 12 activity routes, 7 kick-off routes, and 6 meeting routes (
@router.decorators); 3ActionMetaentries.
Fields¶
| Entity | Table | Key fields | Source |
|---|---|---|---|
ProjectAction |
projects_actions |
project_id, source (kickoff, weekly, or adhoc), source_meeting_id, title, description, owner_id, due_at, status, completed_at, completed_by |
src/cluster_erp/modules/projects/actions/models.py:17-55, src/cluster_erp/modules/projects/actions/schemas.py:9-10 |
ProjectActivity |
projects_activities |
schedule_id, code, name, activity_type, planned_start, planned_end, work_qty_hours, work_center_group_ref, status, milestone_usage, release_successors, actual_at, ev_technique, budgeted_hours |
src/cluster_erp/modules/projects/activities/models.py:28-80 |
ProjectActivityRelation |
projects_activity_relations |
predecessor_id, successor_id, relation_type (FS, SS, FF, SF), lag_days |
src/cluster_erp/modules/projects/activities/models.py:83-108, src/cluster_erp/modules/projects/activities/schemas.py:18 |
ActivityMaterialLink |
projects_activity_material_links |
activity_id, project_item_id, bom_item_ref, qty |
src/cluster_erp/modules/projects/activities/models.py:111-135 |
KickoffMeeting |
projects_kickoffs |
project_id, scheduled_at, held_at, attendees_jsonb, checklist_items_jsonb, minutes_doc_id |
src/cluster_erp/modules/projects/kickoffs/models.py:17-56 |
WeeklyFollowupMeeting |
projects_weekly_meetings |
project_id, week_no, held_at, attendees_jsonb, summary |
src/cluster_erp/modules/projects/meetings/models.py:17-52 |
Activity types are engineering, procurement, production, assembly, milestone, and cost; statuses are planned, in_progress, done, and cancelled; the earned-value technique is 0_100, 50_50, or percent_complete (src/cluster_erp/modules/projects/activities/schemas.py:10-33).
Statuses and actions¶
An action moves from open to in_progress, and from either to done or cancelled; done and cancelled are terminal (src/cluster_erp/modules/projects/actions/services.py:20-25).
stateDiagram-v2 [*] --> open open --> in_progress open --> cancelled in_progress --> done in_progress --> cancelled
In prose: an action starts open, is worked on, and ends done or cancelled. The service refuses any other step (src/cluster_erp/modules/projects/actions/services.py:160-170).
| Action | Label | Condition | Endpoint | Permission | Source |
|---|---|---|---|---|---|
transition (action) |
Change Status | none; the service checks the step | POST /actions/{id}/transition |
action.assign |
src/cluster_erp/modules/projects/actions/metadata.py:95-104, src/cluster_erp/modules/projects/actions/routes.py:88 |
mark_held (kick-off) |
Mark as Held | none | POST /kickoffs/{id}/mark-held |
meeting.record |
src/cluster_erp/modules/projects/kickoffs/metadata.py:43-52, src/cluster_erp/modules/projects/kickoffs/routes.py:89 |
update_checklist (kick-off) |
Update Checklist | none | POST /kickoffs/{id}/checklist |
meeting.record |
src/cluster_erp/modules/projects/kickoffs/metadata.py:53-62, src/cluster_erp/modules/projects/kickoffs/routes.py:76 |
Routes¶
| Method and path | Permission | Source |
|---|---|---|
GET /actions/by-project/{project_id}, GET /actions/overdue, GET /actions/{action_id} |
project.read |
src/cluster_erp/modules/projects/actions/routes.py:25-61 |
POST /actions/; PUT, DELETE /actions/{action_id}; bulk delete |
action.assign, project.update |
src/cluster_erp/modules/projects/actions/routes.py:49-113 |
GET /activities/by-schedule/{schedule_id}, /for-project, /by-project/{project_id}, /{activity_id}, /{activity_id}/materials |
project.read |
src/cluster_erp/modules/projects/activities/routes.py:27-168 |
POST, PUT, DELETE activities, relations, and material links |
project.update |
src/cluster_erp/modules/projects/activities/routes.py:105-192 |
Kick-off routes under /kickoffs |
project.read, meeting.record |
src/cluster_erp/modules/projects/kickoffs/routes.py:23-101 |
Meeting routes under /meetings |
project.read, meeting.record |
src/cluster_erp/modules/projects/meetings/routes.py:23-85 |
Constraints and validation¶
- An activity needs an existing schedule, and its planned end may not precede its planned start (
src/cluster_erp/modules/projects/activities/services.py:97-121). - A relation may not link an activity to itself, both activities must be on the same schedule, and a relation that would create a cycle is refused (
src/cluster_erp/modules/projects/activities/services.py:154-211). - A material link needs a project item or a BOM item reference (
src/cluster_erp/modules/projects/activities/services.py:221-243). - Activity changes emit
ProjectActivityChanged(src/cluster_erp/modules/projects/activities/services.py:43-58). - A project has one live kick-off, and one live meeting per week number (
src/cluster_erp/modules/projects/kickoffs/models.py:20-27,src/cluster_erp/modules/projects/meetings/models.py:19-27). mark_heldstampsheld_atonce and emitsProjectKickoffCompleted(src/cluster_erp/modules/projects/kickoffs/services.py:101-121).GET /actions/overduelists actions whose due time has passed (src/cluster_erp/modules/projects/actions/services.py:51-70).- Creating an action emits
ProjectActionCreated(src/cluster_erp/modules/projects/actions/services.py:94). - Hours are
Numeric: work quantityNumeric(10, 2), budgeted hoursNumeric(12, 2), link quantityNumeric(14, 4)(src/cluster_erp/modules/projects/activities/models.py:43-45,src/cluster_erp/modules/projects/activities/models.py:71-73,src/cluster_erp/modules/projects/activities/models.py:132).
Terms introduced¶
| Term | Code identifier | Definition | Turkish term | Source |
|---|---|---|---|---|
| project action | ProjectAction |
A task with an owner and a due time, from a meeting or ad hoc. | Proje aksiyonu | src/cluster_erp/modules/projects/actions/models.py:17 |
| project activity | ProjectActivity |
One planned step of a project schedule. | Proje aktivitesi | src/cluster_erp/modules/projects/activities/models.py:28 |
| activity relation | ProjectActivityRelation |
A dependency between two activities, of type FS, SS, FF, or SF, with a lag. | Aktivite ilişkisi | src/cluster_erp/modules/projects/activities/models.py:83 |
| kick-off meeting | KickoffMeeting |
The opening meeting of a project with its checklist. | Başlangıç toplantısı | src/cluster_erp/modules/projects/kickoffs/models.py:17 |
Related pages¶
Verified against commit 92f8051 on 2026-11-13.