Metadata-Version: 2.4
Name: rainbow-rb-schemas
Version: 0.0.9.dev7
Summary: Rainbow Common Schema
Author-email: Derek <dfd1123@rainbow-robotics.com>
Requires-Python: <3.13,>=3.12
Description-Content-Type: text/markdown
Requires-Dist: flatbuffers<26.0.0,>=25.2.10
Requires-Dist: fastapi>=0.116.1
Requires-Dist: rainbow-rb-utils==0.0.9.dev7
Requires-Dist: rainbow-rb-flow-manager==0.0.9.dev7

# rb_schemas 사용 설명서

`rb_schemas`는 프로젝트 공통 Pydantic 스키마와 Flow Manager 연동 타입을 제공하는 패키지입니다.

## 1. 제공 구성

- 기본 스키마 (`base.py`)
  - `Response_ReturnValuePD`
  - `NJointfPD`, `NInputfPD`, `Vec3fPD` 등 공용 모델
- Flow Manager 연계 타입 (`sdk.py`)
  - `FlowManagerArgs`
- 스키마 유틸 (`utility.py`)
  - `Pick(base, *include)`
  - `Omit(base, *omit)`
- FBS 기반 자동 생성 모델
  - `rb_schemas.fbs_models.*`
  - 클래스명은 `...PD` 접미사 규칙

## 2. FlowManagerArgs 용도

`FlowManagerArgs`는 SDK 함수에서 Flow Manager 실행 컨텍스트를 받을 때 사용합니다.

```python
from rb_schemas.sdk import FlowManagerArgs

def my_step_handler(flow_manager_args: FlowManagerArgs | None = None):
    # step 로직 수행
    if flow_manager_args is not None:
        flow_manager_args.done()
```

## 3. Pick/Omit 사용 예제

```python
from pydantic import BaseModel
from rb_schemas.utility import Omit, Pick

class UserPD(BaseModel):
    user_id: str
    email: str
    password: str

UserPublicPD = Omit(UserPD, "password")
UserOnlyIdPD = Pick(UserPD, "user_id")
```

## 4. FBS 모델 사용 예제

```python
# 예: 자동 생성된 모델 import
from rb_schemas.fbs_models.nexus.v1.deploy_models import Response_Deploy_ProgressPD

payload = Response_Deploy_ProgressPD(
    sw_name="example",
    ip="127.0.0.1",
    mode="dev",
    tag="v1",
    percentage=80,
    service_name="manipulate",
    result="success",
)
```

## 5. 참고

- FBS 기반 모델은 `backend.flatc` 실행 시 자동 재생성됩니다.
- 생성 모델은 snake_case 필드와 alias(원본 CamelCase)를 함께 가질 수 있습니다.
