Repository: luolingchun/flask-openapi3

Issue:
Schema.maximum type is incorrect
Environment:

- Python version: 3.12
- Operating system: Ubuntu 22.04
- Flask version: Not needed
- flask-openapi3 version: latest master

```python
from flask_openapi3 import Schema
from pydantic import BaseModel, Field

max_nr = 9223372036854775807
aa = Schema(maximum=max_nr)


class MyModel(BaseModel):
    nr: int = Field(le=max_nr)


print(aa.model_dump_json(exclude_unset=True))
print(MyModel.model_json_schema())

```
output:
```python
{"maximum":9.223372036854776e18}
{'properties': {'nr': {'maximum': 9223372036854775807, 'title': 'Nr', 'type': 'integer'}}, 'required': ['nr'], 'title': 'MyModel', 'type': 'object'}
```

Looking at the specs it says it must be a number https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.2. 
So maybe the correct typing for Schema.maximum needs to be `int | float` ?

This might apply to other fields like `minimum`, `exclusiveMaximum` etc.

Hints from issue comments:

Solution patch:
diff --git a/flask_openapi3/models/schema.py b/flask_openapi3/models/schema.py
index e4903ad..1329be6 100644
--- a/flask_openapi3/models/schema.py
+++ b/flask_openapi3/models/schema.py
@@ -19,7 +19,7 @@ class Schema(BaseModel):
     ref: Optional[str] = Field(alias="$ref", default=None)
     title: Optional[str] = None
     multipleOf: Optional[float] = Field(default=None, gt=0.0)
-    maximum: Optional[float] = None
+    maximum: Optional[Union[int, float]] = None
     exclusiveMaximum: Optional[float] = None
     minimum: Optional[float] = None
     exclusiveMinimum: Optional[float] = None


Test patch:
diff --git a/tests/test_openapi.py b/tests/test_openapi.py
index bdde317..6120017 100644
--- a/tests/test_openapi.py
+++ b/tests/test_openapi.py
@@ -4,7 +4,7 @@ from typing import Generic, TypeVar, List, Optional, Tuple, Literal
 
 from pydantic import BaseModel, Field
 
-from flask_openapi3 import OpenAPI
+from flask_openapi3 import OpenAPI, Schema
 
 T = TypeVar("T", bound=BaseModel)
 
@@ -571,3 +571,9 @@ def test_prefix_items(request):
  'required': ['my_tuple'],
  'title': 'TupleModel',
  'type': 'object'}
+
+
+def test_schema_bigint(request):
+    max_nr = 9223372036854775807
+    obj = Schema(maximum=max_nr)
+    assert obj.model_dump()["maximum"] == max_nr