aury-boot 0.0.11__tar.gz → 0.0.13__tar.gz
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.
- {aury_boot-0.0.11 → aury_boot-0.0.13}/PKG-INFO +1 -1
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/_version.py +2 -2
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/docs.py +71 -26
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/init.py +10 -18
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/10-storage.md.tpl +49 -6
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/16-adapter.md.tpl +34 -34
- {aury_boot-0.0.11 → aury_boot-0.0.13}/.gitignore +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/README.md +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/decorators.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/adapter/http.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/app/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/app/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/app/components.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/app/middlewares.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/app/startup.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/config/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/config/multi_instance.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/config/settings.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/constants/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/constants/components.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/constants/scheduler.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/constants/service.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/chain.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/codes.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/handlers.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/errors/response.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/interfaces/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/interfaces/egress.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/interfaces/ingress.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/middleware/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/middleware/logging.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/migrations/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/migrations/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/migrations/setup.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/rpc/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/rpc/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/rpc/client.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/rpc/discovery.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/scheduler/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/scheduler/runner.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/application/server/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/add.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/app.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/docker.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/generate.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/migrate/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/migrate/app.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/migrate/commands.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/pkg.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/scheduler.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/server/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/server/app.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/api.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/model.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/repository.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/schema.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/service.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/AGENTS.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/README.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/admin_console_init.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/00-overview.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/01-model.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/02-repository.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/03-service.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/04-schema.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/05-api.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/06-exception.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/07-cache.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/08-scheduler.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/09-tasks.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/11-logging.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/12-admin.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/13-channel.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/14-mq.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/15-events.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/99-cli.md.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/config.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/conftest.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/_header.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/admin.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/cache.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/database.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/log.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/messaging.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/rpc.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/scheduler.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/service.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/storage.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/env_templates/third_party.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/gitignore.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/main.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/modules/api.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/modules/exceptions.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/modules/schedules.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/modules/tasks.py.tpl +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/worker.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/exceptions/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/i18n/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/i18n/translator.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/logging/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/logging/context.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/logging/decorators.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/logging/format.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/common/logging/setup.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/admin_console/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/admin_console/auth.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/admin_console/discovery.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/admin_console/install.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/contrib/admin_console/utils.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/exceptions/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/models/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/models/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/models/mixins.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/models/models.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/pagination/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/repository/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/repository/impl.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/repository/interceptors.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/repository/interface.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/repository/query_builder.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/service/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/service/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/domain/transaction/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/backends.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/factory.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/cache/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/backends/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/backends/memory.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/backends/redis.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/channel/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/rabbitmq/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/rabbitmq/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/rabbitmq/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/redis/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/redis/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/clients/redis/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/query_tools/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/database/strategies/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/di/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/di/container.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/backends/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/backends/memory.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/backends/rabbitmq.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/backends/redis.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/events/middleware.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/monitoring/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/backends/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/backends/rabbitmq.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/backends/redis.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/mq/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/scheduler/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/scheduler/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/scheduler/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/storage/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/storage/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/storage/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/storage/factory.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/tasks/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/tasks/config.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/tasks/constants.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/tasks/exceptions.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/infrastructure/tasks/manager.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/testing/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/testing/base.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/testing/client.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/testing/factory.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/toolkit/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/toolkit/http/__init__.py +0 -0
- {aury_boot-0.0.11 → aury_boot-0.0.13}/pyproject.toml +0 -0
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 0,
|
|
31
|
+
__version__ = version = '0.0.13'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 13)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -83,8 +83,15 @@ def _detect_project_info(project_dir: Path) -> dict[str, str]:
|
|
|
83
83
|
def _render_template(template_name: str, context: dict[str, str]) -> str:
|
|
84
84
|
"""渲染模板。
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
支持根目录模板、aury_docs/ 子目录模板,且 .env.example 复用 init.py 的 env_templates 逻辑。
|
|
87
87
|
"""
|
|
88
|
+
# 特殊处理 env.example.tpl(通过 init.py 的 env_templates 目录合并生成)
|
|
89
|
+
if template_name == "env.example.tpl":
|
|
90
|
+
from .init import _read_env_template # 复用初始化脚手架的 env 生成逻辑
|
|
91
|
+
|
|
92
|
+
content = _read_env_template()
|
|
93
|
+
return content.format(**context)
|
|
94
|
+
|
|
88
95
|
# 先在根目录找
|
|
89
96
|
template_path = TEMPLATES_DIR / template_name
|
|
90
97
|
if not template_path.exists():
|
|
@@ -173,6 +180,60 @@ def _get_aury_docs_templates() -> list[Path]:
|
|
|
173
180
|
return sorted(AURY_DOCS_TPL_DIR.glob("*.md.tpl"))
|
|
174
181
|
|
|
175
182
|
|
|
183
|
+
def generate_aury_docs(
|
|
184
|
+
*,
|
|
185
|
+
project_dir: Path,
|
|
186
|
+
context: dict[str, str],
|
|
187
|
+
force: bool = False,
|
|
188
|
+
dry_run: bool = False,
|
|
189
|
+
quiet: bool = False,
|
|
190
|
+
) -> int:
|
|
191
|
+
"""核心实现:根据 aury_docs 模板生成开发文档包。
|
|
192
|
+
|
|
193
|
+
被 `aury docs dev` 和 `aury init` 复用,确保生成逻辑一致。
|
|
194
|
+
返回成功生成的文档数量。
|
|
195
|
+
"""
|
|
196
|
+
if not quiet:
|
|
197
|
+
console.print()
|
|
198
|
+
|
|
199
|
+
# 确保输出目录存在
|
|
200
|
+
aury_docs_dir = project_dir / "aury_docs"
|
|
201
|
+
if not dry_run:
|
|
202
|
+
aury_docs_dir.mkdir(parents=True, exist_ok=True)
|
|
203
|
+
|
|
204
|
+
success_count = 0
|
|
205
|
+
for tpl_path in _get_aury_docs_templates():
|
|
206
|
+
try:
|
|
207
|
+
output_name = tpl_path.stem # 去掉 .tpl 后缀,保留 .md
|
|
208
|
+
output_path = aury_docs_dir / output_name
|
|
209
|
+
content = tpl_path.read_text(encoding="utf-8")
|
|
210
|
+
content = content.format(**context)
|
|
211
|
+
# init 直接写文件,不走 rich 提示
|
|
212
|
+
if quiet:
|
|
213
|
+
if output_path.exists() and not force and not dry_run:
|
|
214
|
+
continue
|
|
215
|
+
if not dry_run:
|
|
216
|
+
output_path.write_text(content, encoding="utf-8")
|
|
217
|
+
success_count += 1
|
|
218
|
+
else:
|
|
219
|
+
if _write_file(output_path, content, force=force, dry_run=dry_run):
|
|
220
|
+
success_count += 1
|
|
221
|
+
except Exception as e:
|
|
222
|
+
if not quiet:
|
|
223
|
+
console.print(f"[red]❌ 生成 {tpl_path.name} 失败: {e}[/red]")
|
|
224
|
+
# 静默模式下(init)忽略单个文档失败
|
|
225
|
+
continue
|
|
226
|
+
|
|
227
|
+
if not quiet:
|
|
228
|
+
console.print()
|
|
229
|
+
if dry_run:
|
|
230
|
+
console.print(f"[dim]🔍 预览模式完成,将生成 {success_count} 个文档到 aury_docs/ 目录[/dim]")
|
|
231
|
+
else:
|
|
232
|
+
console.print(f"[green]✨ 完成!成功生成 {success_count} 个文档到 aury_docs/ 目录[/green]")
|
|
233
|
+
|
|
234
|
+
return success_count
|
|
235
|
+
|
|
236
|
+
|
|
176
237
|
@app.command(name="dev")
|
|
177
238
|
def generate_dev_doc(
|
|
178
239
|
project_dir: Path = typer.Argument(
|
|
@@ -198,32 +259,16 @@ def generate_dev_doc(
|
|
|
198
259
|
) -> None:
|
|
199
260
|
"""生成/更新 aury_docs/ 开发文档包。"""
|
|
200
261
|
context = _detect_project_info(project_dir)
|
|
201
|
-
|
|
262
|
+
|
|
202
263
|
console.print(f"[cyan]📚 检测到项目: {context['project_name']}[/cyan]")
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
for tpl_path in _get_aury_docs_templates():
|
|
212
|
-
try:
|
|
213
|
-
output_name = tpl_path.stem # 去掉 .tpl 后缀,保留 .md
|
|
214
|
-
output_path = aury_docs_dir / output_name
|
|
215
|
-
content = tpl_path.read_text(encoding="utf-8")
|
|
216
|
-
content = content.format(**context)
|
|
217
|
-
if _write_file(output_path, content, force=force, dry_run=dry_run):
|
|
218
|
-
success_count += 1
|
|
219
|
-
except Exception as e:
|
|
220
|
-
console.print(f"[red]❌ 生成 {tpl_path.name} 失败: {e}[/red]")
|
|
221
|
-
|
|
222
|
-
console.print()
|
|
223
|
-
if dry_run:
|
|
224
|
-
console.print(f"[dim]🔍 预览模式完成,将生成 {success_count} 个文档到 aury_docs/ 目录[/dim]")
|
|
225
|
-
else:
|
|
226
|
-
console.print(f"[green]✨ 完成!成功生成 {success_count} 个文档到 aury_docs/ 目录[/green]")
|
|
264
|
+
|
|
265
|
+
generate_aury_docs(
|
|
266
|
+
project_dir=project_dir,
|
|
267
|
+
context=context,
|
|
268
|
+
force=force,
|
|
269
|
+
dry_run=dry_run,
|
|
270
|
+
quiet=False,
|
|
271
|
+
)
|
|
227
272
|
|
|
228
273
|
|
|
229
274
|
@app.command(name="cli")
|
|
@@ -836,25 +836,17 @@ def init(
|
|
|
836
836
|
else:
|
|
837
837
|
console.print(" [dim]ℹ️ migrations/ 目录已存在,跳过[/dim]")
|
|
838
838
|
|
|
839
|
-
# 5. 生成开发文档 (aury_docs/) -
|
|
839
|
+
# 5. 生成开发文档 (aury_docs/) - 复用 docs.generate_aury_docs
|
|
840
840
|
console.print("\n[bold]📚 生成开发文档...[/bold]")
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
continue
|
|
851
|
-
try:
|
|
852
|
-
content = tpl_path.read_text(encoding="utf-8")
|
|
853
|
-
content = content.format(**template_vars)
|
|
854
|
-
output_path.write_text(content, encoding="utf-8")
|
|
855
|
-
docs_count += 1
|
|
856
|
-
except Exception:
|
|
857
|
-
pass
|
|
841
|
+
from .docs import generate_aury_docs
|
|
842
|
+
|
|
843
|
+
docs_count = generate_aury_docs(
|
|
844
|
+
project_dir=base_path,
|
|
845
|
+
context=template_vars,
|
|
846
|
+
force=force,
|
|
847
|
+
dry_run=False,
|
|
848
|
+
quiet=True,
|
|
849
|
+
)
|
|
858
850
|
console.print(f" [green]✅ 已生成 {docs_count} 个文档到 aury_docs/[/green]")
|
|
859
851
|
|
|
860
852
|
# 6. 生成 Docker 配置
|
|
@@ -11,17 +11,20 @@ pip install "aury-sdk-storage[aws]"
|
|
|
11
11
|
|
|
12
12
|
## 10.2 基本用法(StorageManager)
|
|
13
13
|
|
|
14
|
-
`StorageManager`
|
|
14
|
+
`StorageManager` 支持**命名多实例**,内部使用 `aury-sdk-storage` 提供的 `StorageFactory.from_config()` 智能选择后端(COS 原生 / S3 兼容等),对上层暴露统一接口。
|
|
15
15
|
|
|
16
16
|
```python
|
|
17
17
|
from aury.boot.infrastructure.storage import (
|
|
18
|
-
StorageManager,
|
|
18
|
+
StorageManager,
|
|
19
|
+
StorageConfig,
|
|
20
|
+
StorageBackend,
|
|
21
|
+
StorageFile,
|
|
19
22
|
)
|
|
20
23
|
|
|
21
24
|
# 默认实例
|
|
22
25
|
storage = StorageManager.get_instance()
|
|
23
26
|
await storage.initialize(StorageConfig(
|
|
24
|
-
backend=StorageBackend.COS,
|
|
27
|
+
backend=StorageBackend.COS, # 自动选择 COS 原生 SDK 或 S3 兼容模式
|
|
25
28
|
bucket_name="my-bucket-1250000000",
|
|
26
29
|
region="ap-guangzhou",
|
|
27
30
|
endpoint="https://cos.ap-guangzhou.myqcloud.com",
|
|
@@ -45,6 +48,12 @@ url = await storage.upload_file(
|
|
|
45
48
|
)
|
|
46
49
|
)
|
|
47
50
|
|
|
51
|
+
# 批量上传
|
|
52
|
+
urls = await storage.upload_files([
|
|
53
|
+
StorageFile(object_name="img/1.jpg", data=b"..."),
|
|
54
|
+
StorageFile(object_name="img/2.jpg", data=b"..."),
|
|
55
|
+
])
|
|
56
|
+
|
|
48
57
|
# 下载文件
|
|
49
58
|
content = await storage.download_file("user/123/avatar.png")
|
|
50
59
|
|
|
@@ -58,7 +67,38 @@ exists = await storage.file_exists("user/123/avatar.png")
|
|
|
58
67
|
await storage.delete_file("user/123/avatar.png")
|
|
59
68
|
```
|
|
60
69
|
|
|
61
|
-
## 10.3
|
|
70
|
+
## 10.3 高级用法:直接使用 SDKStorageFactory / StorageType
|
|
71
|
+
|
|
72
|
+
对于需要更精细控制后端类型(如在脚手架或基础设施层扩展存储实现)的场景,可以直接使用 SDK 导出的类型:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
from aury.boot.infrastructure.storage import (
|
|
76
|
+
COSStorage,
|
|
77
|
+
LocalStorage,
|
|
78
|
+
S3Storage,
|
|
79
|
+
SDKStorageFactory, # SDK 工厂(基于 StorageType 枚举)
|
|
80
|
+
StorageConfig,
|
|
81
|
+
StorageFile,
|
|
82
|
+
StorageType,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# 使用 StorageType 创建后端
|
|
86
|
+
config = StorageConfig(
|
|
87
|
+
backend=StorageType.COS,
|
|
88
|
+
bucket_name="my-bucket-1250000000",
|
|
89
|
+
region="ap-guangzhou",
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
backend = SDKStorageFactory.from_config(config)
|
|
93
|
+
result = await backend.upload_file(
|
|
94
|
+
StorageFile(object_name="dev/test.txt", data=b"hello"),
|
|
95
|
+
)
|
|
96
|
+
print(result.url)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
> 一般业务代码直接通过 `StorageManager` 即可,只有在需要自定义装配流程或编写基础设施扩展时才需要直接使用 `SDKStorageFactory` / `StorageType` / `COSStorage` 等类型。
|
|
100
|
+
|
|
101
|
+
## 10.4 STS 临时凭证(前端直传)
|
|
62
102
|
|
|
63
103
|
```python
|
|
64
104
|
from aury.sdk.storage.sts import (
|
|
@@ -95,11 +135,14 @@ return {{
|
|
|
95
135
|
}}
|
|
96
136
|
```
|
|
97
137
|
|
|
98
|
-
## 10.
|
|
138
|
+
## 10.5 本地存储(开发测试)
|
|
99
139
|
|
|
100
140
|
```python
|
|
101
141
|
from aury.boot.infrastructure.storage import (
|
|
102
|
-
StorageManager,
|
|
142
|
+
StorageManager,
|
|
143
|
+
StorageConfig,
|
|
144
|
+
StorageBackend,
|
|
145
|
+
StorageFile,
|
|
103
146
|
)
|
|
104
147
|
|
|
105
148
|
storage = StorageManager.get_instance()
|
|
@@ -33,7 +33,7 @@ class PaymentAdapter(BaseAdapter):
|
|
|
33
33
|
# 真实调用第三方 API
|
|
34
34
|
response = await self.http_client.post(
|
|
35
35
|
"https://api.payment.com/orders",
|
|
36
|
-
json={"amount": amount, "order_id": order_id},
|
|
36
|
+
json={{"amount": amount, "order_id": order_id}},
|
|
37
37
|
)
|
|
38
38
|
return response.json()
|
|
39
39
|
|
|
@@ -41,29 +41,29 @@ class PaymentAdapter(BaseAdapter):
|
|
|
41
41
|
async def create_order_mock(self, amount: int, order_id: str) -> dict:
|
|
42
42
|
"""创建支付订单(Mock 实现)。"""
|
|
43
43
|
if amount > 100000:
|
|
44
|
-
return {"success": False, "error": "金额超限"}
|
|
45
|
-
return {
|
|
44
|
+
return {{"success": False, "error": "金额超限"}}
|
|
45
|
+
return {{
|
|
46
46
|
"success": True,
|
|
47
|
-
"transaction_id": f"mock_tx_{order_id}",
|
|
47
|
+
"transaction_id": f"mock_tx_{{order_id}}",
|
|
48
48
|
"amount": amount,
|
|
49
|
-
}
|
|
49
|
+
}}
|
|
50
50
|
|
|
51
51
|
@adapter_method("query_order")
|
|
52
52
|
async def query_order(self, transaction_id: str) -> dict:
|
|
53
53
|
"""查询支付订单。"""
|
|
54
54
|
response = await self.http_client.get(
|
|
55
|
-
f"https://api.payment.com/orders/{transaction_id}"
|
|
55
|
+
f"https://api.payment.com/orders/{{transaction_id}}"
|
|
56
56
|
)
|
|
57
57
|
return response.json()
|
|
58
58
|
|
|
59
59
|
@query_order.mock
|
|
60
60
|
async def query_order_mock(self, transaction_id: str) -> dict:
|
|
61
61
|
"""查询支付订单(Mock)。"""
|
|
62
|
-
return {
|
|
62
|
+
return {{
|
|
63
63
|
"transaction_id": transaction_id,
|
|
64
64
|
"status": "paid",
|
|
65
65
|
"mock": True,
|
|
66
|
-
}
|
|
66
|
+
}}
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
## 16.3 Adapter 配置
|
|
@@ -78,7 +78,7 @@ THIRD_PARTY__GATEWAY_MODE=mock
|
|
|
78
78
|
|
|
79
79
|
# 方法级模式覆盖(JSON 格式)
|
|
80
80
|
# 例如:query 方法使用 real,其他方法使用全局配置
|
|
81
|
-
THIRD_PARTY__METHOD_MODES={"query_order": "real"}
|
|
81
|
+
THIRD_PARTY__METHOD_MODES={{"query_order": "real"}}
|
|
82
82
|
|
|
83
83
|
# Mock 策略:decorator(装饰器)/ auto(自动生成)
|
|
84
84
|
THIRD_PARTY__MOCK_STRATEGY=decorator
|
|
@@ -98,10 +98,10 @@ settings = AdapterSettings()
|
|
|
98
98
|
# 方式 2:代码显式配置
|
|
99
99
|
settings = AdapterSettings(
|
|
100
100
|
mode="mock",
|
|
101
|
-
method_modes={
|
|
101
|
+
method_modes={{
|
|
102
102
|
"query_order": "real", # query_order 使用真实调用
|
|
103
103
|
"create_order": "mock", # create_order 使用 Mock
|
|
104
|
-
},
|
|
104
|
+
}},
|
|
105
105
|
debug=True,
|
|
106
106
|
)
|
|
107
107
|
|
|
@@ -140,13 +140,13 @@ class WechatAdapter(HttpAdapter):
|
|
|
140
140
|
return await self._request(
|
|
141
141
|
"POST",
|
|
142
142
|
"/cgi-bin/message/send",
|
|
143
|
-
json={"touser": openid, "content": content},
|
|
143
|
+
json={{"touser": openid, "content": content}},
|
|
144
144
|
)
|
|
145
145
|
|
|
146
146
|
@send_message.mock
|
|
147
147
|
async def send_message_mock(self, openid: str, content: str) -> dict:
|
|
148
148
|
"""发送消息(Mock)。"""
|
|
149
|
-
return {"errcode": 0, "errmsg": "ok", "mock": True}
|
|
149
|
+
return {{"errcode": 0, "errmsg": "ok", "mock": True}}
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
## 16.5 方法级模式覆盖
|
|
@@ -156,13 +156,13 @@ class WechatAdapter(HttpAdapter):
|
|
|
156
156
|
```python
|
|
157
157
|
settings = AdapterSettings(
|
|
158
158
|
mode="mock", # 默认 Mock
|
|
159
|
-
method_modes={
|
|
159
|
+
method_modes={{
|
|
160
160
|
"query_order": "real", # 查询走真实接口
|
|
161
161
|
"create_order": "mock", # 创建走 Mock
|
|
162
162
|
"refund": "disabled", # 退款禁用
|
|
163
|
-
},
|
|
163
|
+
}},
|
|
164
|
+
debug=True,
|
|
164
165
|
)
|
|
165
|
-
|
|
166
166
|
adapter = PaymentAdapter("payment", settings)
|
|
167
167
|
|
|
168
168
|
# query_order 会调用真实 API
|
|
@@ -237,19 +237,19 @@ class PaymentAdapter(HttpAdapter):
|
|
|
237
237
|
self, method: str, args: tuple, kwargs: dict
|
|
238
238
|
) -> None:
|
|
239
239
|
"""调用前钩子。"""
|
|
240
|
-
logger.info(f"调用 {method},参数: {args}")
|
|
240
|
+
logger.info(f"调用 {{method}},参数: {{args}}")
|
|
241
241
|
|
|
242
242
|
async def _on_after_call(
|
|
243
243
|
self, method: str, args: tuple, kwargs: dict, result: Any
|
|
244
244
|
) -> None:
|
|
245
245
|
"""调用后钩子。"""
|
|
246
|
-
logger.info(f"{method} 返回: {result}")
|
|
246
|
+
logger.info(f"{{method}} 返回: {{result}}")
|
|
247
247
|
|
|
248
248
|
async def _on_call_error(
|
|
249
249
|
self, method: str, args: tuple, kwargs: dict, error: Exception
|
|
250
250
|
) -> None:
|
|
251
251
|
"""调用异常钩子。"""
|
|
252
|
-
logger.error(f"{method} 异常: {error}")
|
|
252
|
+
logger.error(f"{{method}} 异常: {{error}}")
|
|
253
253
|
# 可以在这里发送告警
|
|
254
254
|
```
|
|
255
255
|
|
|
@@ -272,16 +272,16 @@ class CompositePaymentAdapter(BaseAdapter):
|
|
|
272
272
|
elif channel == "wechat":
|
|
273
273
|
return await self.wechat.create_order(amount, order_id)
|
|
274
274
|
else:
|
|
275
|
-
raise ValueError(f"不支持的支付渠道: {channel}")
|
|
275
|
+
raise ValueError(f"不支持的支付渠道: {{channel}}")
|
|
276
276
|
|
|
277
277
|
@pay.mock
|
|
278
278
|
async def pay_mock(self, channel: str, amount: int, order_id: str) -> dict:
|
|
279
279
|
"""统一 Mock 实现。"""
|
|
280
|
-
return {
|
|
280
|
+
return {{
|
|
281
281
|
"success": True,
|
|
282
282
|
"channel": channel,
|
|
283
|
-
"transaction_id": f"mock_{channel}_{order_id}",
|
|
284
|
-
}
|
|
283
|
+
"transaction_id": f"mock_{{channel}}_{{order_id}}",
|
|
284
|
+
}}
|
|
285
285
|
```
|
|
286
286
|
|
|
287
287
|
## 16.8 异常处理
|
|
@@ -303,9 +303,9 @@ except AdapterTimeoutError:
|
|
|
303
303
|
logger.error("支付适配器超时")
|
|
304
304
|
# 重试或告警
|
|
305
305
|
except AdapterValidationError as e:
|
|
306
|
-
logger.error(f"参数校验失败: {e}")
|
|
306
|
+
logger.error(f"参数校验失败: {{e}}")
|
|
307
307
|
except AdapterError as e:
|
|
308
|
-
logger.error(f"适配器错误: {e}")
|
|
308
|
+
logger.error(f"适配器错误: {{e}}")
|
|
309
309
|
```
|
|
310
310
|
|
|
311
311
|
## 16.9 最佳实践
|
|
@@ -329,16 +329,16 @@ async def create_order_mock(self, amount: int, order_id: str) -> dict:
|
|
|
329
329
|
"""Mock 应模拟各种场景。"""
|
|
330
330
|
# 模拟金额校验
|
|
331
331
|
if amount <= 0:
|
|
332
|
-
return {"success": False, "error": "金额必须大于0"}
|
|
332
|
+
return {{"success": False, "error": "金额必须大于0"}}
|
|
333
333
|
if amount > 100000:
|
|
334
|
-
return {"success": False, "error": "金额超限"}
|
|
334
|
+
return {{"success": False, "error": "金额超限"}}
|
|
335
335
|
|
|
336
336
|
# 模拟偶发失败(可选)
|
|
337
337
|
import random
|
|
338
338
|
if random.random() < 0.01:
|
|
339
|
-
return {"success": False, "error": "系统繁忙"}
|
|
339
|
+
return {{"success": False, "error": "系统繁忙"}}
|
|
340
340
|
|
|
341
|
-
return {"success": True, "transaction_id": f"mock_{order_id}"}
|
|
341
|
+
return {{"success": True, "transaction_id": f"mock_{{order_id}}"}}
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
### 3. 环境配置建议
|
|
@@ -350,7 +350,7 @@ THIRD_PARTY__DEBUG=true
|
|
|
350
350
|
|
|
351
351
|
# 测试环境 (.env.testing)
|
|
352
352
|
THIRD_PARTY__GATEWAY_MODE=mock
|
|
353
|
-
THIRD_PARTY__METHOD_MODES={"query": "sandbox"}
|
|
353
|
+
THIRD_PARTY__METHOD_MODES={{"query": "sandbox"}}
|
|
354
354
|
|
|
355
355
|
# 生产环境 (.env.production)
|
|
356
356
|
THIRD_PARTY__GATEWAY_MODE=real
|
|
@@ -381,11 +381,11 @@ class OrderService(BaseService):
|
|
|
381
381
|
async def create_order(self, user_id: str, amount: int) -> Order:
|
|
382
382
|
"""创建订单并发起支付。"""
|
|
383
383
|
# 1. 创建订单记录
|
|
384
|
-
order = await self.order_repo.create({
|
|
384
|
+
order = await self.order_repo.create({{
|
|
385
385
|
"user_id": user_id,
|
|
386
386
|
"amount": amount,
|
|
387
387
|
"status": "pending",
|
|
388
|
-
})
|
|
388
|
+
}})
|
|
389
389
|
|
|
390
390
|
# 2. 调用支付适配器
|
|
391
391
|
pay_result = await self.payment.create_order(amount, str(order.id))
|
|
@@ -394,10 +394,10 @@ class OrderService(BaseService):
|
|
|
394
394
|
raise PaymentError(pay_result["error"])
|
|
395
395
|
|
|
396
396
|
# 3. 更新订单状态
|
|
397
|
-
await self.order_repo.update(order, {
|
|
397
|
+
await self.order_repo.update(order, {{
|
|
398
398
|
"transaction_id": pay_result["transaction_id"],
|
|
399
399
|
"status": "paid",
|
|
400
|
-
})
|
|
400
|
+
}})
|
|
401
401
|
|
|
402
402
|
return order
|
|
403
403
|
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/generate/repository.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/admin_console_init.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
{aury_boot-0.0.11 → aury_boot-0.0.13}/aury/boot/commands/templates/project/aury_docs/01-model.md.tpl
RENAMED
|
File without changes
|