aury-boot 0.0.5__py3-none-any.whl → 0.0.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. aury/boot/_version.py +2 -2
  2. aury/boot/application/__init__.py +15 -0
  3. aury/boot/application/adapter/__init__.py +112 -0
  4. aury/boot/application/adapter/base.py +511 -0
  5. aury/boot/application/adapter/config.py +242 -0
  6. aury/boot/application/adapter/decorators.py +259 -0
  7. aury/boot/application/adapter/exceptions.py +202 -0
  8. aury/boot/application/adapter/http.py +325 -0
  9. aury/boot/application/app/middlewares.py +7 -4
  10. aury/boot/application/config/multi_instance.py +42 -26
  11. aury/boot/application/config/settings.py +111 -191
  12. aury/boot/application/middleware/logging.py +14 -1
  13. aury/boot/commands/generate.py +22 -22
  14. aury/boot/commands/init.py +41 -9
  15. aury/boot/commands/templates/project/AGENTS.md.tpl +8 -4
  16. aury/boot/commands/templates/project/aury_docs/01-model.md.tpl +17 -16
  17. aury/boot/commands/templates/project/aury_docs/11-logging.md.tpl +82 -43
  18. aury/boot/commands/templates/project/aury_docs/12-admin.md.tpl +14 -14
  19. aury/boot/commands/templates/project/aury_docs/13-channel.md.tpl +40 -28
  20. aury/boot/commands/templates/project/aury_docs/14-mq.md.tpl +9 -9
  21. aury/boot/commands/templates/project/aury_docs/15-events.md.tpl +8 -8
  22. aury/boot/commands/templates/project/aury_docs/16-adapter.md.tpl +403 -0
  23. aury/boot/commands/templates/project/aury_docs/99-cli.md.tpl +19 -19
  24. aury/boot/commands/templates/project/config.py.tpl +10 -10
  25. aury/boot/commands/templates/project/env_templates/_header.tpl +10 -0
  26. aury/boot/commands/templates/project/env_templates/admin.tpl +49 -0
  27. aury/boot/commands/templates/project/env_templates/cache.tpl +14 -0
  28. aury/boot/commands/templates/project/env_templates/database.tpl +22 -0
  29. aury/boot/commands/templates/project/env_templates/log.tpl +18 -0
  30. aury/boot/commands/templates/project/env_templates/messaging.tpl +46 -0
  31. aury/boot/commands/templates/project/env_templates/rpc.tpl +28 -0
  32. aury/boot/commands/templates/project/env_templates/scheduler.tpl +18 -0
  33. aury/boot/commands/templates/project/env_templates/service.tpl +18 -0
  34. aury/boot/commands/templates/project/env_templates/storage.tpl +38 -0
  35. aury/boot/commands/templates/project/env_templates/third_party.tpl +43 -0
  36. aury/boot/common/logging/__init__.py +26 -674
  37. aury/boot/common/logging/context.py +132 -0
  38. aury/boot/common/logging/decorators.py +118 -0
  39. aury/boot/common/logging/format.py +315 -0
  40. aury/boot/common/logging/setup.py +214 -0
  41. aury/boot/infrastructure/database/config.py +6 -14
  42. aury/boot/infrastructure/tasks/config.py +5 -13
  43. aury/boot/infrastructure/tasks/manager.py +8 -4
  44. aury/boot/testing/base.py +2 -2
  45. {aury_boot-0.0.5.dist-info → aury_boot-0.0.7.dist-info}/METADATA +2 -1
  46. {aury_boot-0.0.5.dist-info → aury_boot-0.0.7.dist-info}/RECORD +48 -27
  47. aury/boot/commands/templates/project/env.example.tpl +0 -281
  48. {aury_boot-0.0.5.dist-info → aury_boot-0.0.7.dist-info}/WHEEL +0 -0
  49. {aury_boot-0.0.5.dist-info → aury_boot-0.0.7.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,49 @@
1
+
2
+ # =============================================================================
3
+ # 健康检查配置 (HEALTH_CHECK__)
4
+ # =============================================================================
5
+ # 健康检查端点路径
6
+ # HEALTH_CHECK__PATH=/api/health
7
+ # 是否启用健康检查端点
8
+ # HEALTH_CHECK__ENABLED=true
9
+
10
+ # =============================================================================
11
+ # CORS 配置 (CORS__)
12
+ # =============================================================================
13
+ # 允许的 CORS 源(生产环境应设置具体域名)
14
+ # CORS__ORIGINS=["*"]
15
+ # 是否允许 CORS 凭据
16
+ # CORS__ALLOW_CREDENTIALS=true
17
+ # 允许的 CORS 方法
18
+ # CORS__ALLOW_METHODS=["*"]
19
+ # 允许的 CORS 头
20
+ # CORS__ALLOW_HEADERS=["*"]
21
+
22
+ # =============================================================================
23
+ # 管理后台配置 (ADMIN__) - SQLAdmin Admin Console
24
+ # =============================================================================
25
+ # 是否启用管理后台(生产建议仅内网或配合反向代理)
26
+ # ADMIN__ENABLED=false
27
+ # 管理后台路径(默认 /api/admin-console,避免与业务 URL 冲突)
28
+ # ADMIN__PATH=/api/admin-console
29
+ #
30
+ # SQLAdmin 通常要求同步 SQLAlchemy Engine:
31
+ # - 若 DATABASE__URL 使用的是异步驱动(如 postgresql+asyncpg),建议显式提供同步 URL 覆盖
32
+ # ADMIN__DATABASE_URL=postgresql+psycopg://user:pass@localhost:5432/{project_name_snake}
33
+ #
34
+ # 可选:显式指定项目侧模块(用于注册 views/auth)
35
+ # ADMIN__VIEWS_MODULE={project_name_snake}.admin_console
36
+ #
37
+ # 认证配置 (嵌套格式: ADMIN__AUTH__{{FIELD}})
38
+ # ADMIN__AUTH__MODE=basic
39
+ # ADMIN__AUTH__SECRET_KEY=CHANGE_ME_TO_A_RANDOM_SECRET
40
+ #
41
+ # basic:登录页用户名/密码
42
+ # ADMIN__AUTH__BASIC_USERNAME=admin
43
+ # ADMIN__AUTH__BASIC_PASSWORD=change_me
44
+ #
45
+ # bearer:token 白名单(也支持在登录页输入 token)
46
+ # ADMIN__AUTH__BEARER_TOKENS=["change_me_token"]
47
+ #
48
+ # custom/jwt:自定义认证后端(动态导入)
49
+ # ADMIN__AUTH__BACKEND=yourpkg.admin_auth:backend
@@ -0,0 +1,14 @@
1
+
2
+ # =============================================================================
3
+ # 缓存配置 (CACHE__)
4
+ # =============================================================================
5
+ # 单实例配置:
6
+ # CACHE__CACHE_TYPE=memory
7
+ # CACHE__URL=redis://localhost:6379/0
8
+ # CACHE__MAX_SIZE=1000
9
+
10
+ # 多实例配置 (格式: CACHE__{{INSTANCE}}__{{FIELD}}):
11
+ # CACHE__DEFAULT__BACKEND=memory
12
+ # CACHE__DEFAULT__MAX_SIZE=1000
13
+ # CACHE__SESSION__BACKEND=redis
14
+ # CACHE__SESSION__URL=redis://localhost:6379/2
@@ -0,0 +1,22 @@
1
+
2
+ # =============================================================================
3
+ # 数据库配置 (DATABASE__)
4
+ # =============================================================================
5
+ # 单实例配置:
6
+ # DATABASE__URL=sqlite+aiosqlite:///./dev.db
7
+ # PostgreSQL: postgresql+asyncpg://user:pass@localhost:5432/{project_name_snake}
8
+ # MySQL: mysql+aiomysql://user:pass@localhost:3306/{project_name_snake}
9
+
10
+ # 连接池配置
11
+ # DATABASE__POOL_SIZE=5
12
+ # DATABASE__MAX_OVERFLOW=10
13
+ # DATABASE__POOL_RECYCLE=3600
14
+ # DATABASE__POOL_TIMEOUT=30
15
+ # DATABASE__POOL_PRE_PING=true
16
+ # DATABASE__ECHO=false
17
+
18
+ # 多实例配置 (格式: DATABASE__{{INSTANCE}}__{{FIELD}}):
19
+ # DATABASE__DEFAULT__URL=postgresql+asyncpg://user:pass@localhost:5432/{project_name_snake}
20
+ # DATABASE__DEFAULT__POOL_SIZE=5
21
+ # DATABASE__READONLY__URL=postgresql+asyncpg://user:pass@replica:5432/{project_name_snake}
22
+ # DATABASE__READONLY__POOL_SIZE=10
@@ -0,0 +1,18 @@
1
+
2
+ # =============================================================================
3
+ # 日志配置 (LOG__)
4
+ # =============================================================================
5
+ # 日志级别: DEBUG / INFO / WARNING / ERROR / CRITICAL
6
+ # LOG__LEVEL=INFO
7
+ # 日志文件目录
8
+ # LOG__DIR=logs
9
+ # 日志文件轮转时间 (HH:MM 格式)
10
+ # LOG__ROTATION_TIME=00:00
11
+ # 日志文件轮转大小阈值
12
+ # LOG__ROTATION_SIZE=100 MB
13
+ # 日志文件保留天数
14
+ # LOG__RETENTION_DAYS=7
15
+ # 是否启用日志文件轮转
16
+ # LOG__ENABLE_FILE_ROTATION=true
17
+ # 是否输出日志到控制台
18
+ # LOG__ENABLE_CONSOLE=true
@@ -0,0 +1,46 @@
1
+
2
+ # =============================================================================
3
+ # 流式通道配置 (CHANNEL__) - SSE/实时通信
4
+ # =============================================================================
5
+ # 多实例配置 (格式: CHANNEL__{{INSTANCE}}__{{FIELD}}):
6
+ # CHANNEL__DEFAULT__BACKEND=memory
7
+ # CHANNEL__SHARED__BACKEND=redis
8
+ # CHANNEL__SHARED__URL=redis://localhost:6379/3
9
+ # CHANNEL__SHARED__KEY_PREFIX=channel:
10
+ # CHANNEL__SHARED__TTL=86400
11
+
12
+ # =============================================================================
13
+ # 消息队列配置 (MQ__)
14
+ # =============================================================================
15
+ # 单实例配置:
16
+ # MQ__ENABLED=false
17
+ # MQ__BROKER_URL=redis://localhost:6379/4
18
+
19
+ # 多实例配置 (格式: MQ__{{INSTANCE}}__{{FIELD}}):
20
+ # MQ__DEFAULT__BACKEND=redis
21
+ # MQ__DEFAULT__URL=redis://localhost:6379/4
22
+ # MQ__DEFAULT__MAX_CONNECTIONS=10
23
+ #
24
+ # RabbitMQ 后端:
25
+ # MQ__ORDERS__BACKEND=rabbitmq
26
+ # MQ__ORDERS__URL=amqp://guest:guest@localhost:5672/orders
27
+ # MQ__ORDERS__PREFETCH_COUNT=10
28
+
29
+ # =============================================================================
30
+ # 事件总线配置 (EVENT__)
31
+ # =============================================================================
32
+ # 单实例配置:
33
+ # EVENT__BROKER_URL=
34
+ # EVENT__EXCHANGE_NAME=aury.events
35
+
36
+ # 多实例配置 (格式: EVENT__{{INSTANCE}}__{{FIELD}}):
37
+ # EVENT__DEFAULT__BACKEND=memory
38
+ # EVENT__DISTRIBUTED__BACKEND=redis
39
+ # EVENT__DISTRIBUTED__URL=redis://localhost:6379/5
40
+ # EVENT__DISTRIBUTED__KEY_PREFIX=events:
41
+ #
42
+ # RabbitMQ 后端:
43
+ # EVENT__DOMAIN__BACKEND=rabbitmq
44
+ # EVENT__DOMAIN__URL=amqp://guest:guest@localhost:5672/
45
+ # EVENT__DOMAIN__EXCHANGE_NAME=domain.events
46
+ # EVENT__DOMAIN__EXCHANGE_TYPE=topic
@@ -0,0 +1,28 @@
1
+
2
+ # =============================================================================
3
+ # RPC 客户端配置 (RPC_CLIENT__)
4
+ # =============================================================================
5
+ # 服务地址映射 {service_name: url}
6
+ # RPC_CLIENT__SERVICES={"user-service": "http://localhost:8001"}
7
+ # 默认超时时间(秒)
8
+ # RPC_CLIENT__DEFAULT_TIMEOUT=30
9
+ # 默认重试次数
10
+ # RPC_CLIENT__DEFAULT_RETRY_TIMES=3
11
+ # DNS 解析使用的协议
12
+ # RPC_CLIENT__DNS_SCHEME=http
13
+ # DNS 解析默认端口
14
+ # RPC_CLIENT__DNS_PORT=80
15
+ # 是否使用 DNS 回退(K8s/Docker Compose 自动 DNS)
16
+ # RPC_CLIENT__USE_DNS_FALLBACK=true
17
+
18
+ # =============================================================================
19
+ # RPC 服务注册配置 (RPC_SERVICE__)
20
+ # =============================================================================
21
+ # 服务名称(用于注册)
22
+ # RPC_SERVICE__NAME={project_name_snake}
23
+ # 服务地址(用于注册)
24
+ # RPC_SERVICE__URL=http://localhost:8000
25
+ # 健康检查 URL(用于注册)
26
+ # RPC_SERVICE__HEALTH_CHECK_URL=http://localhost:8000/api/health
27
+ # 是否自动注册到服务注册中心
28
+ # RPC_SERVICE__AUTO_REGISTER=false
@@ -0,0 +1,18 @@
1
+
2
+ # =============================================================================
3
+ # 调度器配置 (SCHEDULER__)
4
+ # =============================================================================
5
+ # 是否在 API 服务中启用内嵌调度器
6
+ # SCHEDULER__ENABLED=true
7
+ # 定时任务模块列表(为空时自动发现 schedules 模块)
8
+ # SCHEDULER__SCHEDULE_MODULES=[]
9
+
10
+ # =============================================================================
11
+ # 任务队列配置 (TASK__)
12
+ # =============================================================================
13
+ # 任务队列代理 URL(如 Redis 或 RabbitMQ)
14
+ # TASK__BROKER_URL=redis://localhost:6379/1
15
+ # 最大重试次数
16
+ # TASK__MAX_RETRIES=3
17
+ # 任务超时时间(秒)
18
+ # TASK__TIMEOUT=3600
@@ -0,0 +1,18 @@
1
+
2
+ # =============================================================================
3
+ # 服务配置 (SERVICE__)
4
+ # =============================================================================
5
+ # 服务名称,用于日志目录区分
6
+ SERVICE__NAME={project_name_snake}
7
+ # 服务类型: api / worker
8
+ # SERVICE__TYPE=api
9
+
10
+ # =============================================================================
11
+ # 服务器配置 (SERVER__)
12
+ # =============================================================================
13
+ # SERVER__HOST=*********
14
+ # SERVER__PORT=8000
15
+ # 工作进程数(生产环境建议设为 CPU 核心数)
16
+ # SERVER__WORKERS=1
17
+ # 是否启用热重载(生产环境应设为 false)
18
+ # SERVER__RELOAD=true
@@ -0,0 +1,38 @@
1
+
2
+ # =============================================================================
3
+ # 数据库迁移配置 (MIGRATION__)
4
+ # =============================================================================
5
+ # Alembic 配置文件路径
6
+ # MIGRATION__CONFIG_PATH=alembic.ini
7
+ # Alembic 迁移脚本目录
8
+ # MIGRATION__SCRIPT_LOCATION=migrations
9
+ # 是否自动创建迁移配置和目录
10
+ # MIGRATION__AUTO_CREATE=true
11
+
12
+ # =============================================================================
13
+ # 对象存储配置 (STORAGE__) - 基于 aury-sdk-storage
14
+ # =============================================================================
15
+ # 是否启用存储组件
16
+ # STORAGE__ENABLED=true
17
+ # 存储类型: local / s3 / cos / oss
18
+ # STORAGE__TYPE=local
19
+ #
20
+ # 本地存储(开发环境)
21
+ # STORAGE__BASE_PATH=./storage
22
+ #
23
+ # S3/COS/OSS 通用配置
24
+ # STORAGE__ACCESS_KEY_ID=AKIDxxxxx
25
+ # STORAGE__ACCESS_KEY_SECRET=xxxxx
26
+ # STORAGE__SESSION_TOKEN=
27
+ # STORAGE__ENDPOINT=https://cos.ap-guangzhou.myqcloud.com
28
+ # STORAGE__REGION=ap-guangzhou
29
+ # STORAGE__BUCKET_NAME=my-bucket-1250000000
30
+ # STORAGE__ADDRESSING_STYLE=virtual
31
+ #
32
+ # STS AssumeRole(可选,服务端自动刷新凭证)
33
+ # STORAGE__ROLE_ARN=
34
+ # STORAGE__ROLE_SESSION_NAME=aury-storage
35
+ # STORAGE__EXTERNAL_ID=
36
+ # STORAGE__STS_ENDPOINT=
37
+ # STORAGE__STS_REGION=
38
+ # STORAGE__STS_DURATION_SECONDS=3600
@@ -0,0 +1,43 @@
1
+
2
+ # =============================================================================
3
+ # 第三方接口适配器配置 (THIRD_PARTY__)
4
+ # =============================================================================
5
+ # 用于配置支付、短信、微信等第三方接口的模式切换和挡板设置
6
+ # 格式: THIRD_PARTY__{{ADAPTER_NAME}}__{{FIELD}}
7
+ #
8
+ # 模式说明:
9
+ # - real: 真实调用第三方接口(生产环境)
10
+ # - sandbox: 调用第三方沙箱环境(如果有)
11
+ # - mock: 使用本地挡板实现,不发出真实请求(测试/开发环境)
12
+ # - disabled: 禁用该接口,调用时抛出 AdapterDisabledError
13
+ #
14
+ # ---------- 支付接口示例 (PAYMENT) ----------
15
+ # THIRD_PARTY__PAYMENT__ENABLED=true
16
+ # THIRD_PARTY__PAYMENT__MODE=mock
17
+ # THIRD_PARTY__PAYMENT__BASE_URL=https://api.payment.com/v1
18
+ # THIRD_PARTY__PAYMENT__SANDBOX_URL=https://sandbox.payment.com/v1
19
+ # THIRD_PARTY__PAYMENT__API_KEY=sk_live_xxx
20
+ # THIRD_PARTY__PAYMENT__API_SECRET=
21
+ # THIRD_PARTY__PAYMENT__TIMEOUT=30
22
+ # THIRD_PARTY__PAYMENT__RETRY_TIMES=3
23
+ # THIRD_PARTY__PAYMENT__METHOD_MODES={"query": "real", "refund": "disabled"}
24
+ # THIRD_PARTY__PAYMENT__MOCK_STRATEGY=success
25
+ # THIRD_PARTY__PAYMENT__MOCK_DELAY=0.1
26
+ # THIRD_PARTY__PAYMENT__MOCK_DEFAULT_RESPONSE={"success": true, "mock": true}
27
+ #
28
+ # ---------- 短信接口示例 (SMS) ----------
29
+ # THIRD_PARTY__SMS__ENABLED=true
30
+ # THIRD_PARTY__SMS__MODE=mock
31
+ # THIRD_PARTY__SMS__BASE_URL=https://sms.aliyuncs.com
32
+ # THIRD_PARTY__SMS__API_KEY=LTAI5xxx
33
+ # THIRD_PARTY__SMS__API_SECRET=xxx
34
+ # THIRD_PARTY__SMS__TIMEOUT=10
35
+ # THIRD_PARTY__SMS__MOCK_STRATEGY=success
36
+ # THIRD_PARTY__SMS__MOCK_DEFAULT_RESPONSE={"code": "OK", "message": "mock sent"}
37
+ #
38
+ # ---------- 微信接口示例 (WECHAT) ----------
39
+ # THIRD_PARTY__WECHAT__ENABLED=true
40
+ # THIRD_PARTY__WECHAT__MODE=mock
41
+ # THIRD_PARTY__WECHAT__BASE_URL=https://api.weixin.qq.com
42
+ # THIRD_PARTY__WECHAT__TIMEOUT=15
43
+ # THIRD_PARTY__WECHAT__EXTRA={"appid": "wx123", "secret": "xxx"}