# 架构

- [架构](https://dev.ppgg.in/architecture/architecture.md)
- [架构决策记录 (ADR)](https://dev.ppgg.in/architecture/adr.md)
- [0001 - Angular Reactive Forms](https://dev.ppgg.in/architecture/adr/0001-angular-reactive-forms.md)
- [0002 - Public API for modules](https://dev.ppgg.in/architecture/adr/0002-public-api-for-modules.md)
- [0003 - Adopt Observable Data Services for Angular](https://dev.ppgg.in/architecture/adr/0003-adopt-observable-data-services-for-angular.md)
- [0004 - Refactor State Service](https://dev.ppgg.in/architecture/adr/0004-refactor-state-service.md)
- [0005 - Refactor Api Service](https://dev.ppgg.in/architecture/adr/0005-refactor-api-service.md)
- [0006 - Clients: Use Jest Mocks](https://dev.ppgg.in/architecture/adr/0006-clients-use-jest-mocks.md)
- [0007 - Manifest V3 sync Observables](https://dev.ppgg.in/architecture/adr/0007-manifest-v3-sync-observables.md)
- [0008 - Server: Adopt CQRS](https://dev.ppgg.in/architecture/adr/0008-server-adopt-cqrs.md)
- [0009 - Composition over inheritance](https://dev.ppgg.in/architecture/adr/0009-composition-over-inheritance.md)
- [0010 - Angular Modules](https://dev.ppgg.in/architecture/adr/0010-angular-modules.md)
- [0011 - Scalable Angular Clients folder structure](https://dev.ppgg.in/architecture/adr/0011-scalable-angular-clients-folder-structure.md)
- [0012 - Angular Filename convention](https://dev.ppgg.in/architecture/adr/0012-angular-filename-convention.md)
- [0013 - Avoid layered folder structure for request/response models](https://dev.ppgg.in/architecture/adr/0013-avoid-layered-folder-structure-for-request-response-models.md)
- [0014 - Adopt Typescript Strict flag](https://dev.ppgg.in/architecture/adr/0014-adopt-typescript-strict-flag.md)
- [0015 - Short Lived Browser Services](https://dev.ppgg.in/architecture/adr/0015-short-lived-browser-services.md)
- [0016 - Move Decryption and Encryption to Views](https://dev.ppgg.in/architecture/adr/0016-move-decryption-and-encryption-to-views.md)
- [0017 - Use Swift to build watchOS app](https://dev.ppgg.in/architecture/adr/0017-use-swift-to-build-watchos-app.md)
- [0018 - Feature management](https://dev.ppgg.in/architecture/adr/0018-feature-management.md)
- [0019 - Adoption of Web Push](https://dev.ppgg.in/architecture/adr/0019-adoption-of-web-push.md)
- [0020 - Observability with OpenTelemetry](https://dev.ppgg.in/architecture/adr/0020-observability-with-opentelemetry.md)
- [0021 - Logging to Standard Output](https://dev.ppgg.in/architecture/adr/0021-logging-to-standard-output.md)
- [=0022 - Authorization](https://dev.ppgg.in/architecture/adr/server-authorization.md)
- [=0023 - Identifying Integrated Clients](https://dev.ppgg.in/architecture/adr/integration-identifiers.md)
- [移动客户端架构](https://dev.ppgg.in/architecture/mobile-clients.md)
- [=Android](https://dev.ppgg.in/architecture/mobile-clients/android.md)
- [=iOS](https://dev.ppgg.in/architecture/mobile-clients/ios.md)
- [=推送通知故障排除提示](https://dev.ppgg.in/architecture/mobile-clients/ios/push-notification-troubleshooting.md)
- [=.NET MAUI (legacy)](https://dev.ppgg.in/architecture/mobile-clients/net-maui-legacy.md)
- [=概述](https://dev.ppgg.in/architecture/mobile-clients/net-maui-legacy/overview.md)
- [watchOS](https://dev.ppgg.in/architecture/mobile-clients/net-maui-legacy/watchos.md)
- [=SDK 架构](https://dev.ppgg.in/architecture/sdk.md)
- [=数据模型](https://dev.ppgg.in/architecture/sdk/data-models.md)
- [=依赖](https://dev.ppgg.in/architecture/sdk/dependencies.md)
- [Password Manager](https://dev.ppgg.in/architecture/sdk/password-manager.md)
- [Web](https://dev.ppgg.in/architecture/sdk/password-manager/web.md)
- [=互操作性](https://dev.ppgg.in/architecture/sdk/password-manager/web/interoperability.md)
- [=Secrets Manager](https://dev.ppgg.in/architecture/sdk/secrets-manager.md)
- [=服务器绑定](https://dev.ppgg.in/architecture/sdk/server-bindings.md)
- [=版本控制和破坏性更改](https://dev.ppgg.in/architecture/sdk/versioning.md)
- [网络客户端架构](https://dev.ppgg.in/architecture/clients.md)
- [概述](https://dev.ppgg.in/architecture/clients/overview.md)
- [数据模型](https://dev.ppgg.in/architecture/clients/data-model.md)
- [表示层](https://dev.ppgg.in/architecture/clients/presentation.md)
- [Angular](https://dev.ppgg.in/architecture/clients/presentation/angular.md)
- [CLI](https://dev.ppgg.in/architecture/clients/presentation/cli.md)
- [=依赖注入](https://dev.ppgg.in/architecture/clients/dependency-injection.md)
- [服务层](https://dev.ppgg.in/architecture/clients/services.md)
- [Vision](https://dev.ppgg.in/architecture/clients/services/vision.md)
- [实现](https://dev.ppgg.in/architecture/clients/services/implementation.md)
- [服务器架构](https://dev.ppgg.in/architecture/server.md)
- [深度剖析](https://dev.ppgg.in/architecture/deep-dives.md)
- [身份验证](https://dev.ppgg.in/architecture/deep-dives/authentication.md)
- [双重身份验证](https://dev.ppgg.in/architecture/deep-dives/authentication/two-factor-auth.md)
- [=授权](https://dev.ppgg.in/architecture/deep-dives/authorization.md)
- [=浏览器自动填充](https://dev.ppgg.in/architecture/deep-dives/autofill.md)
- [收集页面详细信息](https://dev.ppgg.in/architecture/deep-dives/autofill/collecting-page-details.md)
- [生成并执行填充脚本](https://dev.ppgg.in/architecture/deep-dives/autofill/generating-fill-scripts.md)
- [表单提交检测](https://dev.ppgg.in/architecture/deep-dives/autofill/form-submission-detection.md)
- [Shadow DOM](https://dev.ppgg.in/architecture/deep-dives/autofill/shadow-dom.md)
- [=内联自动填充菜单](https://dev.ppgg.in/architecture/deep-dives/autofill/autofill-menu.md)
- [Captcha](https://dev.ppgg.in/architecture/deep-dives/captchas.md)
- [=只读数据库副本](https://dev.ppgg.in/architecture/deep-dives/database-replicas.md)
- [事件日志](https://dev.ppgg.in/architecture/deep-dives/event-logs.md)
- [=FIDO2 和通行密钥](https://dev.ppgg.in/architecture/deep-dives/passkeys.md)
- [=凭据](https://dev.ppgg.in/architecture/deep-dives/passkeys/credentials.md)
- [=操作](https://dev.ppgg.in/architecture/deep-dives/passkeys/operations.md)
- [=命名惯例](https://dev.ppgg.in/architecture/deep-dives/passkeys/naming-convention.md)
- [=实现](https://dev.ppgg.in/architecture/deep-dives/passkeys/implementations.md)
- [=提供程序](https://dev.ppgg.in/architecture/deep-dives/passkeys/implementations/provider.md)
- [=浏览器扩展](https://dev.ppgg.in/architecture/deep-dives/passkeys/implementations/provider/browser-extension.md)
- [=依赖方](https://dev.ppgg.in/architecture/deep-dives/passkeys/implementations/relying-party.md)
- [=用于解密的通行密钥](https://dev.ppgg.in/architecture/deep-dives/passkeys/implementations/relying-party/prf.md)
- [=术语表](https://dev.ppgg.in/architecture/deep-dives/passkeys/glossary.md)
- [推送通知](https://dev.ppgg.in/architecture/deep-dives/push-notifications.md)
- [移动端推送通知](https://dev.ppgg.in/architecture/deep-dives/push-notifications/mobile.md)
- [其他客户端推送通知](https://dev.ppgg.in/architecture/deep-dives/push-notifications/non-mobile.md)
- [=SSH 密钥和代理](https://dev.ppgg.in/architecture/deep-dives/ssh.md)
- [=SSH 代理](https://dev.ppgg.in/architecture/deep-dives/ssh/agent.md)
- [=状态提供程序框架](https://dev.ppgg.in/architecture/deep-dives/state.md)
- [=派生状态](https://dev.ppgg.in/architecture/deep-dives/state/derived-state.md)
- [=安全](https://dev.ppgg.in/architecture/security.md)
- [=定义](https://dev.ppgg.in/architecture/security/definitions.md)
- [=原则](https://dev.ppgg.in/architecture/security/principles.md)
- [=P01 - 锁定的密码库是安全的](https://dev.ppgg.in/architecture/security/principles/locked-vault-is-secure.md)
- [=P02 - 半受损设备密码库的有限安全性](https://dev.ppgg.in/architecture/security/principles/limited-security-on-semi-compromised.md)
- [=P03 - 完全损坏的系统没有安全性](https://dev.ppgg.in/architecture/security/principles/no-security-on-fully-compromised.md)
- [=P04 - 控制密码库数据的访问权限](https://dev.ppgg.in/architecture/security/principles/controlled-access.md)
- [=P05 - 将安全漏洞的影响降至最低](https://dev.ppgg.in/architecture/security/principles/minimized-impact-of-security-breaches.md)
- [=要求](https://dev.ppgg.in/architecture/security/requirements.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.ppgg.in/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
