For the complete documentation index, see llms.txt. This page is also available as Markdown.

42 - Action Center

Overview

The Action Center is a centralized order approval system for semi-automated trading. When enabled, orders are queued for manual approval before execution, essential for managed accounts and regulatory compliance (RA - Relationship Advisor mode).

Architecture Diagram

┌──────────────────────────────────────────────────────────────────────────────┐
│                        Action Center Architecture                            │
└──────────────────────────────────────────────────────────────────────────────┘

                           External Order Request
                           (TradingView, API, etc.)


┌─────────────────────────────────────────────────────────────────────────────┐
│                          Order Router Service                                │
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  should_route_to_pending(api_key, api_type)                          │   │
│  │                                                                      │   │
│  │  Check 1: Is user in semi_auto mode?                                │   │
│  │  Check 2: Is this a restricted operation?                           │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    │                                         │
│              ┌─────────────────────┴─────────────────────┐                  │
│              │                                           │                   │
│         Auto Mode                                   Semi-Auto Mode           │
│         or Restricted                               (Queue Order)            │
│              │                                           │                   │
│              ▼                                           ▼                   │
│      Execute Immediately                        Create Pending Order         │
│      with Broker                                in Action Center             │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│                          Action Center UI                                    │
│                          /action-center                                      │
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  [Pending (3)]  [Approved]  [Rejected]  [All Orders]                │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  Statistics                                                          │   │
│  │  Pending: 3  │  Buy: 2  │  Sell: 1  │  Approved: 15  │  Rejected: 2 │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  Strategy │ Symbol │ Exchange │ Action │ Qty │ Price │ Actions      │   │
│  ├─────────────────────────────────────────────────────────────────────┤   │
│  │  MyStrat  │ SBIN   │ NSE      │ BUY    │ 100 │ MKT   │ ✓ Approve    │   │
│  │           │        │          │        │     │       │ ✗ Reject     │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│                         [Approve All Pending]                               │
└─────────────────────────────────────────────────────────────────────────────┘

                          User clicks Approve


┌─────────────────────────────────────────────────────────────────────────────┐
│                    Pending Order Execution Service                           │
│                                                                              │
│  1. Mark order status = 'approved'                                          │
│  2. Execute order with broker API                                           │
│  3. Get broker order status                                                 │
│  4. Update broker_order_id and broker_status                                │
│  5. Emit SocketIO event                                                     │
└─────────────────────────────────────────────────────────────────────────────┘

Order Mode Configuration

Setting Order Mode

Mode Toggle API

Semi-Auto Workflow

Database Schema

pending_orders Table

Indexes

Executor-Supported Queued Types

API Type
Description

placeorder

Standard order

smartorder

Position-aware order

basketorder

Multiple orders

splitorder

Split large orders

optionsorder

Options contracts

Approval dispatch in services/pending_order_execution_service.py currently handles only these five API types.

optionsmultiorder and placegttorder services can currently call queue_order() in semi-auto mode, but the approval executor has no matching dispatch branch. Such rows are stored, then approval reports Unknown order type and marks broker execution rejected. This is a known implementation conflict, not supported Action Center behavior.

Restricted Operations

These operations are never queued. Read-only operations execute immediately; destructive operations apply their own service policy and are blocked in semi-auto mode unless analyzer behavior explicitly permits them.

Operation
Reason

closeposition

Blocked by close-position service in semi-auto live mode

cancelorder

Blocked by cancel-order service in semi-auto live mode

cancelallorder

Blocked by cancel-all service in semi-auto live mode

modifyorder

Blocked by modify-order service in semi-auto live mode

modifygttorder / cancelgttorder

Blocked because a delayed change may target a stale trigger

orderstatus

Status query

orderbook

Data retrieval

tradebook

Data retrieval

positionbook / openposition

Data retrieval

holdings

Data retrieval

funds

Data retrieval

API Endpoints

Get Orders

Response:

Approve Order

Response:

Reject Order

Approve All

Response:

Delete Order

Note: Only approved or rejected orders can be deleted.

Get Pending Count

Response:

Real-Time Updates

SocketIO Events

Event
Trigger
Data

pending_order_created

New order queued

order_id, user_id

pending_order_updated

Approve/Reject

order_id, status

Frontend Handling

React Component Features

Tabbed Interface

Statistics Dashboard

Order Table Columns

Column
Content

Strategy

Strategy name

Symbol

Trading symbol

Exchange

NSE/NFO/MCX badge

Action

BUY (green) / SELL (red)

Quantity

Order quantity

Price

Price or "MARKET"

Order Type

placeorder/smartorder/etc

Product

CNC/MIS/NRML badge

Created

Relative time ("5 min ago")

Actions

Approve/Reject/Delete buttons

Expandable Details

Click chevron to view raw order data:

Service Implementation

Order Router

Queue Order

Execute Approved Order

Security & Compliance

Audit Trail

All actions are logged with:

  • Timestamp (IST)

  • Username

  • Action taken

  • Reason (for rejections)

API Key Security

  • API keys never stored in pending_orders

  • Only user_id reference maintained

  • Keys retrieved at execution time

Analyzer Mode Restriction

When in semi_auto mode, analyzer toggle is blocked to ensure RA compliance.

Key Files Reference

File
Purpose

database/action_center_db.py

PendingOrder model

services/action_center_service.py

Order parsing, stats

services/order_router_service.py

Route decisions

services/pending_order_execution_service.py

Execute approved

blueprints/orders.py

Action center routes

blueprints/apikey.py

Mode toggle

frontend/src/pages/ActionCenter.tsx

React UI

Last updated