# 关于项目

本项目 wikipāḷi 是巴利圣典教育开放平台（IAPT Platform）的重要构成部分，当前承载着平台所提供的主要能力。

wikipāḷi 的前身是 PCD-Suite，一个使用 PHP + JQuery + SQLite 架构的网页版工具，当前处于试运行环境的服务，就是运行的该版本代码。具体内容参见 [app 目录](../app/
)。

# 当前任务

当前以解决问题为目标，在最小化成本、保证项目运行不中断的前提下，进行重构。

# 后端文档

参见 [documents/api](./api/) 目录，虽然文档尚未完善，但已包含了几乎所有的数据模型和梳理后的 API 接口。

# 前端文档

参见 [documents/dashboard](./dashboard/) 目录，虽然文档尚未完善，但包含了相对完整的网页地图，可供参考。

# 开发规范

> 该规范尚未完善，会在团队协作的过程中，持续迭代优化。

- GitHub 相关
  - Git Commit Message
    使用 [gitmoji](https://gitmoji.dev/) 约定。

    为保证兼容性，请注意使用 `:memo:` 代码模式，而不要直接输入表情符号 `📝`。
  - Pull Request
    为降低 Review 成本，请尽量缩减每个 Pull Request 内包含的 Commits 数量，

    保证每个 Pull Request 仅处理一个问题，或者互相有关联的一些问题。
  - 提交前整理你的 Commits 记录
    不要提交多个相同名称的 Commits，请在 Push 之前对其进行整理。

    方法参考：https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
  - 不要提交测试数据、测试代码
    请在提交前，删除测试数据或代码。

    如有无用代码，请直接删除，不要仅仅是注释掉（不用担心代码丢失，Git 会记录下一切）。
  - ISSUE
    沟通确定的计划任务，请添加 task 标签，

    并放置于 [Project](https://github.com/orgs/iapt-platform/projects/5) 面板内。
- 编码相关
  - 代码格式化
    请在提交前进行代码格式化。

    这个会在后期通过 [pre-commit](https://pre-commit.com/) 的方式进行统一，当前请与一同协作的开发者联系确定格式化方案。

# 技术选型

以问题出发，进行技术选型，避免长时间大重构，保证小步推进，逐步替换。

以下为对应问题的技术选型变更：

- 为解决数据库效率问题
  - [x] SQLite 替换为 PostgreSQL
  - 参考资料：
    - https://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL


- 全文检索效率优化
  - [ ] 方案尚未确定（初步考虑基于 PostgreSQL 特性）
  - 参考资料：
    - https://www.postgresql.org/docs/current/datatype-textsearch.html
    - https://www.postgresql.org/docs/current/functions-json.html

- 为解决权限模块安全问题
  - [ ] 方案尚未确定

- 为解决编辑器运行效率问题
  - [ ] 方案尚未确定

- 为解决编辑器可扩展问题
  - [ ] 方案尚未确定

# 团队角色

在当前开发团队人员较少的情况下，一切事务由 [Visuddhinanda](mailto:visuddhinanda@gmail.com "Email") 负责，包括：

- 代码管理
- 网站运维
- 内容审核
- 团队沟通
- 其他事项

# 部署方案

在未完成部署自动化之前，一切部署工作由 [Visuddhinanda](mailto:visuddhinanda@gmail.com "Email") 负责。

# 目录结构

## 配置文件
└── app
    ├── config.js
    ├── config.php
    └── config.php

## sqlite 文件
```
└── tmp
    └── appdata
    │   ├── dict
    │   │   ├── 3rd
    │   │   │   ├── bh.js
    │   │   │   ├── bhmf.db
    │   │   │   ├── concise.db
    │   │   │   ├── pali_sinhala.db
    │   │   │   ├── pm.db
    │   │   │   ├── shuihan.db
    │   │   │   ├── uhan.db
    │   │   │   ├── uhan_en.db
    │   │   │   └── uhau.db
    │   │   └── system
    │   │       ├── comp1.db
    │   │       ├── comp.db
    │   │       ├── part.db3
    │   │       ├── ref1.db
    │   │       ├── ref.db
    │   │       ├── sys_irregular.db
    │   │       ├── sys_regular.db
    │   │       └── union.db
    │   ├── dir.txt
    │   ├── nissaya
    │   │   └── attha_nsy.db
    │   └── palicanon
    │       ├── bold.db3
    │       ├── bookword.db3
    │       ├── index.db3
    │       ├── pagemap.db3
    │       ├── paliindex.db3
    │       ├── pali_sent1.db3
    │       ├── pali_sent_sim.db3
    │       ├── pali_sim.db3
    │       ├── pali_text.db3
    │       ├── pali_toc.db3
    │       ├── res.db3
    │       ├── templet
    │       │   ├── p1_tpl.db3
    │       │   ├── p*_tpl.db3
    │       │   └── p217_tpl.db3
    │       ├── templet.db3
    │       └── wordindex.db3
    └── user
        ├── article.db3
        ├── channal.db3
        ├── comments.db3
        ├── course.db3
        ├── custom_book.db3
        ├── dhammaterm.db
        ├── dighest.db3
        ├── fileindex.db
        ├── group.db3
        ├── hostsetting.db3
        ├── like.db3
        ├── media
        ├── message.db
        ├── sentence.db3
        ├── share.db3
        ├── statistics.db3
        ├── udict.db3
        ├── usent_historay.db3
        ├── user_active.db3
        ├── user_active_index.db3
        ├── user_active_log.db3
        ├── userinfo.db3
        ├── user_wbw.db3
        └── wbw.db3
```